|
51487
|
water hero by @Mohamedd | Stardance
|
Mohamedd
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T20:30:33Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello everyone! š Iām sharing Water Hero šāa smart web app with a simulator and cost calculator that instantly measures water usage and cost based on activity time, fully supporting 3 languages (Arabic, English, French). My main challenge was modeling accurate water flow rates per minute, and Iām proud of turning water saving into clear numbers. To try it: pick a language, tap āRecordā, select an activity, and set the minutes to see your impact instantly!", "repo": "https://github.com/hemoalam27-alt/water-hero", "demo": "https://hemoalam27-alt.github.io/water-hero/website-v1/"}]...
|
[{"post_id": 51903, "ts": "202 [{"post_id": 51903, "ts": "2026-08-21T20:13:35Z", "hours": 0.3606, "text": "Progress Update š ļøāUpgraded the web app to support 3 languages: Arabic, English, and French with dynamic RTL & LTR text alignment. Users can now seamlessly switch languages with a flawless UI experience! šāØ"}, {"post_id": 51763, "ts": "2026-08-21T16:31:28Z", "hours": 1.9444, "text": "Working on improving the UI to make it fully responsive for wider landscape screens. Also planning to package the project into an Android APK soon! š"}]...
|
Title: water hero by @Mohamedd | Stardance
Devlog Title: water hero by @Mohamedd | Stardance
Devlogs:
Working on improving the UI to make it fully responsive for wider landscape screens. Also planning to package the project into an Android APK soon! š
Progress Update š ļøāUpgraded the web app to support 3 languages: Arabic, English, and French with dynamic RTL & LTR text alignment. Users can now seamlessly switch languages with a flawless UI experience! šāØ
Ships:
Hello everyone! š Iām sharing Water Hero šāa smart web app with a simulator and cost calculator that instantly measures water usage and cost based on activity time, fully supporting 3 languages (Arabic, English, French). My main challenge was modeling accurate water flow rates per minute, and Iām proud of turning water saving into clear numbers. To try it: pick a language, tap āRecordā, select an activity, and set the minutes to see your impact instantly!...
|
1793613205.7076602
|
1793699605.7076602
|
|
10216
|
Pendulum physics by @joebracken | Stardance
|
joebracken
|
1
|
9.01
|
38
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T01:04:56Z", "hours": 8.0, "multiplier": 4.52, "payout": 38, "blessing": "neutral", "text": "I made a simulation of a simple pendulum in python. I used newtonian physics and allow for initial velocity, initial radians and radius to be changed before simulation starts. I plot the pendulum on a matplotlib graph. This project was very hard as it was my first main project on python and I had to figure out the alpha = -g/lsintheta line. This was done by learning circular motion and simple pendulum physics; getting the relationship of tangential acceleration to angular acceleration and combining this with the -mgsintheta = ma (newtonian) to get a = -g/lsintheta. This was the main part of the project, however managing theta continued to be a big problem throughout the project. I did enjoy this and I will probably be sticking with python for a while now.", "repo": "https://github.com/madmanmr/PendulumSim2", "demo": "https://github.com/madmanmr/PendulumSim2/releases/download/PendSIm2/main.zip"}]...
|
[{"post_id": 10815, "ts": "202 [{"post_id": 10815, "ts": "2026-06-17T19:08:20Z", "hours": 1.0106, "text": "Fixed an error with the length of R not affecting the actual simulation."}, {"post_id": 7753, "ts": "2026-06-12T23:03:00Z", "hours": 8.4781, "text": "this may be my first devlog as i did not know of them, but here is the completed code"}]...
|
Title: Pendulum physics by @joebracken | Stardance Title: Pendulum physics by @joebracken | Stardance
Devlogs:
this may be my first devlog as i did not know of them, but here is the completed code
Fixed an error with the length of R not affecting the actual simulation.
Ships:
I made a simulation of a simple pendulum in python. I used newtonian physics and allow for initial velocity, initial radians and radius to be changed before simulation starts. I plot the pendulum on a matplotlib graph. This project was very hard as it was my first main project on python and I had to figure out the alpha = -g/lsintheta line. This was done by learning circular motion and simple pendulum physics; getting the relationship of tangential acceleration to angular acceleration and combining this with the -mgsintheta = ma (newtonian) to get a = -g/lsintheta. This was the main part of the project, however managing theta continued to be a big problem throughout the project. I did enjoy this and I will probably be sticking with python for a while now....
|
1793613207.9949386
|
1793699607.9949386
|
|
7496
|
soul browser by @soulcloude | Stardance
|
soulcloude
|
1
|
124.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T09:57:29Z", "hours": 124.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built the Soul Browser! Itās a high-performance, privacy-first web browser built natively for macOS. Instead of relying on bloated web-wrappers like Electron, I built the entire UI natively in SwiftUI and hooked it into the Chromium Embedded Framework (CEF) backend. This gives it the lightning-fast V8 JavaScript engine and Blink rendering, wrapped in a beautiful, macOS-native shell. The biggest challenge was wrestling with memory optimization and IPC (Inter-Process Communication). Because I avoided Electron, I had to manually manage how the native Swift UI communicated with the underlying Chromium processes. I spent a lot of time stripping down site isolation overhead and tuning the V8 heap limits so the browser stays incredibly lightweight. We also had to build custom retry-logic to stabilize our local AI Codex server connection! Iām incredibly proud of the UI aesthetics and the performance metrics. The browser looks and feels like an expensive Apple product thanks to the frosted glassmorphism and native Swift animations. But more importantly, it runs like a dream. Features like the AI Tab Grouper and native !Bangs integration make it a genuine power-tool for developers. You can download the v1.0.0-beta directly from the Releases tab on GitHub! Since itās a native macOS app in beta, you may need to right-click and hit āOpenā to bypass the unverified developer warning. Try out the !w bangs in the address bar, or open 20 tabs to watch the AI Tab Grouper automatically organize them for you!", "repo": "https://github.com/soulcloude00/soul-browser", "demo": "https://github.com/soulcloude00/soul-browser/releases/tag/v1.0.1-beta"}]...
|
[{"post_id": 7376, "ts": "2026 [{"post_id": 7376, "ts": "2026-06-12T09:36:13Z", "hours": 9.7667, "text": "We just open-sourced the Soul Browser! š I wanted to build a browser that feels incredibly fast, native to macOS, and respects your privacyāwithout relying on heavy Electron wrappers. š The Stack: Built entirely in native Swift & SwiftUI for a buttery smooth UI, powered by the Chromium Embedded Framework (CEF) under the hood for world-class web rendering and V8 JavaScript performance. ⨠Core Features: ⢠!Bangs Integration: Instantly search your favorite sites directly from the address bar (e.g., type !w macOS to jump straight to Wikipedia). ⢠Built for Developers: First-class DevTools support natively integrated, plus aggressive memory optimization so your browser doesnāt compete with your compiler for RAM. ⢠Privacy & Security First: Zero telemetry. No aggressive tracking. We baked in anti-phishing scanners, Tor-proxy support, and secure local keychain integration. If youāre tired of bloated web browsers, come check out the code, leave a ā, or contribute! š GitHub: https://github.com/soulcloude00/soul-browser Let me know what you think of the architecture! š #swiftui #macos #opensource #buildinpublic"}, {"post_id": 6403, "ts": "2026-06-10T19:31:08Z", "hours": 14.0, "text": "done a full setting page for the browser took almost 14 hours , so basically its focused all all the use cases , developers , normal users and so many - planing to make a browser that no other browser has achieved"}, {"post_id": 2945, "ts": "2026-06-05T21:05:35Z", "hours": 0.5053, "text": "made an onboarding pages for the browser"}, {"post_id": 2687, "ts": "2026-06-05T11:17:35Z", "hours": 0.7861, "text": "added local ai assisted chat and navigation panel like comet browser on my browser it took lot of time lol"}, {"post_id": 2653, "ts": "2026-06-05T09:56:11Z", "hours": 13.3472, "text": "soul browser devlog 2 - creating a web page for the browser so that users can download from my website"}, {"post_id": 2372, "ts": "2026-06-04T20:35:41Z", "hours": 85.8667, "text": "crafting my own browser"}]...
|
Title: soul browser by @soulcloude | Stardance
De Title: soul browser by @soulcloude | Stardance
Devlogs:
crafting my own browser
soul browser devlog 2 - creating a web page for the browser so that users can download from my website
added local ai assisted chat and navigation panel like comet browser on my browser it took lot of time lol
made an onboarding pages for the browser
done a full setting page for the browser took almost 14 hours , so basically its focused all all the use cases , developers , normal users and so many - planing to make a browser that no other browser has achieved
We just open-sourced the Soul Browser! š I wanted to build a browser that feels incredibly fast, native to macOS, and respects your privacyāwithout relying on heavy Electron wrappers. š The Stack: Built entirely in native Swift & SwiftUI for a buttery smooth UI, powered by the Chromium Embedded Framework (CEF) under the hood for world-class web rendering and V8 JavaScript performance. ⨠Core Features: ⢠!Bangs Integration: Instantly search your favorite sites directly from the address bar (e.g., type !w macOS to jump straight to Wikipedia). ⢠Built for Developers: First-class DevTools support natively integrated, plus aggressive memory optimization so your browser doesnāt compete with your compiler for RAM. ⢠Privacy & Security First: Zero telemetry. No aggressive tracking. We baked in anti-phishing scanners, Tor-proxy support, and secure local keychain integration. If youāre tired of bloated web browsers, come check out the code, leave a ā, or contribute! š GitHub: https://github.com/soulcloude00/soul-browser Let me know what you think of the architecture! š #swiftui #macos #opensource #buildinpublic
Ships:
I built the Soul Browser! Itās a high-performance, privacy-first web browser built natively for macOS. Instead of relying on bloated web-wrappers like Electron, I built the entire UI natively in SwiftUI and hooked it into the Chromium Embedded Framework (CEF) backend. This gives it the lightning-fast V8 JavaScript engine and Blink rendering, wrapped in a beautiful, macOS-native shell. The biggest challenge was wrestling with memory optimization and IPC (Inter-Process Communication). Because I avoided Electron, I had to manually manage how the native Swift UI communicated with the underlying Chromium processes. I spent a lot of time stripping down site isolation overhead and tuning the V8 heap limits so the browser stays incredibly lightweight. We also had to build custom retry-logic to stabilize our local AI Codex server connection! Iām incredibly proud of the UI aesthetics and the performance metrics. The browser looks and feels like an expensive Apple product thanks to the frosted glassmorphism and native Swift animations. But more importantly, it runs like a dream. Features like the AI Tab Grouper and native !Bangs integration make it a genuine power-tool for developers. You can download the v1.0.0-beta directly from the Releases tab on GitHub! Since itās a native macOS app in beta, you may need to right-click and hit āOpenā to bypass the unverified developer warning. Try out the !w bangs in the address bar, or open 20 tabs to watch the AI Tab Grouper automatically organize them for you!...
|
1793613210.2355142
|
1793699610.2355142
|
|
58881
|
Witcher | WebOS 1 by @karoltoo11 | Stardance
|
karoltoo11
|
1
|
3.54
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T15:43:58Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? It made a fully custom (and in some way castomable) website based on Witcher 3: Wild Hunt universe. Also on other parts of games and books. I built it using: HTML, CCS and Javascript . It was my second time using this langues that much. I really wasnāt using them that much before. Iām happy that I hade a chance to do this. What was challenging? This was completly new form of work for me. Like, yea I created sites before, but they were meant to look like sitI made a builded in local audio player named Dandelionās Lute after one of character from book.es, not Operating Systems. I think that getting out of that type of thinking that I am creating a website. What are you proud of? Of course Iām proud of myself! Probably the most of local audio player named Dandelionās Lute after one of character from book. What should people know to test your project? Just click this link: https://karoltoo11.github.io/witcherwebos/", "repo": "https://github.com/karoltoo11/witcherwebos", "demo": "https://karoltoo11.github.io/witcherwebos/"}]...
|
[{"post_id": 65436, "ts": "202 [{"post_id": 65436, "ts": "2026-09-10T15:57:46Z", "hours": 0.5389, "text": "Devlog Number 4 Today I made a callendar located in Witcher 3 Times. You can acess it by clicking on the timer. Also: Fixed some small, very small bugs I saw"}, {"post_id": 64277, "ts": "2026-09-08T15:39:17Z", "hours": 0.6706, "text": "Devlog Number 3 Today I made a fully working audio player with 5 orginal songs from The Witcher 3: Wild Hunt Silver for monsters Kear Morhen Steel for Humans Geralt of Rivia Wilcza zamieÄ (The wolven storm) Polish Version Also: Added/Fixed option to customize wallpaper and color theme. Create new option that allows you to change System clock and Time Display You can see a working audio player on the video!"}, {"post_id": 63605, "ts": "2026-09-07T15:11:33Z", "hours": 0.5781, "text": "Devlog Number 2 Today I made some progress and tidied a few things up . Specifically: Added a job system and a currency. Added settings with options to change the background, etc. I fixed: An issue where windows moved very slowly; the movement wasnāt smooth and was just annoying. The inability to close or minimize windows. The buttons were purely decorative before, but not anymore. You can see a demonstration of everything I fixed in the video. Iāve also included a snippet of the code. Iām writing everything in Visual Studio Code !"}, {"post_id": 62948, "ts": "2026-09-06T14:33:52Z", "hours": 1.6669, "text": "Devlog Number 1 Iām currently creating my own operating system based on The Witcher universe. Especifically, the third game, The Witcher 3: Wild Hunt . Iāve managed to build a working bestiary application. In the future, I plan to add: Contract boards An alchemy guide Gwent A music player featuring tracks from the game, like āSilver for Monstersā If you have any other suggestions, please let me know! PS. The browser component is going to be removed! (Also site is ālargerā I just zoomed to 200%)"}]...
|
Title: Witcher | WebOS 1 by @karoltoo11 | Stardanc Title: Witcher | WebOS 1 by @karoltoo11 | Stardance
Devlogs:
Devlog Number 1 Iām currently creating my own operating system based on The Witcher universe. Especifically, the third game, The Witcher 3: Wild Hunt . Iāve managed to build a working bestiary application. In the future, I plan to add: Contract boards An alchemy guide Gwent A music player featuring tracks from the game, like āSilver for Monstersā If you have any other suggestions, please let me know! PS. The browser component is going to be removed! (Also site is ālargerā I just zoomed to 200%)
Devlog Number 2 Today I made some progress and tidied a few things up . Specifically: Added a job system and a currency. Added settings with options to change the background, etc. I fixed: An issue where windows moved very slowly; the movement wasnāt smooth and was just annoying. The inability to close or minimize windows. The buttons were purely decorative before, but not anymore. You can see a demonstration of everything I fixed in the video. Iāve also included a snippet of the code. Iām writing everything in Visual Studio Code !
Devlog Number 3 Today I made a fully working audio player with 5 orginal songs from The Witcher 3: Wild Hunt Silver for monsters Kear Morhen Steel for Humans Geralt of Rivia Wilcza zamieÄ (The wolven storm) Polish Version Also: Added/Fixed option to customize wallpaper and color theme. Create new option that allows you to change System clock and Time Display You can see a working audio player on the video!
Devlog Number 4 Today I made a callendar located in Witcher 3 Times. You can acess it by clicking on the timer. Also: Fixed some small, very small bugs I saw
Ships:
What did you make? It made a fully custom (and in some way castomable) website based on Witcher 3: Wild Hunt universe. Also on other parts of games and books. I built it using: HTML, CCS and Javascript . It was my second time using this langues that much. I really wasnāt using them that much before. Iām happy that I hade a chance to do this. What was challenging? This was completly new form of work for me. Like, yea I created sites before, but they were meant to look like sitI made a builded in local audio player named Dandelionās Lute after one of character from book.es, not Operating Systems. I think that getting out of that type of thinking that I am creating a website. What are you proud of? Of course Iām proud of myself! Probably the most of local audio player named Dandelionās Lute after one of character from book. What should people know to test your project? Just click this link: https://karoltoo11.github.io/witcherwebos/...
|
1793613211.4155781
|
1793699611.4155781
|
|
16632
|
Marunnundo by @Adarsh | Stardance
|
Adarsh
|
1
|
4.0
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T17:50:54Z", "hours": 4.0, "multiplier": 4.3, "payout": 16, "blessing": "neutral", "text": "I made a medicine finder for my state", "repo": "https://github.com/stairmoss/Marunnundo", "demo": "https://marunnundo.vercel.app/"}]...
|
[{"post_id": 8182, "ts": "2026 [{"post_id": 8182, "ts": "2026-06-13T17:05:42Z", "hours": 0.8606, "text": "made the portfolio website for this and also in this i have made a video from veo to animate which is showed in side"}, {"post_id": 8079, "ts": "2026-06-13T14:19:56Z", "hours": 0.8553, "text": "i have added a side bar which give the info about the pharmacy which redirects to the google search and changed the green button color to the blue"}, {"post_id": 8008, "ts": "2026-06-13T11:14:13Z", "hours": 0.8369, "text": "i have added dark mode with a lime green cuz blue wasnt perfect and also then also i added these satellite map and also the malayalam language"}, {"post_id": 6926, "ts": "2026-06-11T16:35:11Z", "hours": 0.7675, "text": "i have made the website working and which includes as we can give the current location it gives us near pharmacy and its google profile so that people get direction on map"}, {"post_id": 6853, "ts": "2026-06-11T14:41:47Z", "hours": 0.4817, "text": "worked on the UI"}]...
|
Title: Marunnundo by @Adarsh | Stardance
Devlogs: Title: Marunnundo by @Adarsh | Stardance
Devlogs:
worked on the UI
i have made the website working and which includes as we can give the current location it gives us near pharmacy and its google profile so that people get direction on map
i have added dark mode with a lime green cuz blue wasnt perfect and also then also i added these satellite map and also the malayalam language
i have added a side bar which give the info about the pharmacy which redirects to the google search and changed the green button color to the blue
made the portfolio website for this and also in this i have made a video from veo to animate which is showed in side
Ships:
I made a medicine finder for my state...
|
1793613212.5744154
|
1793699612.5744154
|
|
30742
|
XacOS by @xacobema | Stardance
|
xacobema
|
3
|
22.0
|
11
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-30T22:59:10Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "XacOS 2.0: A bloat-free (there are 6 apps) modern (it has blur) lightweight (it is HTML) operative system! WhatĀ“s new on 2.0? Added Setup: now the first time you boot XacOS, you will get a simple tutorial, the option to choose your favourite font and set your name and profile picture. Taskbar calendar: hover over the date and time in the taskbar to see a calendar. Added a new stardance-themed wallpaper. Notepad: added a new feature to the notepad app, now you can open multiple notes at once and switch between them, and download them as a .txt file. You can also delete notes and edit their titles. Animations: added new animations to the taskbar, windows and the welcome screen. Paint: added a jspaint-based paint app, you can open it from the start menu. Added a low graphics mode, which disables animations and blur effects to improve performance on low-end devices. Added a security section in settings, where you can check if youĀ“ve got the official and latest version of XacOS (Mostly a gimmick) Now all settings are saved in the browserĀ“s local storage, so you can keep your settings even if you close the browser. Factory reset: now you can reset XacOS to its default settings from the settings app. Some minor extra features and improvements (Translation: I forgot to write them down, but they are there)", "repo": "https://github.com/xacb33/XacOS", "demo": "https://xacb33.github.io/XacOS/"}, {"ship_num": 2, "ts": "2026-09-08T14:18:45Z", "hours": 6.0, "multiplier": 1.98, "payout": 11, "blessing": "neutral", "text": "XacOS v1.0 [You will probably have to zoom out to see everything properly, I didnĀ“t find a reliable and simple way to make everything fit every screen, altough there is probably a way] Whatās new in 1.0 Fixed bugs, like the windows changing shape when dragged to the right corner of the screen Revamped settings: you can now add your own wallpaper, change the font of the whole OS and see some information about your PC Added very simple notes app Start menu: access it by clicking the XacOS logo in the corner of the taskbar, see and open all of your apps There was A LOT of debugging Honestly, since almost 2 months have passed since I made v0.1, and that being my first real experience with HTML, CSS and JavaScript, and also forgetting how I coded the project, this update was a little challenging. Obviously, a lot of googling and W3schools helped me. I still think that maybe in the future I will make a 1.1 or 2.0 with more interesting features, but as a first experience with web development, I think it was great. I would love to mke 1.1 now, but I start school tomorrow, so itās going to be difficult⦠Also, thank you very much HackClub and all itās volunteers for making these awesome projects, I hope summer next year I will be able to participate again, because itās the last year before I turn 18 š", "repo": "https://github.com/xacb33/XacOS", "demo": "https://xacb33.github.io/XacOS/"}, {"ship_num": 3, "ts": "2026-07-06T22:42:40Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I think I finally finished the first version of XacOS! It was quite challenging to fix up bugs, as I had never coded in HTML nor JavaScript", "repo": "https://github.com/xacb33/XacOS", "demo": "https://xacb33.github.io/XacOS/"}]...
|
[{"post_id": 85197, "ts": "202 [{"post_id": 85197, "ts": "2026-10-30T22:55:51Z", "hours": 1.8678, "text": "Fixed all bugs that remained (hopefully) 2. Now you can actually have multiple notes on the notes app, and delete them. 3. Correctly implemented the themes settings, now they actually work"}, {"post_id": 71402, "ts": "2026-09-20T19:12:24Z", "hours": 3.0508, "text": "Letās see if I remember everything: 1. Changed the default system font to one that I think fits better 2. Added paint.js as an app 3. Added user profile customization, with profile picture and username (for now it doesnāt do much, just show it in the start menu) 4. Now thereās a little indicator in the taskbar on what app is currently on top 5. Changed the buttons of the notes apps to icons 6. Setup now tells you to choose your favourite font 7. A little calendar will appear when hovering over the date and time on the taskbar 8. Made most settings persist between page refresh with localStorage and some minor bug-fixes, like the aboutMe screen not going to the top when itās taskbar icon was clicked. I thinks thatās everything, I also plan on adding at least one or two more apps coded by me and maybe something like a launcher or app store for iframe/embeded stuff by other people"}, {"post_id": 70565, "ts": "2026-09-19T11:31:46Z", "hours": 2.4183, "text": "I added quite some new features, including: 1. Most setup/OOBE is done, but I will probably add the cusomization options in there. 2. Added a low graphics mode, as some reviewers pointed out that XacOS ran badly on their PC, wich disables animations and disables blur. 3.Compressed all images, wich will also help with performane. 4.Added a new wallpaper by NASA, to resemble StarDance. 5. Added a Security section in settings, wich checks for the URL to make sure it is āgenuine XacOSā (It is just a gimmick, XacOS is still completly open source) 6. Added a factory reset option in settings, wich deletes all settings and files saved in localStorage. 7. Added a start-up sound. Still have some things that I want to add but Iām happy on how this is turning out, altough I lost my streak because of schoolā¦"}, {"post_id": 65495, "ts": "2026-09-10T17:53:35Z", "hours": 1.4144, "text": "Started adding quite some things, but more work is required. (I plan on adding more features, this is v2.0, not v1.1 ;) ) 1. Changed the old welcome window for a placeholder OOBE/Setup, 2. Started working on locally saving the notes to be persistant even when you close the browser, 3. Moved my personal projects to a separate folder inside of file explorer, 4. Added an outline to program names in the desktop, so it can work with both dark and light wallpapers, 5. Fixed the problem of when selecting an icon it would move slightly. Wish me luck, I have no idea why the local saving is working (Why does it need a random cryptographic ID?)"}, {"post_id": 64887, "ts": "2026-09-09T16:23:43Z", "hours": 0.5356, "text": "Sticky Notes now has more functions and windows are animated! I still have to code all the saving to localstorage when you click save and displaying them as openeable files, but for now you can export your note to a txt file to view whenever. Also, looking at the screenshot, looks like I made Settings not be a square anymore, probably when making the text centered with the icon⦠I will fix that too"}, {"post_id": 64864, "ts": "2026-09-09T15:38:39Z", "hours": 0.5381, "text": "I know I said that I was starting school, but the first days we arenāt having a lot of work, and I was dissapointed on only getting a x1.98 multiplier in v1, so Iāve decided to fix everything the reviewers have pointed out, starting by making everything smaller, and using relative percentages, instead of fixed px values both in HTML and in CSS. Secondly, I have added a little animation on the opening and closing of the Start Menu, turns out it was way easier than I thought, I thought that you had to code the animation by hand. I will also add animations to the other windows (probably easier since they all have a common css class). Lastly, I renamed the welcome screen to About Me, as I plan to do an onboarding foor the OS, and some reviewers pointed out that XacOS v1 seemed more like a personal website instead of a WebOS. As you can read, I am also giving more details in the devlog, and doing them more often."}, {"post_id": 64225, "ts": "2026-09-08T14:06:15Z", "hours": 0.2781, "text": "Updated GitHub and touched up some minor things before shipping!"}, {"post_id": 64215, "ts": "2026-09-08T13:37:40Z", "hours": 1.9003, "text": "I figured out how to make windows not do weird things when they are dragged to the right (It was a very simple solution), gave Settings more functions, like changing the font and uploading your own wallpaper, fixed a couple of bugs and made a very simple Sticky Notes app. I think I will update the repo, do some slight changes, and ship XacOS v1.0! (Previous was beta)"}, {"post_id": 63486, "ts": "2026-09-07T11:25:59Z", "hours": 0.7506, "text": "Found a way to preview the page without having to redownload the files every single time, wich was much needed. Added a working start menuthat opens when you click XacOS and closes by clicking it again, opening an app with it or clicking a window. I still have to fix the problem of windows deforming when they get to the right side of the screenā¦"}, {"post_id": 31831, "ts": "2026-07-20T15:00:58Z", "hours": 1.7636, "text": "Of course it didnāt work after reorganizing the code. After fixing it up I started implementing the Start Menu (still needs a lot of work) , and only had opened Welome Screen, so I dināt realise that every other window closed with the start Menu, so I started re-cheking the code and found nothing, changed a couple of things that I thought hat was causing that, nothing. I gave up and asked Github AI what was going on but it DIDNāT KNOW (and tried rewriting my code)⦠I ended up checking again the htmlā¦.. there was a missing div ending declaration. AAAAAAAAA"}, {"post_id": 27254, "ts": "2026-07-12T17:27:11Z", "hours": 0.9331, "text": "Tidied up a lot the JavaScript code. Much needed! Now to try if it still works⦠fingers crossed"}, {"post_id": 23785, "ts": "2026-07-06T22:39:30Z", "hours": 0.5344, "text": "Fixing up the README and setting up github pages"}, {"post_id": 23772, "ts": "2026-07-06T22:06:57Z", "hours": 2.1356, "text": "Hooray! I think version 1 of XacOS is finished. It is still pretty barebones and the code is a mess (compared to what others have done this is worthless), but I hope I can polish everything in WebOS 2. All the basics are done and I added the feature of icons of open apps in the taskbar, and when you click it it brings the window to the top"}, {"post_id": 23673, "ts": "2026-07-06T19:43:09Z", "hours": 2.3122, "text": "Project is going great! Alough Iām going crazy trying to figure out why The pop up projects movat the same time as the main projects windowā¦"}, {"post_id": 22881, "ts": "2026-07-05T14:44:56Z", "hours": 0.6561, "text": "I didnāt have Hackatime set up properly⦠But yesterday I locked in and did 71 different versions of XacOS (Each one with a little bit more things than the one before) Last thing I have done fllowing the guide was making the window openable and closable. I kinda panicked when tidying up the code a little bit all the JS stopped working, but itās fixed now. (btw, I spent way more than 37min on this)"}]...
|
Title: XacOS by @xacobema | Stardance
Devlogs:
I Title: XacOS by @xacobema | Stardance
Devlogs:
I didnāt have Hackatime set up properly⦠But yesterday I locked in and did 71 different versions of XacOS (Each one with a little bit more things than the one before) Last thing I have done fllowing the guide was making the window openable and closable. I kinda panicked when tidying up the code a little bit all the JS stopped working, but itās fixed now. (btw, I spent way more than 37min on this)
Project is going great! Alough Iām going crazy trying to figure out why The pop up projects movat the same time as the main projects windowā¦
Hooray! I think version 1 of XacOS is finished. It is still pretty barebones and the code is a mess (compared to what others have done this is worthless), but I hope I can polish everything in WebOS 2. All the basics are done and I added the feature of icons of open apps in the taskbar, and when you click it it brings the window to the top
Fixing up the README and setting up github pages
Tidied up a lot the JavaScript code. Much needed! Now to try if it still works⦠fingers crossed
Of course it didnāt work after reorganizing the code. After fixing it up I started implementing the Start Menu (still needs a lot of work) , and only had opened Welome Screen, so I dināt realise that every other window closed with the start Menu, so I started re-cheking the code and found nothing, changed a couple of things that I thought hat was causing that, nothing. I gave up and asked Github AI what was going on but it DIDNāT KNOW (and tried rewriting my code)⦠I ended up checking again the htmlā¦.. there was a missing div ending declaration. AAAAAAAAA
Found a way to preview the page without having to redownload the files every single time, wich was much needed. Added a working start menuthat opens when you click XacOS and closes by clicking it again, opening an app with it or clicking a window. I still have to fix the problem of windows deforming when they get to the right side of the screenā¦
I figured out how to make windows not do weird things when they are dragged to the right (It was a very simple solution), gave Settings more functions, like changing the font and uploading your own wallpaper, fixed a couple of bugs and made a very simple Sticky Notes app. I think I will update the repo, do some slight changes, and ship XacOS v1.0! (Previous was beta)
Updated GitHub and touched up some minor things before shipping!
I know I said that I was starting school, but the first days we arenāt having a lot of work, and I was dissapointed on only getting a x1.98 multiplier in v1, so Iāve decided to fix everything the reviewers have pointed out, starting by making everything smaller, and using relative percentages, instead of fixed px values both in HTML and in CSS. Secondly, I have added a little animation on the opening and closing of the Start Menu, turns out it was way easier than I thought, I thought that you had to code the animation by hand. I will also add animations to the other windows (probably easier since they all have a common css class). Lastly, I renamed the welcome screen to About Me, as I plan to do an onboarding foor the OS, and some reviewers pointed out that XacOS v1 seemed more like a personal website instead of a WebOS. As you can read, I am also giving more details in the devlog, and doing them more often.
Sticky Notes now has more functions and windows are animated! I still have to code all the saving to localstorage when you click save and displaying them as openeable files, but for now you can export your note to a txt file to view whenever. Also, looking at the screenshot, looks like I made Settings not be a square anymore, probably when making the text centered with the icon⦠I will fix that too
Started adding quite some things, but more work is required. (I plan on adding more features, this is v2.0, not v1.1 ;) ) 1. Changed the old welcome window for a placeholder OOBE/Setup, 2. Started working on locally saving the notes to be persistant even when you close the browser, 3. Moved my personal projects to a separate folder inside of file explorer, 4. Added an outline to program names in the desktop, so it can work with both dark and light wallpapers, 5. Fixed the problem of when selecting an icon it would move slightly. Wish me luck, I have no idea why the local saving is working (Why does it need a random cryptographic ID?)
I added quite some new features, including: 1. Most setup/OOBE is done, but I will probably add the cusomization options in there. 2. Added a low graphics mode, as some reviewers pointed out that XacOS ran badly on their PC, wich disables animations and disables blur. 3.Compressed all images, wich will also help with performane. 4.Added a new wallpaper by NASA, to resemble StarDance. 5. Added a Security section in settings, wich checks for the URL to make sure it is āgenuine XacOSā (It is just a gimmick, XacOS is still completly open source) 6. Added a factory reset option in settings, wich deletes all settings and files saved in localStorage. 7. Added a start-up sound. Still have some things that I want to add but Iām happy on how this is turning out, altough I lost my streak because of schoolā¦
Letās see if I remember everything: 1. Changed the default system font to one that I think fits better 2. Added paint.js as an app 3. Added user profile customization, with profile picture and username (for now it doesnāt do much, just show it in the start menu) 4. Now thereās a little indicator in the taskbar on what app is currently on top 5. Changed the buttons of the notes apps to icons 6. Setup now tells you to choose your favourite font 7. A little calendar will appear when hovering over the date and time on the taskbar 8. Made most settings persist between page refresh with localStorage and some minor bug-fixes, like the aboutMe screen not going to the top when itās taskbar icon was clicked. I thinks thatās everything, I also plan on adding at least one or two more apps coded by me and maybe something like a launcher or app store for iframe/embeded stuff by other people
Fixed all bugs that remained (hopefully) 2. Now you can actually have multiple notes on the notes app, and delete them. 3. Correctly implemented the themes settings, now they actually work
Ships:
I think I finally finished the first version of XacOS! It was quite challenging to fix up bugs, as I had never coded in HTML nor JavaScript
XacOS v1.0 [You will probably have to zoom out to see everything properly, I didnĀ“t find a reliable and simple way to make everything fit every screen, altough there is probably a way] Whatās new in 1.0 Fixed bugs, like the windows changing shape when dragged to the right corner of the screen Revamped settings: you can now add your own wallpaper, change the font of the whole OS and see some information about your PC Added very simple notes app Start menu: access it by clicking the XacOS logo in the corner of the taskbar, see and open all of your apps There was A LOT of debugging Honestly, since almost 2 months have passed since I made v0.1, and that being my first real experience with HTML, CSS and JavaScript, and also forgetting how I coded the project, this update was a little challenging. Obviously, a lot of googling and W3schools helped me. I still think that maybe in the future I will make a 1.1 or 2.0 with more interesting features, but as a first experience with web development, I think it was great. I would love to mke 1.1 now, but I start school tomorrow, so itās going to be difficult⦠Also, thank you very much HackClub and all itās volunteers for making these awesome projects, I hope summer next year I will be able to participate again, because itās the last year before I turn 18 š
XacOS 2.0: A bloat-free (there are 6 apps) modern (it has blur) lightweight (it is HTML) operative system! What“s new on 2.0? Added Setup: now the first time you boot XacOS, you will get a simple tutorial, the option to choose your favourite font and set your name and profile picture. Taskbar calendar: hover over the date and time in the taskbar to see a calendar. Added a new stardance-themed wallpaper. Notepad: added a new feature to the notepad app, now you can open multiple notes at once and switch between them, and download them as a .txt file. You can also delete notes and edit their titles. Animations: added new animations to the taskbar, windows and the welcome screen. Paint: added a jspaint-based paint app, you can open it from the start menu. Added a low graphics mode, which disables animations and blur effects to improve performance on low-end devices. Added a security section in settings, where you can check if you“ve got the official and latest version of XacOS (Mostly a gimmick) Now all settings are saved in the browser“s local storage, so you can keep your settings even if you close the browser. Factory reset: now you can reset XacOS to its default settings from the settings app. Some minor extra features and improvements (Translation: I forgot to write them down, but they are there)...
|
1793613213.7884655
|
1793699613.7884655
|
|
58639
|
Personal Portfolio by @s_ray9 | Stardance
|
s_ray9
|
2
|
29.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-11-01T16:45:23Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My personal portfolio is presentable! Not only do you have something to read now, but you can finally play around with the metaballs animation WITHOUT your PC fans whirring! I am honestly so proud of this entire website. The progress was rough, and so might be the edges on these webpages too, but Iāve come so far with this project. The new webpages also include different elements, such as cards and embeds. The information is also loosely based off of my very old website . I feel like the main element to this website, the metaball animation, is largely because of this article . However, Iām still so proud of the fact that I was able to apply my own game development knowledge on optimizing boids to this! I donāt have a number for how much better this is, but it is MUCH more performant! No more 144 Hz refresh rate! Overall, the greatest challenge was figuring out how to structure the webpages and what information I wanted on there! Iām still working on it, but itās at least presentable. In the future, I plan to do more with glassmorphism and panning to make it more interactive. Iām tired of seeing static webpages, so why not spice it up for fun? Once again, I am so proud of how far everything has come. Iām signing off on Stardance with this personal portfolio project!", "repo": "https://github.com/s-ray9/personal-portfolio", "demo": "https://s-ray9.vercel.app"}, {"ship_num": 2, "ts": "2026-10-28T03:35:59Z", "hours": 18.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A neat personal portfolio with metaball animations! Finally, I get to ship this thing for once. This personal portfolio is the culmination of all my hard work, from trying to learn web development to figuring out the best practices. Iāve encountered so many more problems than I could ever imagine, whether itās figuring out how I actually wanted it to look, adapting to what modular code looks like in web development, or even trying to figure out how to set up the project folder in itself. Actually, now that I recall, one of the absolute worst parts must have been trying to figure out the favicon business. Who knew that I had to literally learn how different browsers cache favicons differently⦠and on an unrelated note, merge Tailwind classesā¦? That aside, I am so glad that I added the metaballs animation. Itās inspired by this article , just with my own spin on how itās done. Please try it out! Honestly, the interactive animation stuff can be quite addicting. The actual webpage stuff is for later. Iām still caught in writing all that.", "repo": "https://github.com/s-ray9/personal-portfolio", "demo": "https://s-ray9.vercel.app"}]...
|
[{"post_id": 86405, "ts": "202 [{"post_id": 86405, "ts": "2026-11-01T16:34:02Z", "hours": 0.3567, "text": "Devlog 7: Finally pushed the webpages Iāve been working on! This devlog is preparation for the ship! Iāve finally pushed all my webpages to the website! Theyāre not exactly done, but it is what it is as it stands! I also formatted the entire codebase, so a few other files might show a diff. Thereās only 20 minutes on this one devlog because I planned on shipping each webpage one by one⦠After all, why would I spend months on a blank website? Thereās just no time for that now."}, {"post_id": 85689, "ts": "2026-10-31T16:52:57Z", "hours": 10.3761, "text": "Devlog 6: Finalizing the metaballs rewrite and updating dependencies after weeks of falling behind I have finally finished rewriting the metaballs animation! After going on a hiatus due to school and still trying to figure out why one thing broke after another, I had broken free from it. The slightly overheating fans of my laptop deserved better every time I opened my website. I could hardly remember what I had done a while ago, but I knew that, frankly, as much as the metaball animations were cool (or hot, I should sayā¦), it was just as costly: the frame rate and resolution were too high. The main problem: there was too much work per pixel. Stuff was quite literally being computed millions of times. (More changes to be discussed in my ship.) For the past few days, I think I spent too much time trying to figure out how to reorder classes because I updated all my tools. Some releases came out very recently; Node.js 26 entered LTS literally three days ago. From the start I suspected it had something to do with the versions. Then after a while of searching I found this issue , which was exactly the problem I had. Then, I decided I would downgrade Typescript from v1.x and pin it to 0.14.1 because itās unsupported. The solution might sound obvious, and frankly it really does when I think about it now, but it was a silent error, which are the worst kinds of issues. Cheers to progress."}, {"post_id": 83526, "ts": "2026-10-28T03:22:07Z", "hours": 4.3058, "text": "Devlog 5: More quality of life updates Alright, so it has definitely been a while since I last did anything at all, but this devlog logs any and all leftover changes (especially changes to the sections). Iām still working on the actual pages⦠such as restructuring the main navigation and footer, as well as adding a colophon!"}, {"post_id": 68929, "ts": "2026-09-16T01:59:26Z", "hours": 0.7094, "text": "Devlog 4: Migrated fully to pnpm 12.1 and fixed a concerning phantom dependency! A dozen or so more hours into this project since I started logging, and I just realized I could migrate to the ābetter npm.ā Not a very eventful devlog, but itās weird that I just now realize I have free will. Itās literally better in every way. (What am I doing?) Whatās important to highlight, though, is that this decision literally exposed an implicit coupling in my dependencies. Brittle architecture, if you will. Once upon a while ago, I imported clsx while using tailwind-merge and then I never thought about it again because it worked out of the box. However, I never actually installed clsx independently⦠It was a phantom dependency, which just so happened to resolve itself because npm just makes it work while pnpm actually cares about whatās good for your codebase. I canāt believe this kind of code smell really just started fouling now. As a side note, I fixed some other bugs that accidentally showed up along the way, such as the Vercel badge not linking to the website properly, as well as README improvements, some of which, of course, reflect the new documentation."}, {"post_id": 67650, "ts": "2026-09-13T20:06:43Z", "hours": 9.6706, "text": "Devlog #3: 10 hours of bugfixes, QoL improvements, and⦠METABALLS!!! This devlog seriously took me forever to do, and I still havenāt even gotten to designing and writing pages. First of all, I seriously did not expect to go nearly 10 hours without uploading a devlog. A lot of the time was actually spent just trying to figure out why the Prettier plugin for Astro wasnāt working while overhauling my project configuration⦠Seriously. I still donāt entirely know why. So, as you may have noticed, whatās new is that now there are cool metaball animations! They merge together and stuff, and itās so cool, and itās all thanks to this article . I just adapted it and just made floating balls, with my own tweaks, of course. In no way is any of anything done. There is still a long way to go, but everything is slowly but surely falling into place⦠Anyways, since there was so much work put in at once, hereās a rundown of whatās up: chore(dx): optimize project layout structure and update formatting configuration : The main philosophy here was to clean up my project workspace before moving onto the big stuff, so that involves cleaning up Prettier configurations and shifting reliance: .vscode/settings.json -> .prettierrc.mjs -> .editorconfig . That way, everything becomes minimal, and I donāt end up with a maintenance nightmare. Plus, I made some tiny additional polishes, such as to the README. style: standardize tokens matrix and streamline base component layouts : These changes mostly involve improving the token standards that I have established across my webpages. For example, rather than dealing with class conflicts using tailwind-merge , Iāve kept things more minimal and decided on cleaner conventions. Also, I realized I could tokenize some additional values. fix: resolve theme contrast boundaries and polish navigation assets : This one was a problem I actually missed, and Iām glad I caught it. I forgot to consider that the logo SVG I was using for my header was adaptive to theme. Depending on the userās theme, the logo changes appearance. Rather, it should strictly use the dark theme. I wrapped that in a Logo.astro component and realized some additional improvements to Layout.astro . feat: implement high-performance fluid matrix canvas background : Of course, the best for last. I already decided I wanted to use Three.js so what I did was I actually found a metaballs animation online that I really liked. I ended up using it as inspiration and created my own floating metaballs. This was one of the coolest effects Iāve ever done! Code-wise, Iāve set up a basic render pipeline. Overall, this was a very ambitious devlog, but it still lived up to greatness! I tried to maintain my project as best as possible, and that was honestly the hard part of this project. As a next step, I think I should really start turning it into an actual website⦠Cheers to nearly 10 hours of work!"}, {"post_id": 65775, "ts": "2026-09-11T04:26:38Z", "hours": 2.6175, "text": "Devlog #2: Cleaning up the repo and polishing the developer experience Iām still maintaining the repo! I plan to move past that soon, though. I migrated away from GitHub Pages and fully to Vercel, renamed the project for consistency, built on top of the environment cleanup, pinned Node 24 (not sure why that was out of date), and set up workspace formatting rules that I set up a couple of days ago. This devlog is more of an intermission, but I am looking forward to cooler updates like Three.js animations in the near future! Metaballs are looking really cool right nowā¦"}, {"post_id": 63417, "ts": "2026-09-07T07:42:23Z", "hours": 0.6594, "text": "Devlog #1: Building the foundation A month ago, I woke up one day and decided to build a personal portfolio from scratch. The funny part is that the website itself is basically just ācoming soonā right now. Iāve spent maybe 50+ unlogged hours: 1. learning web development 2. designing the entire visual system 3. setting up: i. Astro, Tailwind CSS & TypeScript, ii. GitHub Actions, iii. Vercel deployment, iv. SEO, v. accessibility, vi. responsive behaviour, vii. and a proper development workflow ā¦on a whim. I am genuinely at my limit, but I literally just started. Coming from a systems (and game) development background, I planned to use the same things Iāve learned along the way while adapting to the conventions and weird (terrible) nuances that come with web development. Yet, I havenāt even finished mobile accessibility for a header and a footer. Who knew you had to ārewriteā tailwind-merge itself to fix a class conflict? That alone took me several hours to figure out. The actual site is still mostly empty, but the foundation is finally starting to feel solid. Looking forward to some cool Three.js experiments soon, thoughā¦"}]...
|
Title: Personal Portfolio by @s_ray9 | Stardance
Title: Personal Portfolio by @s_ray9 | Stardance
Devlogs:
Devlog #1: Building the foundation A month ago, I woke up one day and decided to build a personal portfolio from scratch. The funny part is that the website itself is basically just ācoming soonā right now. Iāve spent maybe 50+ unlogged hours: 1. learning web development 2. designing the entire visual system 3. setting up: i. Astro, Tailwind CSS & TypeScript, ii. GitHub Actions, iii. Vercel deployment, iv. SEO, v. accessibility, vi. responsive behaviour, vii. and a proper development workflow ā¦on a whim. I am genuinely at my limit, but I literally just started. Coming from a systems (and game) development background, I planned to use the same things Iāve learned along the way while adapting to the conventions and weird (terrible) nuances that come with web development. Yet, I havenāt even finished mobile accessibility for a header and a footer. Who knew you had to ārewriteā tailwind-merge itself to fix a class conflict? That alone took me several hours to figure out. The actual site is still mostly empty, but the foundation is finally starting to feel solid. Looking forward to some cool Three.js experiments soon, thoughā¦
Devlog #2: Cleaning up the repo and polishing the developer experience Iām still maintaining the repo! I plan to move past that soon, though. I migrated away from GitHub Pages and fully to Vercel, renamed the project for consistency, built on top of the environment cleanup, pinned Node 24 (not sure why that was out of date), and set up workspace formatting rules that I set up a couple of days ago. This devlog is more of an intermission, but I am looking forward to cooler updates like Three.js animations in the near future! Metaballs are looking really cool right nowā¦
Devlog #3: 10 hours of bugfixes, QoL improvements, and⦠METABALLS!!! This devlog seriously took me forever to do, and I still havenāt even gotten to designing and writing pages. First of all, I seriously did not expect to go nearly 10 hours without uploading a devlog. A lot of the time was actually spent just trying to figure out why the Prettier plugin for Astro wasnāt working while overhauling my project configuration⦠Seriously. I still donāt entirely know why. So, as you may have noticed, whatās new is that now there are cool metaball animations! They merge together and stuff, and itās so cool, and itās all thanks to this article . I just adapted it and just made floating balls, with my own tweaks, of course. In no way is any of anything done. There is still a long way to go, but everything is slowly but surely falling into place⦠Anyways, since there was so much work put in at once, hereās a rundown of whatās up: chore(dx): optimize project layout structure and update formatting configuration : The main philosophy here was to clean up my project workspace before moving onto the big stuff, so that involves cleaning up Prettier configurations and shifting reliance: .vscode/settings.json -> .prettierrc.mjs -> .editorconfig . That way, everything becomes minimal, and I donāt end up with a maintenance nightmare. Plus, I made some tiny additional polishes, such as to the README. style: standardize tokens matrix and streamline base component layouts : These changes mostly involve improving the token standards that I have established across my webpages. For example, rather than dealing with class conflicts using tailwind-merge , Iāve kept things more minimal and decided on cleaner conventions. Also, I realized I could tokenize some additional values. fix: resolve theme contrast boundaries and polish navigation assets : This one was a problem I actually missed, and Iām glad I caught it. I forgot to consider that the logo SVG I was using for my header was adaptive to theme. Depending on the userās theme, the logo changes appearance. Rather, it should strictly use the dark theme. I wrapped that in a Logo.astro component and realized some additional improvements to Layout.astro . feat: implement high-performance fluid matrix canvas background : Of course, the best for last. I already decided I wanted to use Three.js so what I did was I actually found a metaballs animation online that I really liked. I ended up using it as inspiration and created my own floating metaballs. This was one of the coolest effects Iāve ever done! Code-wise, Iāve set up a basic render pipeline. Overall, this was a very ambitious devlog, but it still lived up to greatness! I tried to maintain my project as best as possible, and that was honestly the hard part of this project. As a next step, I think I should really start turning it into an actual website⦠Cheers to nearly 10 hours of work!
Devlog 4: Migrated fully to pnpm 12.1 and fixed a concerning phantom dependency! A dozen or so more hours into this project since I started logging, and I just realized I could migrate to the ābetter npm.ā Not a very eventful devlog, but itās weird that I just now realize I have free will. Itās literally better in every way. (What am I doing?) Whatās important to highlight, though, is that this decision literally exposed an implicit coupling in my dependencies. Brittle architecture, if you will. Once upon a while ago, I imported clsx while using tailwind-merge and then I never thought about it again because it worked out of the box. However, I never actually installed clsx independently⦠It was a phantom dependency, which just so happened to resolve itself because npm just makes it work while pnpm actually cares about whatās good for your codebase. I canāt believe this kind of code smell really just started fouling now. As a side note, I fixed some other bugs that accidentally showed up along the way, such as the Vercel badge not linking to the website properly, as well as README improvements, some of which, of course, reflect the new documentation.
Devlog 5: More quality of life updates Alright, so it has definitely been a while since I last did anything at all, but this devlog logs any and all leftover changes (especially changes to the sections). Iām still working on the actual pages⦠such as restructuring the main navigation and footer, as well as adding a colophon!
Devlog 6: Finalizing the metaballs rewrite and updating dependencies after weeks of falling behind I have finally finished rewriting the metaballs animation! After going on a hiatus due to school and still trying to figure out why one thing broke after another, I had broken free from it. The slightly overheating fans of my laptop deserved better every time I opened my website. I could hardly remember what I had done a while ago, but I knew that, frankly, as much as the metaball animations were cool (or hot, I should sayā¦), it was just as costly: the frame rate and resolution were too high. The main problem: there was too much work per pixel. Stuff was quite literally being computed millions of times. (More changes to be discussed in my ship.) For the past few days, I think I spent too much time trying to figure out how to reorder classes because I updated all my tools. Some releases came out very recently; Node.js 26 entered LTS literally three days ago. From the start I suspected it had something to do with the versions. Then after a while of searching I found this issue , which was exactly the problem I had. Then, I decided I would downgrade Typescript from v1.x and pin it to 0.14.1 because itās unsupported. The solution might sound obvious, and frankly it really does when I think about it now, but it was a silent error, which are the worst kinds of issues. Cheers to progress.
Devlog 7: Finally pushed the webpages Iāve been working on! This devlog is preparation for the ship! Iāve finally pushed all my webpages to the website! Theyāre not exactly done, but it is what it is as it stands! I also formatted the entire codebase, so a few other files might show a diff. Thereās only 20 minutes on this one devlog because I planned on shipping each webpage one by one⦠After all, why would I spend months on a blank website? Thereās just no time for that now.
Ships:
A neat personal portfolio with metaball animations! Finally, I get to ship this thing for once. This personal portfolio is the culmination of all my hard work, from trying to learn web development to figuring out the best practices. Iāve encountered so many more problems than I could ever imagine, whether itās figuring out how I actually wanted it to look, adapting to what modular code looks like in web development, or even trying to figure out how to set up the project folder in itself. Actually, now that I recall, one of the absolute worst parts must have been trying to figure out the favicon business. Who knew that I had to literally learn how different browsers cache favicons differently⦠and on an unrelated note, merge Tailwind classesā¦? That aside, I am so glad that I added the metaballs animation. Itās inspired by this article , just with my own spin on how itās done. Please try it out! Honestly, the interactive animation stuff can be quite addicting. The actual webpage stuff is for later. Iām still caught in writing all that.
My personal portfolio is presentable! Not only do you have something to read now, but you can finally play around with the metaballs animation WITHOUT your PC fans whirring! I am honestly so proud of this entire website. The progress was rough, and so might be the edges on these webpages too, but Iāve come so far with this project. The new webpages also include different elements, such as cards and embeds. The information is also loosely based off of my very old website . I feel like the main element to this website, the metaball animation, is largely because of this article . However, Iām still so proud of the fact that I was able to apply my own game development knowledge on optimizing boids to this! I donāt have a number for how much better this is, but it is MUCH more performant! No more 144 Hz refresh rate! Overall, the greatest challenge was figuring out how to structure the webpages and what information I wanted on there! Iām still working on it, but itās at least presentable. In the future, I plan to do more with glassmorphism and panning to make it more interactive. Iām tired of seeing static webpages, so why not spice it up for fun? Once again, I am so proud of how far everything has come. Iām signing off on Stardance with this personal portfolio project!...
|
1793613215.0985553
|
1793699615.0985553
|
|
5377
|
Fight Game by @Hamstersarus | Stardance
|
Hamstersarus
|
1
|
5.0
|
39
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T02:31:26Z", "hours": 5.0, "multiplier": 7.23, "payout": 39, "blessing": "neutral", "text": "This is a Java turn-based fighting game where monsters, creatures, and chaos agents battle on a 10Ć10 arena. The intent of this project is to demonstrate software development in Java with heavy use of a modern LLM tool. I used Anthropicās Claude Sonnet 4.6 with occasional use of Opus 4.7. The development environment I chose is VSCode along with Claude CLI. This project serves as the final project in my APCSA Java programming class. The use of these AI tools is in contrast to everything weāve done in the course where prior use of LLMs was prohibited.", "repo": "https://github.com/Hamstersarus/FightGame", "demo": "https://fight.hamstersarus.hackclub.app/"}]...
|
[{"post_id": 14089, "ts": "202 [{"post_id": 14089, "ts": "2026-06-23T02:25:50Z", "hours": 1.8631, "text": "I added a demo url. I have a docker file that I connect to Render which hosts my website."}, {"post_id": 5698, "ts": "2026-06-09T16:16:04Z", "hours": 1.8578, "text": "The quit option: Added a Q ā Quit option to the action menu so it appears on every turn. Typing it exits the game cleanly with a goodbye message. Itās also documented on the instructions screen now. Trimming dead code: Character.java carried a full set of getters and setters that nothing in the game actually called ā every field is accessed directly. I removed all of them, so Character.java is now just its fields, the ANSI color constants, and a constructor, which is exactly what a data-model class should be. Board.java documentation: Added thorough inline comments throughout Board.java, explaining the grid primitives, the ANSI cursor-positioning trick used in printBoard() (the CELL/START column math that keeps emoji aligned), and every map-object method. The big one ā an automated test harness: The headline addition is TestHarness.java, a standalone tool that stress-tests the whole combat system. It runs every character against every character ā all 100 matchups, 20 times each, in two passes (once with map objects, once without) for roughly 4,000 battles. Both fighters are driven by the existing opponent AI, so no input is needed. Each battle is wrapped to catch any exception or assertion failure, and a turn cap catches any battle that never ends. At the end it prints a win-rate matrix plus a count of any crashes or timeouts. Making this fast required one small change to Fight.java: an animationsEnabled flag, because the attack animation uses Thread.sleep and 4,000 battles of real-time animation would take hours. The flag defaults to on, so normal play is unaffected; the harness flips it off. I wrote the full design into CLAUDE.md before building it. The first run came back completely clean ā 0 exceptions, 0 timeouts, all in about 300ms ā and the results matrix matched expectations (Dragon dominates, Goblin and Zombie struggle), which is a good sign the combat, ability, shield, and map-object systems all hold up under every pairing. Smaller touches: Added a credits line under the title screen, updated the README with the quit option, the new file, and a testing section."}, {"post_id": 1238, "ts": "2026-06-03T02:52:11Z", "hours": 1.7181, "text": "The biggest change this session was a major refactor of how the code is organized across files. Fight.java was getting bloated as the game controller, so logic was redistributed to the classes that actually own it. Board.java gained five new methods: printBoard() (the bordered grid renderer), spawnObjects(), checkObjectInteraction(), restoreHouseIfVacating(), and ejectFromHouseIfExpired(). All of the map object logic now lives alongside the board data it operates on, rather than sitting in the game controller as static helpers. Opponent.java absorbed moveOpponentToward() and opponentAI() as instance methods. An opponent now knows how to move and take its turn ā Fight.java just calls opponent.opponentAI(ā¦) instead of running all that logic externally. Fight.java is now significantly leaner, focused only on game setup, the turn loop, player input, and UI rendering. On the bug fix side, the shield raise failure messages (āSomething is in the wayā) were moved out of raiseShield() and into the player-only call site. Previously these messages would print whenever the opponent AI tried and failed to raise its shield, which confused players who werenāt doing anything with their shield. The board display was also reworked to use ANSI cursor column positioning (\\033[nG) to force each cell to a fixed terminal column, solving a long-standing alignment issue where emoji with different display widths would push cells out of place. The instructions screen was rewritten ā cleaner language, shorter sentences, and a new map objects section explaining how the house, hospital, and heart work. The ā(I) How to playā hint was moved to sit next to the āChoose your characterā header so itās visible before scrolling through the roster. The README was also reviewed and is current."}]...
|
Title: Fight Game by @Hamstersarus | Stardance
De Title: Fight Game by @Hamstersarus | Stardance
Devlogs:
The biggest change this session was a major refactor of how the code is organized across files. Fight.java was getting bloated as the game controller, so logic was redistributed to the classes that actually own it. Board.java gained five new methods: printBoard() (the bordered grid renderer), spawnObjects(), checkObjectInteraction(), restoreHouseIfVacating(), and ejectFromHouseIfExpired(). All of the map object logic now lives alongside the board data it operates on, rather than sitting in the game controller as static helpers. Opponent.java absorbed moveOpponentToward() and opponentAI() as instance methods. An opponent now knows how to move and take its turn ā Fight.java just calls opponent.opponentAI(ā¦) instead of running all that logic externally. Fight.java is now significantly leaner, focused only on game setup, the turn loop, player input, and UI rendering. On the bug fix side, the shield raise failure messages (āSomething is in the wayā) were moved out of raiseShield() and into the player-only call site. Previously these messages would print whenever the opponent AI tried and failed to raise its shield, which confused players who werenāt doing anything with their shield. The board display was also reworked to use ANSI cursor column positioning (\033[nG) to force each cell to a fixed terminal column, solving a long-standing alignment issue where emoji with different display widths would push cells out of place. The instructions screen was rewritten ā cleaner language, shorter sentences, and a new map objects section explaining how the house, hospital, and heart work. The ā(I) How to playā hint was moved to sit next to the āChoose your characterā header so itās visible before scrolling through the roster. The README was also reviewed and is current.
The quit option: Added a Q ā Quit option to the action menu so it appears on every turn. Typing it exits the game cleanly with a goodbye message. Itās also documented on the instructions screen now. Trimming dead code: Character.java carried a full set of getters and setters that nothing in the game actually called ā every field is accessed directly. I removed all of them, so Character.java is now just its fields, the ANSI color constants, and a constructor, which is exactly what a data-model class should be. Board.java documentation: Added thorough inline comments throughout Board.java, explaining the grid primitives, the ANSI cursor-positioning trick used in printBoard() (the CELL/START column math that keeps emoji aligned), and every map-object method. The big one ā an automated test harness: The headline addition is TestHarness.java, a standalone tool that stress-tests the whole combat system. It runs every character against every character ā all 100 matchups, 20 times each, in two passes (once with map objects, once without) for roughly 4,000 battles. Both fighters are driven by the existing opponent AI, so no input is needed. Each battle is wrapped to catch any exception or assertion failure, and a turn cap catches any battle that never ends. At the end it prints a win-rate matrix plus a count of any crashes or timeouts. Making this fast required one small change to Fight.java: an animationsEnabled flag, because the attack animation uses Thread.sleep and 4,000 battles of real-time animation would take hours. The flag defaults to on, so normal play is unaffected; the harness flips it off. I wrote the full design into CLAUDE.md before building it. The first run came back completely clean ā 0 exceptions, 0 timeouts, all in about 300ms ā and the results matrix matched expectations (Dragon dominates, Goblin and Zombie struggle), which is a good sign the combat, ability, shield, and map-object systems all hold up under every pairing. Smaller touches: Added a credits line under the title screen, updated the README with the quit option, the new file, and a testing section.
I added a demo url. I have a docker file that I connect to Render which hosts my website.
Ships:
This is a Java turn-based fighting game where monsters, creatures, and chaos agents battle on a 10Ć10 arena. The intent of this project is to demonstrate software development in Java with heavy use of a modern LLM tool. I used Anthropicās Claude Sonnet 4.6 with occasional use of Opus 4.7. The development environment I chose is VSCode along with Claude CLI. This project serves as the final project in my APCSA Java programming class. The use of these AI tools is in contrast to everything weāve done in the course where prior use of LLMs was prohibited....
|
1793613216.3152833
|
1793699616.3152833
|
|
54030
|
BroTurnYourHead by @Afraz | Stardance
|
Afraz
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T17:19:21Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a head tracker for Simulators/Games. It is called BroTurnYourHead, It Tracks Your Head with an MPU 6050 and sends HID Mouse Signals with an Arduino UNO R4 WiFi The Most challenging part was definitely calibrating the MPU 6050 to my head movements, I had to use the help from chatgpt, otherwise everything else was easy and went smooth like butter.", "repo": "https://github.com/afrazakbar/BroTurnYourHead", "demo": ""}]...
|
[{"post_id": 54868, "ts": "202 [{"post_id": 54868, "ts": "2026-08-26T02:05:41Z", "hours": 1.5667, "text": "gave the uno an enclosure and put the mpu in a helmet so it is easy to wear"}, {"post_id": 54833, "ts": "2026-08-26T00:03:53Z", "hours": 0.6131, "text": "Programmed HID Functions using the Mouse.h library"}, {"post_id": 54251, "ts": "2026-08-25T04:29:14Z", "hours": 0.7142, "text": "Programming the Arduino !! it is just a test code to see of the sensors work"}, {"post_id": 54222, "ts": "2026-08-25T03:42:29Z", "hours": 0.3833, "text": "Built the circuit for BTYH BTYH Stands for BroTurnYourHead which is a head tracker for flight sims and car sims"}]...
|
Title: BroTurnYourHead by @Afraz | Stardance
Devl Title: BroTurnYourHead by @Afraz | Stardance
Devlogs:
Built the circuit for BTYH BTYH Stands for BroTurnYourHead which is a head tracker for flight sims and car sims
Programming the Arduino !! it is just a test code to see of the sensors work
Programmed HID Functions using the Mouse.h library
gave the uno an enclosure and put the mpu in a helmet so it is easy to wear
Ships:
I made a head tracker for Simulators/Games. It is called BroTurnYourHead, It Tracks Your Head with an MPU 6050 and sends HID Mouse Signals with an Arduino UNO R4 WiFi The Most challenging part was definitely calibrating the MPU 6050 to my head movements, I had to use the help from chatgpt, otherwise everything else was easy and went smooth like butter....
|
1793613217.5141838
|
1793699617.5141838
|
|
29967
|
Trivia Game by @starkiller261 | Stardance
|
starkiller261
|
2
|
34.0
|
82
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T16:52:41Z", "hours": 22.0, "multiplier": 1.59, "payout": 35, "blessing": "neutral", "text": "NO AIā completely coded by hand. Spent 20 more hours on this new redesign following the recommendations from my last ship about changing the ui. This is a self hosted kubernetes cluster and full stack website with a flutter ui, Spring Boot backend, connected using a RESTful architectured api. I also used postgresql to store user information and that was seperately hosted using supabase. I then used tailscale to tunnel traffic to my home lab setup. It all works be allowing a user to sign in with jwt authentication through the spring boot backend and generating trivia questions through the open trivia database api.", "repo": "https://github.com/petevass/Trivia-Generator", "demo": "https://stardance-frontend.tail5b0cb9.ts.net/"}, {"ship_num": 2, "ts": "2026-07-22T02:52:42Z", "hours": 12.0, "multiplier": 4.01, "payout": 47, "blessing": "neutral", "text": "This a fullstack app using the spring mvc framework which allows users to test their knowledge to the limits through the variety of trivia topics and questions in the app. The webstack is a Spring MVC, Thymeleaf, and Postgres app with supabase used to host the database and ngrok used to tunnel from a self-hosting rig", "repo": "https://github.com/petevass/Trivia-Generator", "demo": "https://stardance-frontend.tail5b0cb9.ts.net/"}]...
|
[{"post_id": 46589, "ts": "202 [{"post_id": 46589, "ts": "2026-08-13T22:36:31Z", "hours": 6.3025, "text": "Finished Game Play UI"}, {"post_id": 37423, "ts": "2026-07-30T04:01:22Z", "hours": 8.8994, "text": "Working on the Leaderboard"}, {"post_id": 35331, "ts": "2026-07-26T17:26:18Z", "hours": 6.865, "text": "New Flutter Frontend in the works"}, {"post_id": 32041, "ts": "2026-07-20T22:33:58Z", "hours": 3.5997, "text": "UIs Finnaly Done"}, {"post_id": 31269, "ts": "2026-07-19T15:23:08Z", "hours": 4.86, "text": "Trivia API is finished, now I just have to make the frontend"}, {"post_id": 29885, "ts": "2026-07-17T01:32:18Z", "hours": 3.2933, "text": "Just finished configuring my data base and jwt authentication system"}]...
|
Title: Trivia Game by @starkiller261 | Stardance
Title: Trivia Game by @starkiller261 | Stardance
Devlogs:
Just finished configuring my data base and jwt authentication system
Trivia API is finished, now I just have to make the frontend
UIs Finnaly Done
New Flutter Frontend in the works
Working on the Leaderboard
Finished Game Play UI
Ships:
This a fullstack app using the spring mvc framework which allows users to test their knowledge to the limits through the variety of trivia topics and questions in the app. The webstack is a Spring MVC, Thymeleaf, and Postgres app with supabase used to host the database and ngrok used to tunnel from a self-hosting rig
NO AIā completely coded by hand. Spent 20 more hours on this new redesign following the recommendations from my last ship about changing the ui. This is a self hosted kubernetes cluster and full stack website with a flutter ui, Spring Boot backend, connected using a RESTful architectured api. I also used postgresql to store user information and that was seperately hosted using supabase. I then used tailscale to tunnel traffic to my home lab setup. It all works be allowing a user to sign in with jwt authentication through the spring boot backend and generating trivia questions through the open trivia database api....
|
1793613218.7134905
|
1793699618.7134905
|
|
58646
|
Alarm Clock by @aarav_shrivastava | Stardance
|
aarav_shrivastava
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-30T16:09:29Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a ALARM CLOCK in BLARE MISSION . It is a custom 4-key digital alarm clock built around the Seeed Studio XIAO ESP32-C3, a 2.25-inch ST7789P3 TFT display, four mechanical switches, and a passive buzzer. I designed a custom PCB and a 3D-printed enclosure specifically for the project, along with custom firmware for clock and alarm functions. It is my first hardware project and I learned a lot of things like schematic, PCB designing, 3D enclosure making and many more things. PCB is ordered but its delivery is late and it is expected to be delivered within 2-3 days. Currently I have used breadboard for temporary connections, but when PCB will arrive I will complete it by attaching components to it. Also, currently I have used tactical push buttons instead of mechanical switch I got in BLARE KIT because they canāt be connected in breadboard but I will attach mechanical switch in PCB.", "repo": "https://github.com/aaravshrivastava4129/Alarm-Clock", "demo": ""}]...
|
[{"post_id": 84934, "ts": "202 [{"post_id": 84934, "ts": "2026-10-30T16:00:15Z", "hours": 3.3669, "text": "ALARM CLOCK The design and prototype are completed. The final PCB has been designed and ordered, but the components are currently connected using temporary breadboard wiring because the PCB has not been delivered yet. Currently I have used tactical push button because buttons i got from BLARE KIT can be attached to breadboard but i will use BLARE KIT buttons in PCB The final PCB assembly will be completed once the board arrives. For Reviewer: Sorry but my PCB is not delivered but it is expected to be delivered in 2-3 days then I will immediately connect components and ship it."}, {"post_id": 67918, "ts": "2026-09-14T07:01:52Z", "hours": 2.1903, "text": "Alarm Clock Added timer function in clock. For the reviewer - Can you please check my PCB connection. Because this is my first ever PCB design so Iām worried if connections are wrong."}, {"post_id": 65357, "ts": "2026-09-10T13:24:59Z", "hours": 1.3578, "text": "Alarm Clock Added basic firmware."}, {"post_id": 63764, "ts": "2026-09-07T18:42:01Z", "hours": 7.3436, "text": "Alarm Clock Everything is completed. Now design will be summited soon."}, {"post_id": 63135, "ts": "2026-09-06T19:28:03Z", "hours": 6.5347, "text": "Alarm Clock PCB design is completed and now I have moved to make enclosure"}, {"post_id": 62748, "ts": "2026-09-06T08:11:34Z", "hours": 2.4153, "text": "Alarm Clock My PCB was ready but since this is my first time in hardware so I didnāt know how to design PCB so all my files become messy so I deleted everything and now I will start from beginning."}, {"post_id": 62448, "ts": "2026-09-05T19:59:23Z", "hours": 1.7358, "text": "Alarm Clock Schematic is completed and PCB design is one-way. This is my first time in hardware so Iām facing a lot of challenges. But Iām sure I can make it."}]...
|
Title: Alarm Clock by @aarav_shrivastava | Stardan Title: Alarm Clock by @aarav_shrivastava | Stardance
Devlogs:
Alarm Clock Schematic is completed and PCB design is one-way. This is my first time in hardware so Iām facing a lot of challenges. But Iām sure I can make it.
Alarm Clock My PCB was ready but since this is my first time in hardware so I didnāt know how to design PCB so all my files become messy so I deleted everything and now I will start from beginning.
Alarm Clock PCB design is completed and now I have moved to make enclosure
Alarm Clock Everything is completed. Now design will be summited soon.
Alarm Clock Added basic firmware.
Alarm Clock Added timer function in clock. For the reviewer - Can you please check my PCB connection. Because this is my first ever PCB design so Iām worried if connections are wrong.
ALARM CLOCK The design and prototype are completed. The final PCB has been designed and ordered, but the components are currently connected using temporary breadboard wiring because the PCB has not been delivered yet. Currently I have used tactical push button because buttons i got from BLARE KIT can be attached to breadboard but i will use BLARE KIT buttons in PCB The final PCB assembly will be completed once the board arrives. For Reviewer: Sorry but my PCB is not delivered but it is expected to be delivered in 2-3 days then I will immediately connect components and ship it.
Ships:
I made a ALARM CLOCK in BLARE MISSION . It is a custom 4-key digital alarm clock built around the Seeed Studio XIAO ESP32-C3, a 2.25-inch ST7789P3 TFT display, four mechanical switches, and a passive buzzer. I designed a custom PCB and a 3D-printed enclosure specifically for the project, along with custom firmware for clock and alarm functions. It is my first hardware project and I learned a lot of things like schematic, PCB designing, 3D enclosure making and many more things. PCB is ordered but its delivery is late and it is expected to be delivered within 2-3 days. Currently I have used breadboard for temporary connections, but when PCB will arrive I will complete it by attaching components to it. Also, currently I have used tactical push buttons instead of mechanical switch I got in BLARE KIT because they canāt be connected in breadboard but I will attach mechanical switch in PCB....
|
1793613219.9469342
|
1793699619.9469342
|
|
17344
|
Privournal by @Manonit | Stardance
|
Manonit
|
2
|
48.0
|
664
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T18:09:56Z", "hours": 14.0, "multiplier": 13.4, "payout": 184, "blessing": "neutral", "text": "I made Privournal, a retro CLI application for private journaling and custom text encryption featuring basic ciphers, advanced encryption (Swiption, Randomised, Manual Modes Hehe), and new features like Show Keys and View Account. Pheww youāre gonna love this if youāve people trying to read your journals š The hardest part was restructuring the whole flow so as to make it less repetitive and cleaner , fixing CLI table alignment glitches, and honestly, if you saw my last ship youād know that the Swiption feature I made gave me a pretty tough time, Lol. Though Iām really proud of creating a seamless terminal workflow and getting it published live on PyPI as well as GitHub, this is one of the few things Iāve worked on and completed in my life. To test it out, run pip install āupgrade privournal, and type privournal in your terminal, and try encrypting and immediately decrypting a short sentence with or without an account!", "repo": "https://github.com/sermanoire/Privournal", "demo": "https://pypi.org/project/privournal/"}, {"ship_num": 2, "ts": "2026-06-19T01:48:24Z", "hours": 34.0, "multiplier": 17.48, "payout": 480, "blessing": "neutral", "text": "I built Privournal, a command-line journal encryptor that allows users to encrypt and decrypt journal entries locally on their own device. Because for me, someone reading my journal is a legit nightmare, and Privournal is something I can use to keep my digital journals secure. For me thatās a clear quality-of-life improvement : ) Write your journal anywhere (Notes, Notion, etc), paste it into Privournal, get back unreadable text, paste that back into your app. No journal content is ever stored - only the encryption key, and that too locally, if you make an account. To read it yourself you can again head to Privournal and decrypt it! It supports multiple encryption modes, including Basic Encryption, Advanced Encryption, Randomized Encryption, and Swiption - a dynamic encryption system that changes a letterās cover after a particular number of occurrences, making it impossible to crack. The biggest challenge was implementing Swiption and its decryption logic. Managing occurrence tracking, rotating covers, JSON storage, database integration, and reliable decryption took multiple iterations and a lot of debugging. I also migrated the project from a MySQL-based architecture to SQLite after realizing a shared database conflicted with the goal of being fully offline and private. Iām most proud of turning an idea into a complete, usable package that can be installed through PyPI. Iāve never worked on something so religiously on something of this complexity. The project ended up being over 1400 lines of code and taught me a huge amount about python, databases, GitHub and packaging, debugging, and obviously logical thinking. Iāve never worked on something so religiously on something of this complexity. 3 Major Quality-of-Life Improvements : Zero-setup local encryption - Works completely offline with automatic SQLite database. No server or complicated config needed. Powerful & flexible encryption - Multiple modes + Swiption (dynamic rotating covers) makes it much stronger than simple substitution ciphers. Seamless workflow - Write anywhere -> encrypt -> paste back -> decrypt easily with account or manual key. Perfect for daily journaling : ) Try creating an account (or continue without an account), encrypting a journal entry, saving it, and then decrypting it again. Swiption and Randomised Modes are the most interesting and secure features to experiment with. To test it, run these on terminal : pip install privournal python import MainCode MainCode.start() Thank you so much for reading! : )", "repo": "https://github.com/sermanoire/Privournal", "demo": "https://pypi.org/project/privournal/"}]...
|
[{"post_id": 77627, "ts": "202 [{"post_id": 77627, "ts": "2026-10-07T17:55:59Z", "hours": 2.0183, "text": "Devlog 16! ā Okay, NOW Itās Done. š Phew. I thought Privournal was finally finished, but while making the final ASCII recording, I found a bunch of small errors (Some was huge), inconsistencies and table issues that I had to fix. What I worked on: Added two new functions: Show Keys and View Account . Show Keys lets users view all their saved encryption keys. View Account displays their account details neatly in a table. Fixed several encryption and decryption bugs , including issues with journal selection, menu choices and input validation. Fixed problems with database values and journal data being handled incorrectly. Improved table formatting, spacing and alignment throughout the program. Cleaned up various small inconsistencies and errors that appeared during full end-to-end testing. Made the new ASCII recording . There was some old test data already stored, which was causing confusing duplicate entries and messing up the tables. After clearing that out, everything worked properly. And finally⦠The entire thing worked perfectly. š Most of this Devlog was about fixing the small things rather than adding huge new features, but it made Privournal more consistent and reliable."}, {"post_id": 77302, "ts": "2026-10-06T14:14:50Z", "hours": 6.5342, "text": "Devlog 15! Itās done. Phew. Finally, Privournal is DONE. Complete, everythingās perfect. In this final version Iāve made so many improvements! Instead of using time.sleep() to give pauses/time to copy the details, now the users can copy and paste encrypted text and its key without a time limit, and then they can simply press Enter to move ahead. I also made HUGE changes to the code. Earlier, the code used to run and at multiple steps ask for login/signup, which was fine but it was confusing. Now the first page is for login/signup, then the rest of the code flows smoothly accordingly. This restructuring required writing many parts of the code again and breaking a lot of functions into 2 parts. I also renamed some variables. I also worked on spacing and formatting. Now the user details are printed cleanly in a table. Overall, the code outputs are much more uniform. I made a new ASCII recording. It is yet to be updated on my GitHub, though. Iāve also published this new version on PyPI. If you had already installed Privournal, you can just update it. Now the main thing. Iām going to make a Website for Privournal where users wouldnāt need to install anything and can just go straight to encrypting or decrypting their journals. This version will still exist, though. Itāll be a rather Retro CLI version for people who like it this way. Phew. Iāll work on that now."}, {"post_id": 15049, "ts": "2026-06-24T13:23:31Z", "hours": 5.1881, "text": "##Devlog #14 - The Reviewer Arc š„² . Well⦠. The reviewer found some issues š . So I went back and tested basically the ENTIRE project again. . While testing, I found and fixed a bunch of errors, especially in Advanced Encryption. I also added a lot of fallback checks throughout the code so Privournal doesnāt randomly decide to crash anymore š . I also improved the decryption flow. . Earlier users had to select journals using IDs, now they can simply choose them by name, which feels way cleaner. . Another addition was a user guide in menu. I was short on time and it was a no brainer, so I used Claude to help generate the guide content and then integrated it into Privournal. The goal was simply to make the different encryption modes easier to understand :) . Apart from code changes, I also polished the project page, uploaded a sample flowchart, improved formatting and timing, and recorded a completely new asciinema demo PLUS I updated the README too. . Then came final testing, packaging, uploading the latest release, and requesting review again š¤š» . Hopefully Privournal passes thru this time š . Thank you : )"}, {"post_id": 11681, "ts": "2026-06-19T01:11:08Z", "hours": 16.0992, "text": "Devlog #13 - ITāS DONE DONE! The Final Chapter. FINALLY. After two intense days and 16+ hours of grinding, Privournal is officially complete and ready for Stardance! šš OH AND Yeah, itās been two days - Long time no see š . Sorry for disappearing without posting Devlog #13 š„² . These last 16+ hours were so packed with debugging, packaging, testing, and polishing that I kept postponing the devlog. So this one covers the entire final stretch. . Btw hey Iāll upload the clean Flowchart on Git repo, and yk I was gonna write a LOT here with complete details, but damn thereās a limit. Well itās oki iāll add a list of all my devlogs to the repo too :) What Happened? I thought Devlog #12 was the āeverything worksā moment, but the final stretch turned out to be the work. Audited every function in the codebase Fixed dozens of lingering bugs Cleaned up the entire code Updated the README 10+ times Set up PyPI packaging and releases Recorded asciinema demos (Took enormous time š) Added prettier output/interface functions Tested every scenario I could think of Major Change: MySQL ā SQLite One of the biggest changes was moving away from MySQL. . Originally, Privournal used MySQL with accounts and a shared database. Later I realized that requires a server, hosting, maintenance, and introduces privacy concerns. . So I redesigned everything around SQLite. . Benefits: Fully offline More private Easier installation Simpler deployment Probably the biggest architectural change in the entire project. Biggest Bugs Fixed Login/signup flow issues Missing database commits Foreign key linking problems JSON serialization/loading bugs The infamous āextra spaces everywhereā decryption bug Variable scope and traversal issues Randomised Mode integration By the end of Day 1, the core encryption/decryption system was finally reliable. The Swiption Demon š Swiption and SwipDe took forever. . The idea sounds simple: letters rotate through multiple covers after a certain number of occurrences. . Actually implementing occurrence tracking, rotation logic, life values, multiple dictionaries, JSON storage, and decryption logic nearly broke my brain š . The funniest part? . After hours of struggling I realized I had overcomplicated everything. Since every cover uniquely maps to a letter, I could simply search through the dictionaries instead of tracking a ton of extra information. LIKE DAMN. Swiption is now fully functional and ended up becoming my coolest feature in the project. Packaging & Shipping Cleaned up the repository Improved README and documentation Fixed PyPI packaging issues Tested in fresh virtual environments Published releases Recorded final demos ⨠Project Complete Privournal is now a real, usable command-line journal encryptor. Thanks to: My brother for catching early logic flaws GPT for quick syntax rescues Everyone who followed the devlogs And myself for not giving up š **Privournal is shipped and ready for Stardance! ** Iād love your feedback once you try it. . This project taught me something exams never did : . Working religiously on something with all your heart to make it real. . Thank you for reading all 13 devlogs ā¤ļø . ⨠See you in the next project ⨠| Project Complete | Ready to Submit | š"}, {"post_id": 10031, "ts": "2026-06-16T16:23:14Z", "hours": 1.6072, "text": "Devlog #12 - IT WORKS! FINALLY! After an hour of debugging, EVERYTHING WORKS! -Encryption -Decryption -Uploading to & Fetching from the Database -Sign Up -Login . The only things that arenāt fully working yet are Swiption and Random Mode, and honestly thatās on me š. I got way too focused on making everything else work first AND GOD I had to improvise whole sections of the decryption logic, you wonāt believe it. . If you compare the code I committed before this and the code I committed today, I had to improvise so much! . I removed and added so much. My old decryption was code wrong, I mean the logic was on point but the syntax and a few other things were off thatās why it wasnāt working. . Some of the errors were genuinely silly, again š
. All my elifs somehow had the same condition, and people this is why you donāt copy paste conditions to save time (I still donāt know how I missed that) š„² . My traversal i was a string, and I kept accidentally treating it like an int iterator, I mean ugh. . A lot of bugs were literally sitting right in front of my eyes. . Some bugs were much bigger tho. One of the weirdest happened after I finally got decryption working - The decrypted text had way too many spaces between words. . After staring at it for a while, I noticed that the number of spaces was exactly the same as the number of unique letters in the text. Thatās when it hit me - the loop was continuing to run even after finding a match. Few ābreaksā later hehe, everything worked š . After Swiption and Random Mode, those 2 really arenāt done right now, Iām sorry I type so slow š . Yeah so after that Iāll focus on making the code look real pretty, like -Fixing my silly variable names -Comment notes ig? -Better spacing and formatting -Cleaning up extra files -Writing a proper README and project description . And yes⦠On the 13th Devlog, the project will be done done š¤š» . Note : I improvised all my previous devlogs, with proper format so that itās easier to read, you can tell me if itās better š . See you in the next one!"}, {"post_id": 9530, "ts": "2026-06-15T22:02:49Z", "hours": 3.1286, "text": "Devlog #11 - First Successful Test! Letās go!!! . First successful test done š . The database fetching works, the encryption flow works - it wasnāt working earlier tho (And I spent an hour finding errors, like iād run it again n again and also ended up rewriting portions, like my Advanced Encyption code was all messed up š) . But yes, now itās working, iām sure there are a couple more errors but iām on my way to fix em! . And yk some of the errors were so silly - I had written input(āEnter cover forā,x), and damn i failed to realise what the issue was. . Then after a lot of trying I asked GPT and it said itās cuz input() can only have one argument in the braces š
. A lot of other errors too were like me getting all confused btw variable names, function not being global and so on. . But yeah, one at a time i fixed em, fixed the code and now only the refining of the code and some other bugs remain. . And um I had said iād do it in 10 devlogs, but ah now it looks like 12th would be the last one. . But hey, the more the better, ig? š . See ya in the next devlog!"}, {"post_id": 9123, "ts": "2026-06-15T08:21:26Z", "hours": 4.0792, "text": "Devlog #10 - A Slight Setback This is going to be the biggest devlog. And this oneās gonna be a disappointing one š„² . First of all, I was talking to my brother and he asked such a good question - It pointed to a flaw which I didnāt notice at all. . Letās say thereās a word āamā in the journal, aās cover is 1 and mās cover is 27 (so am = 127). Now cuz thereās not spacing the decryption code will actually traverse thru each of number at a time in the encrypted text (127), so itāll literally convert 1 and then 2 and then 7 separately. This was such a major flaw in my logic and Iām still agonizing internally over the fact that my eyes missed it. . But ah itās ok, Iām fixing that by simply making adding a trailing space after the cover to separate each letterās cover. . There was so much running and errors and staring at screen and all that. . Another thing I noticed is that in Advanced Encryption when the user will choose covers for 52 letters, he might accidentally repeat a cover - which obvi will make it impossible to distinguish btw 2 letters. So I gotta add each cover to a list and then every time the user adds a cover iāll see if itās already there in the list or not. . Now these flaws I got to know when I was talking to my brother, and it was past midnight. So almost immediately after waking up I was onto fixing these flaws, and itās in progress :) . Apart from that, Iāve been refining the code (Found some silly errors in functions) and fixing more logic issues. . Earlier the Encryption Key that I was using to decrypt, it was a dictionary - with the keys as letters and values as the cover. So before uploading them to the db table, I converted them into text. But then while fixing decryption code, I did tried dict(the string key) and later found out that it all doesnāt work like that, the syntax. . I checked online, asked GPT, he suggested that I use the json module, and so I did. Json made it pretty easy, now the conversion was smooth and 2 liner. . Also I fixed all the login/signup system, it works as smooth as butter now Hehe . Iād say the main issue wasnāt the code it was following where am I. . Like cuz there are so many functions and steps and paths that I was getting overwhelmed (plus the code is like 600 lines), so I basically carefully went thru each line of code and arranged each function in an order and side by side made the final flowchart (It made following the code super easy and looks cool tbh) - But yes thatās hectic work right there. . Now after all that⦠Does the code run? HELL NO IT DOESNT! . Itās still showing 21 errors š Plus, Swiptionās still left. . So right now, Iām trying to fix the flaws and errors and get this code up and running without Swiption, once it is smooth then at the end I can code Swiption into it. . See ya in the next devlog!"}, {"post_id": 8726, "ts": "2026-06-14T14:26:44Z", "hours": 1.1836, "text": "Devlog #9 - This was unexpected⦠Turns out there were some issues in the decryption function. It completely ignored spaces while decrypting, which definitely wasnāt ideal š . Iāve fixed that tho. . Also I remade the tables in database with much more info such as date of encryption and email (for forgot password purposes) . And this code was getting too long, like more than 400 lines long. . So, Iāve started splitting things into different files to keep everything organized. Db code has its own file, big functions like AdvEn() have their own file, and the same goes for Swiption and Random Encryption logic. . Targetās to finish the code tonight. . Thanks for reading!"}, {"post_id": 8602, "ts": "2026-06-14T09:32:39Z", "hours": 1.1364, "text": "Devlog #8 - The Eights. . So this would be Privournalās 8th devlog, and this one feels kinda special :) . My birthday falls on an 8th too, and I just love the number 8. . Anyways, I was actually supposed to be done with the Swiption feature by now, but I just couldnāt help myself and started working on the Random Encryption feature. . Reasonās that it just came to me - . Why not make Random Encryption available for both Advanced Encryption AND Swiption too?? . This would make the whole Encryption process super fast if some user doesnāt want to manually encrypt each letter. So Iām onto that, then Iāll immediately look into Swiption. . Then finally Iāll refine the whole code and just go through all the variables, functions and rename them if needed (Iām one of those people who name the variable something silly and forget what it was for š) . Iāve also started mapping out the overall visual flow of Privournal cuz it was getting a bit confusing. . Iām thinking abt wrapping this project up in about 12 devlogs, and then launching it. . You can also check out the GitHub - Iāve been committing code changes on it regularly :) . Thanks for reading!"}, {"post_id": 8359, "ts": "2026-06-13T21:56:30Z", "hours": 1.7153, "text": "Devlog #7 - Almost There! Only the Swiption feature remains! . Iāve also been thinking about adding another cool feature where the covers are randomly chosen using Pythonās random module. The idea is that itāll be added in Custom Encryption. . Also, my bad š . I sometimes refered to the Custom Encryption as Advanced Encrytion, that might confuse you - but iāll be consistent with names now. Itās just that itās the start and so many features and ideas just mush into my head š . Once Swiption is done, the Python version should basically be mostly complete, and then itāll be time for da next step . Getting all this on a website, tho that is gonna be really difficult for me, I really donāt know how to make websites š„². . Not gonna lie, that part scares me a a lot cuz I donāt wanna use AI for the website š . I really donāt know much about web development, but I guess thatās part of building a project. You learn whatever you need as you go. . Thank you so much for reading these devlogs tho :) . Hopefully tmrw the code will be done and Iāll be one step closer to completing Privournal!"}, {"post_id": 8152, "ts": "2026-06-13T16:24:59Z", "hours": 1.0783, "text": "Devlog #6 - Advanced Encryption! Pheww, this part took some effort! . Today I worked on the main encryption logic for Advanced Encryption, and after a lot of thinking, coding, testing, and rethinking, I finally got the foundation for it down :) . This is one of the core features of Privournal, so it feels really good seeing it slowly come together. . That said, this is only a small win . The real challenge is gonna be the āSwiptionā feature. Bet Swiption is gonna take half my brain cells š"}, {"post_id": 8096, "ts": "2026-06-13T14:51:13Z", "hours": 0.4681, "text": "Devlog #5 - Database Established! . Now the basic outline has to be perfected, with each and every thing being functional. . After spending some time figuring out SQL, databases, connections, and all that stuff, I finally managed to get Python talking to the database successfully :) . Seeing actual records being fetched felt pretty satisfying not gonna lie. For now, the goalās Add features and make everything functional Connect everything together Improve the overall structure On the way to do that!"}, {"post_id": 8033, "ts": "2026-06-13T12:07:47Z", "hours": 0.9758, "text": "Devlog #4 - Still on the Db thing . Hehe, my highschool Python-SQL interface notes are coming in handy! . When I was studying this stuff, I honestly didnāt think Iād ever end up using most of it cuz it seemed too basic Turns out I was wrong :) . Since Privournal is gonna need a database for account credentials and all that, Iāve started revising my old notes and figuring out how everything fits together. . Letās see how this goes!"}, {"post_id": 7690, "ts": "2026-06-12T21:00:25Z", "hours": 0.6611, "text": "Devlog #3 - The Planās Shape Guys! . Errors fixed and a basic outline has been made (This time on a paper Hehe) . AND iāve thought about how iām gonna go about it! . Iāve also spent some time thinking about how Iām actually gonna build this thing. . Iāll have to make a sql database ig (For account credentials and encryption details) and link it to my python code. Iām still new so iām not sure if the sql database method for keeping records is how the real companies operate, but still seems pretty nice. . And I mean these are journals that weāre talking about, - so security and privacy matter a lot. . Tho my whole idea and code is that the actual journal entry is never stored. Only the encryption sequence and logic is. . That way, even if some dummy somehow got access to the database, they wouldnāt find the journal itself (Hehe canāt outsmart me) . For now, the plan pretty clear: Finish the Python main code Get encryption working properly Add database support Convert it into a website Well, thatās it ig. . Iām gonna go and tmrw complete the whole thing in python and then yes - hopefully convert it into a website :)"}, {"post_id": 7639, "ts": "2026-06-12T19:21:01Z", "hours": 0.9731, "text": "Devlog #2 - The First Error and an Outline . Ran into the first error, phewww! . Honestly, had it coming - things were going way too smoothly for a rather newbie like me š . I was working on the account system and trying to get the signup and login flow working when I hit the error. I also created a basic outline of flow (In my mind š
) . Spent a good chunk of time staring, retracing my code, and trying to figure out what exactly I had written wrong. But yes, Iām on it!"}, {"post_id": 7568, "ts": "2026-06-12T17:29:14Z", "hours": 0.5239, "text": "Devlog #1 - The Beginning . Today wasnāt about building features but about getting everything ready. . I finished setting up the Github thing (Took me an hour lol), cleaned things up, and wrote the first version of the README. . It might not seem like much, but damn did it feel so hectic, maybe cuz itās my first time working on a real software project :) . After the setup, I finally started writing the core code. . Right now itās just the foundation and an outline that Iāve set out to achieve :) . The journey begins!"}]...
|
Title: Privournal by @Manonit | Stardance
Devlogs Title: Privournal by @Manonit | Stardance
Devlogs:
Devlog #1 - The Beginning . Today wasnāt about building features but about getting everything ready. . I finished setting up the Github thing (Took me an hour lol), cleaned things up, and wrote the first version of the README. . It might not seem like much, but damn did it feel so hectic, maybe cuz itās my first time working on a real software project :) . After the setup, I finally started writing the core code. . Right now itās just the foundation and an outline that Iāve set out to achieve :) . The journey begins!
Devlog #2 - The First Error and an Outline . Ran into the first error, phewww! . Honestly, had it coming - things were going way too smoothly for a rather newbie like me š . I was working on the account system and trying to get the signup and login flow working when I hit the error. I also created a basic outline of flow (In my mind š
) . Spent a good chunk of time staring, retracing my code, and trying to figure out what exactly I had written wrong. But yes, Iām on it!
Devlog #3 - The Planās Shape Guys! . Errors fixed and a basic outline has been made (This time on a paper Hehe) . AND iāve thought about how iām gonna go about it! . Iāve also spent some time thinking about how Iām actually gonna build this thing. . Iāll have to make a sql database ig (For account credentials and encryption details) and link it to my python code. Iām still new so iām not sure if the sql database method for keeping records is how the real companies operate, but still seems pretty nice. . And I mean these are journals that weāre talking about, - so security and privacy matter a lot. . Tho my whole idea and code is that the actual journal entry is never stored. Only the encryption sequence and logic is. . That way, even if some dummy somehow got access to the database, they wouldnāt find the journal itself (Hehe canāt outsmart me) . For now, the plan pretty clear: Finish the Python main code Get encryption working properly Add database support Convert it into a website Well, thatās it ig. . Iām gonna go and tmrw complete the whole thing in python and then yes - hopefully convert it into a website :)
Devlog #4 - Still on the Db thing . Hehe, my highschool Python-SQL interface notes are coming in handy! . When I was studying this stuff, I honestly didnāt think Iād ever end up using most of it cuz it seemed too basic Turns out I was wrong :) . Since Privournal is gonna need a database for account credentials and all that, Iāve started revising my old notes and figuring out how everything fits together. . Letās see how this goes!
Devlog #5 - Database Established! . Now the basic outline has to be perfected, with each and every thing being functional. . After spending some time figuring out SQL, databases, connections, and all that stuff, I finally managed to get Python talking to the database successfully :) . Seeing actual records being fetched felt pretty satisfying not gonna lie. For now, the goalās Add features and make everything functional Connect everything together Improve the overall structure On the way to do that!
Devlog #6 - Advanced Encryption! Pheww, this part took some effort! . Today I worked on the main encryption logic for Advanced Encryption, and after a lot of thinking, coding, testing, and rethinking, I finally got the foundation for it down :) . This is one of the core features of Privournal, so it feels really good seeing it slowly come together. . That said, this is only a small win . The real challenge is gonna be the āSwiptionā feature. Bet Swiption is gonna take half my brain cells š
Devlog #7 - Almost There! Only the Swiption feature remains! . Iāve also been thinking about adding another cool feature where the covers are randomly chosen using Pythonās random module. The idea is that itāll be added in Custom Encryption. . Also, my bad š . I sometimes refered to the Custom Encryption as Advanced Encrytion, that might confuse you - but iāll be consistent with names now. Itās just that itās the start and so many features and ideas just mush into my head š . Once Swiption is done, the Python version should basically be mostly complete, and then itāll be time for da next step . Getting all this on a website, tho that is gonna be really difficult for me, I really donāt know how to make websites š„². . Not gonna lie, that part scares me a a lot cuz I donāt wanna use AI for the website š . I really donāt know much about web development, but I guess thatās part of building a project. You learn whatever you need as you go. . Thank you so much for reading these devlogs tho :) . Hopefully tmrw the code will be done and Iāll be one step closer to completing Privournal!
Devlog #8 - The Eights. . So this would be Privournalās 8th devlog, and this one feels kinda special :) . My birthday falls on an 8th too, and I just love the number 8. . Anyways, I was actually supposed to be done with the Swiption feature by now, but I just couldnāt help myself and started working on the Random Encryption feature. . Reasonās that it just came to me - . Why not make Random Encryption available for both Advanced Encryption AND Swiption too?? . This would make the whole Encryption process super fast if some user doesnāt want to manually encrypt each letter. So Iām onto that, then Iāll immediately look into Swiption. . Then finally Iāll refine the whole code and just go through all the variables, functions and rename them if needed (Iām one of those people who name the variable something silly and forget what it was for š) . Iāve also started mapping out the overall visual flow of Privournal cuz it was getting a bit confusing. . Iām thinking abt wrapping this project up in about 12 devlogs, and then launching it. . You can also check out the GitHub - Iāve been committing code changes on it regularly :) . Thanks for reading!
Devlog #9 - This was unexpected⦠Turns out there were some issues in the decryption function. It completely ignored spaces while decrypting, which definitely wasnāt ideal š . Iāve fixed that tho. . Also I remade the tables in database with much more info such as date of encryption and email (for forgot password purposes) . And this code was getting too long, like more than 400 lines long. . So, Iāve started splitting things into different files to keep everything organized. Db code has its own file, big functions like AdvEn() have their own file, and the same goes for Swiption and Random Encryption logic. . Targetās to finish the code tonight. . Thanks for reading!
Devlog #10 - A Slight Setback This is going to be the biggest devlog. And this oneās gonna be a disappointing one š„² . First of all, I was talking to my brother and he asked such a good question - It pointed to a flaw which I didnāt notice at all. . Letās say thereās a word āamā in the journal, aās cover is 1 and mās cover is 27 (so am = 127). Now cuz thereās not spacing the decryption code will actually traverse thru each of number at a time in the encrypted text (127), so itāll literally convert 1 and then 2 and then 7 separately. This was such a major flaw in my logic and Iām still agonizing internally over the fact that my eyes missed it. . But ah itās ok, Iām fixing that by simply making adding a trailing space after the cover to separate each letterās cover. . There was so much running and errors and staring at screen and all that. . Another thing I noticed is that in Advanced Encryption when the user will choose covers for 52 letters, he might accidentally repeat a cover - which obvi will make it impossible to distinguish btw 2 letters. So I gotta add each cover to a list and then every time the user adds a cover iāll see if itās already there in the list or not. . Now these flaws I got to know when I was talking to my brother, and it was past midnight. So almost immediately after waking up I was onto fixing these flaws, and itās in progress :) . Apart from that, Iāve been refining the code (Found some silly errors in functions) and fixing more logic issues. . Earlier the Encryption Key that I was using to decrypt, it was a dictionary - with the keys as letters and values as the cover. So before uploading them to the db table, I converted them into text. But then while fixing decryption code, I did tried dict(the string key) and later found out that it all doesnāt work like that, the syntax. . I checked online, asked GPT, he suggested that I use the json module, and so I did. Json made it pretty easy, now the conversion was smooth and 2 liner. . Also I fixed all the login/signup system, it works as smooth as butter now Hehe . Iād say the main issue wasnāt the code it was following where am I. . Like cuz there are so many functions and steps and paths that I was getting overwhelmed (plus the code is like 600 lines), so I basically carefully went thru each line of code and arranged each function in an order and side by side made the final flowchart (It made following the code super easy and looks cool tbh) - But yes thatās hectic work right there. . Now after all that⦠Does the code run? HELL NO IT DOESNT! . Itās still showing 21 errors š Plus, Swiptionās still left. . So right now, Iām trying to fix the flaws and errors and get this code up and running without Swiption, once it is smooth then at the end I can code Swiption into it. . See ya in the next devlog!
Devlog #11 - First Successful Test! Letās go!!! . First successful test done š . The database fetching works, the encryption flow works - it wasnāt working earlier tho (And I spent an hour finding errors, like iād run it again n again and also ended up rewriting portions, like my Advanced Encyption code was all messed up š) . But yes, now itās working, iām sure there are a couple more errors but iām on my way to fix em! . And yk some of the errors were so silly - I had written input(āEnter cover forā,x), and damn i failed to realise what the issue was. . Then after a lot of trying I asked GPT and it said itās cuz input() can only have one argument in the braces š
. A lot of other errors too were like me getting all confused btw variable names, function not being global and so on. . But yeah, one at a time i fixed em, fixed the code and now only the refining of the code and some other bugs remain. . And um I had said iād do it in 10 devlogs, but ah now it looks like 12th would be the last one. . But hey, the more the better, ig? š . See ya in the next devlog!
Devlog #12 - IT WORKS! FINALLY! After an hour of debugging, EVERYTHING WORKS! -Encryption -Decryption -Uploading to & Fetching from the Database -Sign Up -Login . The only things that arenāt fully working yet are Swiption and Random Mode, and honestly thatās on me š. I got way too focused on making everything else work first AND GOD I had to improvise whole sections of the decryption logic, you wonāt believe it. . If you compare the code I committed before this and the code I committed today, I had to improvise so much! . I removed and added so much. My old decryption was code wrong, I mean the logic was on point but the syntax and a few other things were off thatās why it wasnāt working. . Some of the errors were genuinely silly, again š
. All my elifs somehow had the same condition, and people this is why you donāt copy paste conditions to save time (I still donāt know how I missed that) š„² . My traversal i was a string, and I kept accidentally treating it like an int iterator, I mean ugh. . A lot of bugs were literally sitting right in front of my eyes. . Some bugs were much bigger tho. One of the weirdest happened after I finally got decryption working - The decrypted text had way too many spaces between words. . After staring at it for a while, I noticed that the number of spaces was exactly the same as the number of unique letters in the text. Thatās when it hit me - the loop was continuing to run even after finding a match. Few ābreaksā later hehe, everything worked š . After Swiption and Random Mode, those 2 really arenāt done right now, Iām sorry I type so slow š . Yeah so after that Iāll focus on making the code look real pretty, like -Fixing my silly variable names -Comment notes ig? -Better spacing and formatting -Cleaning up extra files -Writing a proper README and project description . And yes⦠On the 13th Devlog, the project will be done done š¤š» . Note : I improvised all my previous devlogs, with proper format so that itās easier to read, you can tell me if itās better š . See you in the next one!
Devlog #13 - ITāS DONE DONE! The Final Chapter. FINALLY. After two intense days and 16+ hours of grinding, Privournal is officially complete and ready for Stardance! šš OH AND Yeah, itās been two days - Long time no see š . Sorry for disappearing without posting Devlog #13 š„² . These last 16+ hours were so packed with debugging, packaging, testing, and polishing that I kept postponing the devlog. So this one covers the entire final stretch. . Btw hey Iāll upload the clean Flowchart on Git repo, and yk I was gonna write a LOT here with complete details, but damn thereās a limit. Well itās oki iāll add a list of all my devlogs to the repo too :) What Happened? I thought Devlog #12 was the āeverything worksā moment, but the final stretch turned out to be the work. Audited every function in the codebase Fixed dozens of lingering bugs Cleaned up the entire code Updated the README 10+ times Set up PyPI packaging and releases Recorded asciinema demos (Took enormous time š) Added prettier output/interface functions Tested every scenario I could think of Major Change: MySQL ā SQLite One of the biggest changes was moving away from MySQL. . Originally, Privournal used MySQL with accounts and a shared database. Later I realized that requires a server, hosting, maintenance, and introduces privacy concerns. . So I redesigned everything around SQLite. . Benefits: Fully offline More private Easier installation Simpler deployment Probably the biggest architectural change in the entire project. Biggest Bugs Fixed Login/signup flow issues Missing database commits Foreign key linking problems JSON serialization/loading bugs The infamous āextra spaces everywhereā decryption bug Variable scope and traversal issues Randomised Mode integration By the end of Day 1, the core encryption/decryption system was finally reliable. The Swiption Demon š Swiption and SwipDe took forever. . The idea sounds simple: letters rotate through multiple covers after a certain number of occurrences. . Actually implementing occurrence tracking, rotation logic, life values, multiple dictionaries, JSON storage, and decryption logic nearly broke my brain š . The funniest part? . After hours of struggling I realized I had overcomplicated everything. Since every cover uniquely maps to a letter, I could simply search through the dictionaries instead of tracking a ton of extra information. LIKE DAMN. Swiption is now fully functional and ended up becoming my coolest feature in the project. Packaging & Shipping Cleaned up the repository Improved README and documentation Fixed PyPI packaging issues Tested in fresh virtual environments Published releases Recorded final demos ⨠Project Complete Privournal is now a real, usable command-line journal encryptor. Thanks to: My brother for catching early logic flaws GPT for quick syntax rescues Everyone who followed the devlogs And myself for not giving up š **Privournal is shipped and ready for Stardance! ** Iād love your feedback once you try it. . This project taught me something exams never did : . Working religiously on something with all your heart to make it real. . Thank you for reading all 13 devlogs ā¤ļø . ⨠See you in the next project ⨠| Project Complete | Ready to Submit | š
##Devlog #14 - The Reviewer Arc š„² . Well⦠. The reviewer found some issues š . So I went back and tested basically the ENTIRE project again. . While testing, I found and fixed a bunch of errors, especially in Advanced Encryption. I also added a lot of fallback checks throughout the code so Privournal doesnāt randomly decide to crash anymore š . I also improved the decryption flow. . Earlier users had to select journals using IDs, now they can simply choose them by name, which feels way cleaner. . Another addition was a user guide in menu. I was short on time and it was a no brainer, so I used Claude to help generate the guide content and then integrated it into Privournal. The goal was simply to make the different encryption modes easier to understand :) . Apart from code changes, I also polished the project page, uploaded a sample flowchart, improved formatting and timing, and recorded a completely new asciinema demo PLUS I updated the README too. . Then came final testing, packaging, uploading the latest release, and requesting review again š¤š» . Hopefully Privournal passes thru this time š . Thank you : )
Devlog 15! Itās done. Phew. Finally, Privournal is DONE. Complete, everythingās perfect. In this final version Iāve made so many improvements! Instead of using time.sleep() to give pauses/time to copy the details, now the users can copy and paste encrypted text and its key without a time limit, and then they can simply press Enter to move ahead. I also made HUGE changes to the code. Earlier, the code used to run and at multiple steps ask for login/signup, which was fine but it was confusing. Now the first page is for login/signup, then the rest of the code flows smoothly accordingly. This restructuring required writing many parts of the code again and breaking a lot of functions into 2 parts. I also renamed some variables. I also worked on spacing and formatting. Now the user details are printed cleanly in a table. Overall, the code outputs are much more uniform. I made a new ASCII recording. It is yet to be updated on my GitHub, though. Iāve also published this new version on PyPI. If you had already installed Privournal, you can just update it. Now the main thing. Iām going to make a Website for Privournal where users wouldnāt need to install anything and can just go straight to encrypting or decrypting their journals. This version will still exist, though. Itāll be a rather Retro CLI version for people who like it this way. Phew. Iāll work on that now.
Devlog 16! ā Okay, NOW Itās Done. š Phew. I thought Privournal was finally finished, but while making the final ASCII recording, I found a bunch of small errors (Some was huge), inconsistencies and table issues that I had to fix. What I worked on: Added two new functions: Show Keys and View Account . Show Keys lets users view all their saved encryption keys. View Account displays their account details neatly in a table. Fixed several encryption and decryption bugs , including issues with journal selection, menu choices and input validation. Fixed problems with database values and journal data being handled incorrectly. Improved table formatting, spacing and alignment throughout the program. Cleaned up various small inconsistencies and errors that appeared during full end-to-end testing. Made the new ASCII recording . There was some old test data already stored, which was causing confusing duplicate entries and messing up the tables. After clearing that out, everything worked properly. And finally⦠The entire thing worked perfectly. š Most of this Devlog was about fixing the small things rather than adding huge new features, but it made Privournal more consistent and reliable.
Ships:
I built Privournal, a command-line journal encryptor that allows users to encrypt and decrypt journal entries locally on their own device. Because for me, someone reading my journal is a legit nightmare, and Privournal is something I can use to keep my digital journals secure. For me thatās a clear quality-of-life improvement : ) Write your journal anywhere (Notes, Notion, etc), paste it into Privournal, get back unreadable text, paste that back into your app. No journal content is ever stored - only the encryption key, and that too locally, if you make an account. To read it yourself you can again head to Privournal and decrypt it! It supports multiple encryption modes, including Basic Encryption, Advanced Encryption, Randomized Encryption, and Swiption - a dynamic encryption system that changes a letterās cover after a particular number of occurrences, making it impossible to crack. The biggest challenge was implementing Swiption and its decryption logic. Managing occurrence tracking, rotating covers, JSON storage, database integration, and reliable decryption took multiple iterations and a lot of debugging. I also migrated the project from a MySQL-based architecture to SQLite after realizing a shared database conflicted with the goal of being fully offline and private. Iām most proud of turning an idea into a complete, usable package that can be installed through PyPI. Iāve never worked on something so religiously on something of this complexity. The project ended up being over 1400 lines of code and taught me a huge amount about python, databases, GitHub and packaging, debugging, and obviously logical thinking. Iāve never worked on something so religiously on something of this complexity. 3 Major Quality-of-Life Improvements : Zero-setup local encryption - Works completely offline with automatic SQLite database. No server or complicated config needed. Powerful & flexible encryption - Multiple modes + Swiption (dynamic rotating covers) makes it much stronger than simple substitution ciphers. Seamless workflow - Write anywhere -> encrypt -> paste back -> decrypt easily with account or manual key. Perfect for daily journaling : ) Try creating an account (or continue without an account), encrypting a journal entry, saving it, and then decrypting it again. Swiption and Randomised Modes are the most interesting and secure features to experiment with. To test it, run these on terminal : pip install privournal python import MainCode MainCode.start() Thank you so much for reading! : )
I made Privournal, a retro CLI application for private journaling and custom text encryption featuring basic ciphers, advanced encryption (Swiption, Randomised, Manual Modes Hehe), and new features like Show Keys and View Account. Pheww youāre gonna love this if youāve people trying to read your journals š The hardest part was restructuring the whole flow so as to make it less repetitive and cleaner , fixing CLI table alignment glitches, and honestly, if you saw my last ship youād know that the Swiption feature I made gave me a pretty tough time, Lol. Though Iām really proud of creating a seamless terminal workflow and getting it published live on PyPI as well as GitHub, this is one of the few things Iāve worked on and completed in my life. To test it out, run pip install āupgrade privournal, and type privournal in your terminal, and try encrypting and immediately decrypting a short sentence with or without an account!...
|
1793613221.211544
|
1793699621.211544
|
|
8455
|
Wills Bot! by @Gooderswills | Stardance
|
Gooderswills
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T12:54:56Z", "hours": 0.0, "multiplier": 1.3, "payout": 0, "blessing": "neutral", "text": "I followed the slack bot tutorial, added some new commands and used javascript and sshād into a server for the first time. This is my first project", "repo": "https://github.com/Gooderswills/Wbot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0266FRGV"}]...
|
[{"post_id": 3708, "ts": "2026 [{"post_id": 3708, "ts": "2026-06-06T19:18:17Z", "hours": 0.3494, "text": "I followed the tutorial completely, got the bot on a nest server and now it is fully functional on slack, I also added another command to it and then updated the server with the new code reflected"}]...
|
Title: Wills Bot! by @Gooderswills | Stardance
De Title: Wills Bot! by @Gooderswills | Stardance
Devlogs:
I followed the tutorial completely, got the bot on a nest server and now it is fully functional on slack, I also added another command to it and then updated the server with the new code reflected
Ships:
I followed the slack bot tutorial, added some new commands and used javascript and sshād into a server for the first time. This is my first project...
|
1793613222.4721844
|
1793699622.4721844
|
|
16190
|
Apollo mission simulator by @prajithvishnur | Star Apollo mission simulator by @prajithvishnur | Stardance...
|
prajithvishnur
|
1
|
1.0
|
15
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T02:48:52Z", "hours": 1.0, "multiplier": 15.2, "payout": 15, "blessing": "neutral", "text": "I think I have finished version one of the game. I am now going to ship. I hope you all enjoy it, and I canāt wait for the feedback!!!", "repo": "https://github.com/prajith-vishnu/apollo13-mission-critical", "demo": "https://prajith-vishnu.github.io/apollo13-mission-critical/"}]...
|
[{"post_id": 8891, "ts": "2026 [{"post_id": 8891, "ts": "2026-06-14T20:06:57Z", "hours": 0.5925, "text": "Got a lot of scenarios for the game built. Itās going pretty well, also hosting it on git."}, {"post_id": 6893, "ts": "2026-06-11T15:40:09Z", "hours": 0.3906, "text": "created a start screen that i think looks rlly cool. hope to turn this into an awesome space game."}]...
|
Title: Apollo mission simulator by @prajithvishnur Title: Apollo mission simulator by @prajithvishnur | Stardance
Devlogs:
created a start screen that i think looks rlly cool. hope to turn this into an awesome space game.
Got a lot of scenarios for the game built. Itās going pretty well, also hosting it on git.
Ships:
I think I have finished version one of the game. I am now going to ship. I hope you all enjoy it, and I canāt wait for the feedback!!!...
|
1793613223.5932424
|
1793699623.5932424
|
|
22958
|
Tung tung tung sahur by @Arjav | Stardance
|
Arjav
|
1
|
4.23
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T11:30:00Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Ship message", "repo": "https://github.com/arjav0703/site", "demo": "https://www.youtube.com/watch?v=G9-pi6_15fI"}]...
|
[{"post_id": 37126, "ts": "202 [{"post_id": 37126, "ts": "2026-07-29T16:45:31Z", "hours": 0.8603, "text": "sahur"}, {"post_id": 21418, "ts": "2026-07-03T10:59:27Z", "hours": 1.3686, "text": "ig vro"}, {"post_id": 12473, "ts": "2026-06-20T11:27:36Z", "hours": 1.5417, "text": "woah test devlog"}]...
|
Title: Tung tung tung sahur by @Arjav | Stardance
Title: Tung tung tung sahur by @Arjav | Stardance
Devlogs:
woah test devlog
ig vro
sahur
Ships:
Ship message...
|
1793613224.7484984
|
1793699624.7484984
|
|
34277
|
Gravity simulator by @Krys | Stardance
|
Krys
|
1
|
96.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T15:39:24Z", "hours": 96.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simulator of Gravity between bodies in space. The simulator is fully customizable, so you can change the mass of your objects, their positions and even their shades they left behind. You can create any simulation you want.", "repo": "https://github.com/krysjank/Gravity-simulator", "demo": "https://scratch.mit.edu/projects/1376605963/"}]...
|
[{"post_id": 58940, "ts": "202 [{"post_id": 58940, "ts": "2026-08-31T14:36:41Z", "hours": 5.1353, "text": "Final adjustements, no errors and no bugs. The project is finally ready to be sent. The only things that I had to compromise on were the Save and Load function. Cause due to scratchās simplicity, it couldnāt subtract all of my variables at once. But nonetheless I was working on this project really hard and I hope it comes out great."}, {"post_id": 58726, "ts": "2026-08-31T08:41:44Z", "hours": 6.1681, "text": "Time flew by so fast last six hours. Iām deep in the Save and Load functions right now. It isnāt just designing buttons and texts, I also need to make sure the buttons react properly and with no error. I created new room for load screen too. If the Save and Load functions will come up right, itās gonna be huge."}, {"post_id": 54026, "ts": "2026-08-24T19:35:22Z", "hours": 4.0647, "text": "I added two more buttons for Save/Import option, so the user could temporarily save his gravity scenes to show them to someone later. I was also facing problems about resetting the second half of the settings. There was a bug associated with a very early ending of an event that affects other events, resulting in no reaction."}, {"post_id": 42744, "ts": "2026-08-07T16:52:07Z", "hours": 4.1339, "text": "Today, I implemented the option to decide if the x or y positions of each body could be shown. I located it into the second page of settings. It was kind of hard to figure out how to effect six different checkboxes in one single sprite at once. Next time, Iāll add more options for the users.:)))"}, {"post_id": 42532, "ts": "2026-08-07T10:26:54Z", "hours": 4.0836, "text": "Today, I added a new skip button for users that already played gravity simulator. By pressing the button they could skip the tutorial and head on straight to the simulation."}, {"post_id": 42089, "ts": "2026-08-06T17:32:29Z", "hours": 4.1506, "text": "AFTER COUNTLESS HOURS OF DIFFERENT CHANGES, I FINALLY MANAGED TO FIGURE OUT THE SOLUTION FOR THE PROBLEM WITH POSITION MEMORY OF THE BODIES. I redesigned the structure of the code and added some new blocks to it. This major improvement results in a version with literally no bugs in all fields. I can thankfully begin upgrading the settings menu I started making before, because now, I have a solid base for future improvements. THANK GOD I FIGURED IT OUT :)))))))"}, {"post_id": 41870, "ts": "2026-08-06T10:49:36Z", "hours": 4.0669, "text": "My only chance is to go compare different versions of the code, so Iām working on two of the codes at once. The bug that the bodies donāt stay at their positions after returning back to the menu is I think only solvable by separating the code and going through all of it."}, {"post_id": 41388, "ts": "2026-08-05T15:50:18Z", "hours": 4.0739, "text": "Oh daaamn, this session was so annoying!! I was facing crucial bugs in the main simulation, I tried everything just to solve it and I couldnāt figure out why it was happening for 2 whole hours. Then I had a lunchbreak and I returned to programming and I restarted my slow compā¦. The program was out of nowhere working and now I came across different problems, at the time I solved the buttons problems. I canāt no moreā¦ā¦. :(((((( Once I solve a problem, two others come alive. Itās getting very hard for me."}, {"post_id": 40856, "ts": "2026-08-04T17:27:10Z", "hours": 8.1803, "text": "I succesfully implemented the menu for settings with functioning buttons(pic. 2). It took quite a lot of time to design. And as I was testing the whole application, I came across different bugs, for instance(pic. 1). It happens during the act of pressing the mouse and sliding between both of the next/back buttons and then letting the mouse down. Itās sadly still in process, I canāt figure it out right now."}, {"post_id": 40091, "ts": "2026-08-03T14:05:22Z", "hours": 4.1336, "text": "Today, I added a new button for settings, it comes with animation. I also fixed the problem with the little helper, cause it was lagging sometimes during the usage of it. It was a pain creating the sprocket design by the way ; )"}, {"post_id": 34284, "ts": "2026-07-24T21:12:31Z", "hours": 4.2681, "text": "So, I added the new version of gravity to all of the bodies that could move. The new versionās secret is, that its made in only one column. I also upgraded the small helper hidden in the left high corner. You can see its main code lower. I tested it and it reacts to all of the events it should respond to."}, {"post_id": 33979, "ts": "2026-07-24T11:10:26Z", "hours": 4.2872, "text": "I hope I solved the problem with the bodies sometimes not moving. I invented a new way how to act between pressing space and simulating gravity. The problem that they didnāt move was maybe because the simulation was divided into two programmed groups. One was activated when entering a certain room and the second activated later when pressing space. At least I hope so⦠I spent a lot of time going through the code and couldnāt find any other solution :("}, {"post_id": 33615, "ts": "2026-07-23T17:51:54Z", "hours": 4.1336, "text": "As I mentioned in previous devlog, I really had to invent a special sprite for each moving body. The shadow under the bodies collided with bodies, so I really didnāt have any different solution. There was also a bug in a cycle. It was about sending messages to other communicators more times than the loop actually looped. So I implemented this code to all of the special sprites for shadows (the code was different every single time)"}, {"post_id": 33428, "ts": "2026-07-23T11:12:06Z", "hours": 4.0333, "text": "I inicialized the gravity for the third body (oh yes, finaly) ā> It took me a lot of time, because the more bodies you have, the bigger amount of code is needed. But just as I tried it, I came across a different problem. Bodies collide not only between them, but also with the trajectories of the bodies. This got me really thinking. I might create for each trajectory a sprite."}, {"post_id": 33028, "ts": "2026-07-22T16:09:41Z", "hours": 4.0333, "text": "This time, my programming session was a brutal nightmare. I was trying to fix a very uncomfortable bug and it was hidden in the code below. As more than one sprites had this code, one was experiencing active condition and the second passive. I also upgraded the guide menu with a new design of the mass system."}, {"post_id": 32891, "ts": "2026-07-22T10:49:34Z", "hours": 4.1003, "text": "Now I added a ton of code to another ball, so it could interact with others. I also made a requirement if user wants the ball to move or not, so it could act just as gravity provider or even be attracted by the gravity too. Big changes will happen also to other bodies. See you later : )"}, {"post_id": 32425, "ts": "2026-07-21T16:33:36Z", "hours": 4.2006, "text": "I finally managed to finish the complete guide for users. I added a step-back button so everyone can return to the guide if they missed something. I also added a menu for giving speeds right from the start. It means that the simulations wonāt neccesarily be from stable positions. -> I hope I donāt need to mention the bug fixes everyone knows about :"}, {"post_id": 32274, "ts": "2026-07-21T10:42:31Z", "hours": 17.5858, "text": "I recently made a huge jump with the gravity simulator. I added a third body to interact with and I also added kind of a huge guide for the users. The most annoying thing to do was the debugging part. Itās always hard to find the roots of the problem. I hope this simulator āll get as much stardust as it can because IĀ“m working hard to get the results I want."}, {"post_id": 27697, "ts": "2026-07-13T14:12:02Z", "hours": 1.5503, "text": "Iām working on simulation between bodies in space. Today, I finally figured out how to do it for the first time. Months before I struggled to perform such a difficult physics simulation. I didnāt really ever understand how dx and dy works. So I tried it and it works pretty well even in scratch."}]...
|
Title: Gravity simulator by @Krys | Stardance
Dev Title: Gravity simulator by @Krys | Stardance
Devlogs:
Iām working on simulation between bodies in space. Today, I finally figured out how to do it for the first time. Months before I struggled to perform such a difficult physics simulation. I didnāt really ever understand how dx and dy works. So I tried it and it works pretty well even in scratch.
I recently made a huge jump with the gravity simulator. I added a third body to interact with and I also added kind of a huge guide for the users. The most annoying thing to do was the debugging part. Itās always hard to find the roots of the problem. I hope this simulator āll get as much stardust as it can because IĀ“m working hard to get the results I want.
I finally managed to finish the complete guide for users. I added a step-back button so everyone can return to the guide if they missed something. I also added a menu for giving speeds right from the start. It means that the simulations wonāt neccesarily be from stable positions. -> I hope I donāt need to mention the bug fixes everyone knows about :
Now I added a ton of code to another ball, so it could interact with others. I also made a requirement if user wants the ball to move or not, so it could act just as gravity provider or even be attracted by the gravity too. Big changes will happen also to other bodies. See you later : )
This time, my programming session was a brutal nightmare. I was trying to fix a very uncomfortable bug and it was hidden in the code below. As more than one sprites had this code, one was experiencing active condition and the second passive. I also upgraded the guide menu with a new design of the mass system.
I inicialized the gravity for the third body (oh yes, finaly) ā> It took me a lot of time, because the more bodies you have, the bigger amount of code is needed. But just as I tried it, I came across a different problem. Bodies collide not only between them, but also with the trajectories of the bodies. This got me really thinking. I might create for each trajectory a sprite.
As I mentioned in previous devlog, I really had to invent a special sprite for each moving body. The shadow under the bodies collided with bodies, so I really didnāt have any different solution. There was also a bug in a cycle. It was about sending messages to other communicators more times than the loop actually looped. So I implemented this code to all of the special sprites for shadows (the code was different every single time)
I hope I solved the problem with the bodies sometimes not moving. I invented a new way how to act between pressing space and simulating gravity. The problem that they didnāt move was maybe because the simulation was divided into two programmed groups. One was activated when entering a certain room and the second activated later when pressing space. At least I hope so⦠I spent a lot of time going through the code and couldnāt find any other solution :(
So, I added the new version of gravity to all of the bodies that could move. The new versionās secret is, that its made in only one column. I also upgraded the small helper hidden in the left high corner. You can see its main code lower. I tested it and it reacts to all of the events it should respond to.
Today, I added a new button for settings, it comes with animation. I also fixed the problem with the little helper, cause it was lagging sometimes during the usage of it. It was a pain creating the sprocket design by the way ; )
I succesfully implemented the menu for settings with functioning buttons(pic. 2). It took quite a lot of time to design. And as I was testing the whole application, I came across different bugs, for instance(pic. 1). It happens during the act of pressing the mouse and sliding between both of the next/back buttons and then letting the mouse down. Itās sadly still in process, I canāt figure it out right now.
Oh daaamn, this session was so annoying!! I was facing crucial bugs in the main simulation, I tried everything just to solve it and I couldnāt figure out why it was happening for 2 whole hours. Then I had a lunchbreak and I returned to programming and I restarted my slow compā¦. The program was out of nowhere working and now I came across different problems, at the time I solved the buttons problems. I canāt no moreā¦ā¦. :(((((( Once I solve a problem, two others come alive. Itās getting very hard for me.
My only chance is to go compare different versions of the code, so Iām working on two of the codes at once. The bug that the bodies donāt stay at their positions after returning back to the menu is I think only solvable by separating the code and going through all of it.
AFTER COUNTLESS HOURS OF DIFFERENT CHANGES, I FINALLY MANAGED TO FIGURE OUT THE SOLUTION FOR THE PROBLEM WITH POSITION MEMORY OF THE BODIES. I redesigned the structure of the code and added some new blocks to it. This major improvement results in a version with literally no bugs in all fields. I can thankfully begin upgrading the settings menu I started making before, because now, I have a solid base for future improvements. THANK GOD I FIGURED IT OUT :)))))))
Today, I added a new skip button for users that already played gravity simulator. By pressing the button they could skip the tutorial and head on straight to the simulation.
Today, I implemented the option to decide if the x or y positions of each body could be shown. I located it into the second page of settings. It was kind of hard to figure out how to effect six different checkboxes in one single sprite at once. Next time, Iāll add more options for the users.:)))
I added two more buttons for Save/Import option, so the user could temporarily save his gravity scenes to show them to someone later. I was also facing problems about resetting the second half of the settings. There was a bug associated with a very early ending of an event that affects other events, resulting in no reaction.
Time flew by so fast last six hours. Iām deep in the Save and Load functions right now. It isnāt just designing buttons and texts, I also need to make sure the buttons react properly and with no error. I created new room for load screen too. If the Save and Load functions will come up right, itās gonna be huge.
Final adjustements, no errors and no bugs. The project is finally ready to be sent. The only things that I had to compromise on were the Save and Load function. Cause due to scratchās simplicity, it couldnāt subtract all of my variables at once. But nonetheless I was working on this project really hard and I hope it comes out great.
Ships:
I made a simulator of Gravity between bodies in space. The simulator is fully customizable, so you can change the mass of your objects, their positions and even their shades they left behind. You can create any simulation you want....
|
1793613228.5604086
|
1793699628.5604086
|
|
51412
|
Wibei by @EVINJSUBIN | Stardance
|
EVINJSUBIN
|
1
|
21.64
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T09:37:07Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Wibei is a real-time 3D music visualizer built with Three.js and Web Audio API. It features reactive visualizer modes (Pulse Ring, Waveform, and 3D Grid), bloom glow themes, 3D mouse drag controls, YouTube search, live mic input, and local MP3 uploads.How to test Open https://wibei-production.up.railway.app/ Search for any song in the bottom right, click š¤ to use your mic, or click š to upload an MP3. Click & drag anywhere on the screen to rotate in 3D, and use the top dropdowns to switch styles (Pulse Ring, Wave, Grid) and themes.What I learned Learned how to use the Web Audio API (FFT frequency analysis) to drive 3D Three.js meshes, write smooth idle wave animations, configure bloom shaders, and build 3D mouse orbit controls.", "repo": "https://github.com/EVINJSUBIN/Wibei", "demo": "https://wibei.onrender.com/"}]...
|
[{"post_id": 61342, "ts": "202 [{"post_id": 61342, "ts": "2026-09-04T06:47:47Z", "hours": 10.9883, "text": "šļø Wibei Devlog: 3D Holographic Album Art & the VOID Overhaul Project: Wibei (3D Audio Spectrograph & Real-Time DSP Lab) Built for: Hack Club Stardance Creators: @EVINJSUBIN & @aamosm Repo: github.com/EVINJSUBIN/Wibei | Live: wibei.onrender.com š Elevating the Cockpit Audio visualization isnāt just about moving bars ā itās about tactile feedback, visual hierarchy, and immersive atmosphere. In this sprint, we overhauled Wibei into a commercial-grade glassmorphism workstation , added a 3D holographic album art core , wrote a zero-dependency ID3 tag parser , and redesigned our landing page in our signature VOID aesthetic. š 1. Commercial-Grade Glassmorphism Cockpit We replaced flat panels with an ergonomic, floating dual-deck hardware layout: Left Deck (Ingest): Quick-switch tabs for DEMOS , STREAM (YouTube/Spotify live audio), QUEUE (playlist management), and LOCAL (drag-and-drop). Right Deck (Synthesis & FX): Instant geometry matrix switching ( RING , WAVE , GRID , ORB ), real-time biquad muffler, sub-bass drive, nightcore tempo shifters, and camera auto-orbit. Floating Transport Bar: Ergonomic bottom bar with real-time master VU meter bars, peak telemetry ( dBFS ), elapsed timers, track metadata, and volume scrubber. Frosted Material System: Deep obsidian glass ( rgba(10, 10, 14, 0.72) ) with backdrop-filter: blur(28px) , subtle rim lighting, and responsive LED indicators. šæ 2. 3D Holographic Center Album Art In our RING (Pulse) visualizer, tracks with rich artwork now come to life in 3D: Hologram Disc: High-def circular disc ( CircleGeometry(4.2) ) with dark tinted glass backing and an audio-reactive neon border ring. Adaptive Gyro-Core: When artwork is present, the wireframe octahedron scales outward to 1.55x , orbiting as an open crystal gimbal cage. Without artwork (or on mic input), it docks back to its native 1.0x center scale. Vinyl Dynamics: Spins with bass-accelerated inertia, tilts dynamically in 3D pitch/roll, and pulses to sub-bass hits. š¦ 3. Zero-Dependency In-Browser ID3 Extractor To keep local playback instant without server uploads, we wrote id3.js from scratch: Direct binary parsing of ID3v2.3, ID3v2.4, and ID3v1 tags via ArrayBuffer slices. Extracts APIC frames into instant in-memory blob: URLs for album covers. Parses title, artist, album, and genre instantly with zero latency. š 4. The āVOIDā Aesthetic & Minimalist Landing Page Serious Void Default: Distraction-free interstellar abyss ( #050507 ), crisp starlight typography ( #f8fafc ), and titanium slate accents ( #8b95a5 ). Calibrated Bloom: Re-tuned UnrealBloomPass threshold to 0.82 ā eliminating blinding white glare while keeping geometry razor-sharp. Minimalist Landing Page: Clean terminal layout with a 1,800-star WebGL starfield and a 3D gyro-core that pulses with kinetic shockwaves on live DSP audition clicks! š» 100% Client-Side Engine Built entirely with vanilla JS, Three.js (r128), and native Web Audio API ā zero bulky UI frameworks, locked 60+ FPS, and zero-latency 32-bit floating DSP."}, {"post_id": 59649, "ts": "2026-09-01T15:50:39Z", "hours": 0.7556, "text": "ā” Wibei // 3D Audio Spectrograph & Real-Time DSP Lab Live Site: https://wibei.onrender.com | GitHub: EVINJSUBIN/Wibei Built for: Hack Club Stardance | Collaborators: @EVINJSUBIN & @aamosm š What We Built Wibei is an open-source web synthesizer and 3D audio spectrograph built with Three.js WebGL and the native Web Audio API . It lets anyone route audio, manipulate live DSP filter nodes, and render acoustic harmonics in 3D space with zero latency. ⨠Key Features Sound Shaper DSP Suite: Real-time 650Hz Lowpass Muffler (āclub bathroomā vibe), +16dB Bass Overdrive EQ, and 1.25x/0.85x Speed Modulator. 4 Spatial 3D Geometries: 128-bar Radial Pulse Ring, Waveform Ribbon, Isometric 3D Voxel Matrix, and the new harmonic Pulsar Sphere . Beat Drop Shockwaves: Sub-bass transient detector triggering expanding 3D ring particles on drops. Cinematic Auto-Pilot Cam: Dynamic drone camera orbiting to musical energy. Universal Audio Ingest: Instant lossless stems, fullscreen drag-and-drop MP3/WAV, live microphone, and YouTube stream engine. Hall of Fame: Live GitHub telemetry showcasing community contributors. 100% client-side WebGL & DSP running at 60 FPS."}, {"post_id": 58898, "ts": "2026-08-31T13:50:16Z", "hours": 4.8986, "text": "⨠Whatās new:Clean Brand Pill: Removed the gold dot from the top-left logo pill. It now features clean, minimal typography (wibei v1.0).Interactive Mini Player:Added a Minimize Button (ā) on the right side of the player bar.Clicking it collapses the large deck into a floating Mini Player Pill in the bottom corner (showing the album art, track title, animated mini EQ visualizer, play/pause toggle, and expand button).Expanding it restores the full control deck seamlessly.āGetting Startedā Guide Modal (Guide):Added an interactive onboarding modal accessible via the top-right Guide button.Explains how to play audio (YouTube, Demos, Mic, Uploads), how to orbit in 3D, and how to switch visualizer shapes/bloom themes.Includes a 1-click āā” Play Synthwave Demoā button right inside the guide for instant reviewer onboarding.Animated Mini EQ Bars: Added dynamic dancing EQ waveform bars right next to the song title when audio is playing."}, {"post_id": 57193, "ts": "2026-08-29T09:34:55Z", "hours": 1.1614, "text": "š Final Ship: Wibei is Live! š§āØAfter hours of refining the audio DSP pipeline, tweaking Three.js shaders, and perfecting the UI, Wibei is officially shipped!Try it out live here: š https://wibei-production.up.railway.app/(Open it up, search your favorite track or click the š¤ mic / š upload button to watch it pulse in 3D!)"}, {"post_id": 56639, "ts": "2026-08-28T14:03:20Z", "hours": 3.5839, "text": "Progrees working on a new way to visulize"}, {"post_id": 50284, "ts": "2026-08-19T13:15:26Z", "hours": 0.4033, "text": "Starting of wibi a audio visualizer"}]...
|
Title: Wibei by @EVINJSUBIN | Stardance
Devlogs:
Title: Wibei by @EVINJSUBIN | Stardance
Devlogs:
Starting of wibi a audio visualizer
Progrees working on a new way to visulize
š Final Ship: Wibei is Live! š§āØAfter hours of refining the audio DSP pipeline, tweaking Three.js shaders, and perfecting the UI, Wibei is officially shipped!Try it out live here: š https://wibei-production.up.railway.app/(Open it up, search your favorite track or click the š¤ mic / š upload button to watch it pulse in 3D!)
⨠Whatās new:Clean Brand Pill: Removed the gold dot from the top-left logo pill. It now features clean, minimal typography (wibei v1.0).Interactive Mini Player:Added a Minimize Button (ā) on the right side of the player bar.Clicking it collapses the large deck into a floating Mini Player Pill in the bottom corner (showing the album art, track title, animated mini EQ visualizer, play/pause toggle, and expand button).Expanding it restores the full control deck seamlessly.āGetting Startedā Guide Modal (Guide):Added an interactive onboarding modal accessible via the top-right Guide button.Explains how to play audio (YouTube, Demos, Mic, Uploads), how to orbit in 3D, and how to switch visualizer shapes/bloom themes.Includes a 1-click āā” Play Synthwave Demoā button right inside the guide for instant reviewer onboarding.Animated Mini EQ Bars: Added dynamic dancing EQ waveform bars right next to the song title when audio is playing.
ā” Wibei // 3D Audio Spectrograph & Real-Time DSP Lab Live Site: https://wibei.onrender.com | GitHub: EVINJSUBIN/Wibei Built for: Hack Club Stardance | Collaborators: @EVINJSUBIN & @aamosm š What We Built Wibei is an open-source web synthesizer and 3D audio spectrograph built with Three.js WebGL and the native Web Audio API . It lets anyone route audio, manipulate live DSP filter nodes, and render acoustic harmonics in 3D space with zero latency. ⨠Key Features Sound Shaper DSP Suite: Real-time 650Hz Lowpass Muffler (āclub bathroomā vibe), +16dB Bass Overdrive EQ, and 1.25x/0.85x Speed Modulator. 4 Spatial 3D Geometries: 128-bar Radial Pulse Ring, Waveform Ribbon, Isometric 3D Voxel Matrix, and the new harmonic Pulsar Sphere . Beat Drop Shockwaves: Sub-bass transient detector triggering expanding 3D ring particles on drops. Cinematic Auto-Pilot Cam: Dynamic drone camera orbiting to musical energy. Universal Audio Ingest: Instant lossless stems, fullscreen drag-and-drop MP3/WAV, live microphone, and YouTube stream engine. Hall of Fame: Live GitHub telemetry showcasing community contributors. 100% client-side WebGL & DSP running at 60 FPS.
šļø Wibei Devlog: 3D Holographic Album Art & the VOID Overhaul Project: Wibei (3D Audio Spectrograph & Real-Time DSP Lab) Built for: Hack Club Stardance Creators: @EVINJSUBIN & @aamosm Repo: github.com/EVINJSUBIN/Wibei | Live: wibei.onrender.com š Elevating the Cockpit Audio visualization isnāt just about moving bars ā itās about tactile feedback, visual hierarchy, and immersive atmosphere. In this sprint, we overhauled Wibei into a commercial-grade glassmorphism workstation , added a 3D holographic album art core , wrote a zero-dependency ID3 tag parser , and redesigned our landing page in our signature VOID aesthetic. š 1. Commercial-Grade Glassmorphism Cockpit We replaced flat panels with an ergonomic, floating dual-deck hardware layout: Left Deck (Ingest): Quick-switch tabs for DEMOS , STREAM (YouTube/Spotify live audio), QUEUE (playlist management), and LOCAL (drag-and-drop). Right Deck (Synthesis & FX): Instant geometry matrix switching ( RING , WAVE , GRID , ORB ), real-time biquad muffler, sub-bass drive, nightcore tempo shifters, and camera auto-orbit. Floating Transport Bar: Ergonomic bottom bar with real-time master VU meter bars, peak telemetry ( dBFS ), elapsed timers, track metadata, and volume scrubber. Frosted Material System: Deep obsidian glass ( rgba(10, 10, 14, 0.72) ) with backdrop-filter: blur(28px) , subtle rim lighting, and responsive LED indicators. šæ 2. 3D Holographic Center Album Art In our RING (Pulse) visualizer, tracks with rich artwork now come to life in 3D: Hologram Disc: High-def circular disc ( CircleGeometry(4.2) ) with dark tinted glass backing and an audio-reactive neon border ring. Adaptive Gyro-Core: When artwork is present, the wireframe octahedron scales outward to 1.55x , orbiting as an open crystal gimbal cage. Without artwork (or on mic input), it docks back to its native 1.0x center scale. Vinyl Dynamics: Spins with bass-accelerated inertia, tilts dynamically in 3D pitch/roll, and pulses to sub-bass hits. š¦ 3. Zero-Dependency In-Browser ID3 Extractor To keep local playback instant without server uploads, we wrote id3.js from scratch: Direct binary parsing of ID3v2.3, ID3v2.4, and ID3v1 tags via ArrayBuffer slices. Extracts APIC frames into instant in-memory blob: URLs for album covers. Parses title, artist, album, and genre instantly with zero latency. š 4. The āVOIDā Aesthetic & Minimalist Landing Page Serious Void Default: Distraction-free interstellar abyss ( #050507 ), crisp starlight typography ( #f8fafc ), and titanium slate accents ( #8b95a5 ). Calibrated Bloom: Re-tuned UnrealBloomPass threshold to 0.82 ā eliminating blinding white glare while keeping geometry razor-sharp. Minimalist Landing Page: Clean terminal layout with a 1,800-star WebGL starfield and a 3D gyro-core that pulses with kinetic shockwaves on live DSP audition clicks! š» 100% Client-Side Engine Built entirely with vanilla JS, Three.js (r128), and native Web Audio API ā zero bulky UI frameworks, locked 60+ FPS, and zero-latency 32-bit floating DSP.
Ships:
Wibei is a real-time 3D music visualizer built with Three.js and Web Audio API. It features reactive visualizer modes (Pulse Ring, Waveform, and 3D Grid), bloom glow themes, 3D mouse drag controls, YouTube search, live mic input, and local MP3 uploads.How to test Open https://wibei-production.up.railway.app/ Search for any song in the bottom right, click š¤ to use your mic, or click š to upload an MP3. Click & drag anywhere on the screen to rotate in 3D, and use the top dropdowns to switch styles (Pulse Ring, Wave, Grid) and themes.What I learned Learned how to use the Web Audio API (FFT frequency analysis) to drive 3D Three.js meshes, write smooth idle wave animations, configure bloom shaders, and build 3D mouse orbit controls....
|
1793613229.8019152
|
1793699629.8019152
|
|
58899
|
Untitled project by @pavelX | Stardance
|
pavelX
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T16:05:19Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a python game, but only text RPG game where you chose your hero. You can fight fantasy features, and hastle some golds for fun or you can also craft many thiks which will make you stronger. The game end after you kill the end Dragon. I am proud of my project because this was my first big python project.", "repo": "https://github.com/pavel1010-code/coding/blob/main/project.py", "demo": "https://github.com/pavel1010-code/coding/releases/tag/v1.0.0"}]...
|
[{"post_id": 64874, "ts": "202 [{"post_id": 64874, "ts": "2026-09-09T16:00:23Z", "hours": 4.5083, "text": "I enden up making python game where you can play, craft, and fight."}, {"post_id": 63704, "ts": "2026-09-07T17:12:08Z", "hours": 3.2347, "text": "i am working on a python game. Where youāre fighting scifi creatures and after i upgrade it you can craft something."}]...
|
Title: Untitled project by @pavelX | Stardance
De Title: Untitled project by @pavelX | Stardance
Devlogs:
i am working on a python game. Where youāre fighting scifi creatures and after i upgrade it you can craft something.
I enden up making python game where you can play, craft, and fight.
Ships:
I made a python game, but only text RPG game where you chose your hero. You can fight fantasy features, and hastle some golds for fun or you can also craft many thiks which will make you stronger. The game end after you kill the end Dragon. I am proud of my project because this was my first big python project....
|
1793613230.9896834
|
1793699630.9896834
|
|
51414
|
Chronicle ā Software Evolution Intelligence Platfo Chronicle ā Software Evolution Intelligence Platform by @LAZX | Stardance...
|
LAZX
|
1
|
22.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T14:31:21Z", "hours": 22.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Chronicle, a local-first developer intelligence tool that scans a projectās history and changes, stores them as observations, analyzes those observations into findings, and then uses an AI interpreter to answer questions about how and why things changed in the project. The most challenging part for me was state management, especially keeping track of which observations had already been analyzed so Chronicle could process only new changes instead of repeatedly analyzing everything. I had to think carefully about scan state and analysis state, checkpoints, and how different scanners such as Git and Django migrations could work together without duplicating or losing information. Iām most proud of how Chronicle evolved into a proper pipeline rather than just a collection of commands: scanners produce observations, analyzers produce findings, and the interpretation layer connects those findings back to relevant project history to answer a developerās questions. For someone testing the project, they should initialize Chronicle in a project with chronicle init , make sure the required AI provider and model are configured along with an API key, and then create some Git commits or Django migrations and run the appropriate scan, analyze, and interpret commands. The best way to test it is to make a change, scan it, analyze it, and then ask Chronicle a question about that change to see whether it can trace the history and explain what happened and why.", "repo": "https://github.com/Sakshyam-Xtha/Chronicle", "demo": "https://sakshyam-xtha.github.io/Chronicle/"}]...
|
[{"post_id": 57296, "ts": "202 [{"post_id": 57296, "ts": "2026-08-29T12:23:03Z", "hours": 1.8067, "text": "#Devlog-6 Fixed the bug of ai config not being set on init command"}, {"post_id": 57134, "ts": "2026-08-29T07:32:46Z", "hours": 10.7333, "text": "#Devlog-5 Finished the mvp of chronicle."}, {"post_id": 53152, "ts": "2026-08-23T16:12:49Z", "hours": 3.9156, "text": "#Devlog-4 Just integrated the django migration scan."}, {"post_id": 52130, "ts": "2026-08-22T06:55:05Z", "hours": 1.9022, "text": "#Devlog-3 Just finished the scan command to parse git commits and store it in a local db file using sqlite3."}, {"post_id": 51742, "ts": "2026-08-21T15:59:09Z", "hours": 1.2853, "text": "#Devlog-2 Completed the initializer command as now it creates a folder called .chronicle inside the project root and saves a simple configuration file"}, {"post_id": 51508, "ts": "2026-08-21T08:33:45Z", "hours": 2.1692, "text": "#Devlog-1 Made a simple init command that shows if the project root contains .git files or not"}]...
|
Title: Chronicle ā Software Evolution Intelligence Title: Chronicle ā Software Evolution Intelligence Platform by @LAZX | Stardance
Devlogs:
#Devlog-1 Made a simple init command that shows if the project root contains .git files or not
#Devlog-2 Completed the initializer command as now it creates a folder called .chronicle inside the project root and saves a simple configuration file
#Devlog-3 Just finished the scan command to parse git commits and store it in a local db file using sqlite3.
#Devlog-4 Just integrated the django migration scan.
#Devlog-5 Finished the mvp of chronicle.
#Devlog-6 Fixed the bug of ai config not being set on init command
Ships:
I built Chronicle, a local-first developer intelligence tool that scans a projectās history and changes, stores them as observations, analyzes those observations into findings, and then uses an AI interpreter to answer questions about how and why things changed in the project. The most challenging part for me was state management, especially keeping track of which observations had already been analyzed so Chronicle could process only new changes instead of repeatedly analyzing everything. I had to think carefully about scan state and analysis state, checkpoints, and how different scanners such as Git and Django migrations could work together without duplicating or losing information. Iām most proud of how Chronicle evolved into a proper pipeline rather than just a collection of commands: scanners produce observations, analyzers produce findings, and the interpretation layer connects those findings back to relevant project history to answer a developerās questions. For someone testing the project, they should initialize Chronicle in a project with chronicle init , make sure the required AI provider and model are configured along with an API key, and then create some Git commits or Django migrations and run the appropriate scan, analyze, and interpret commands. The best way to test it is to make a change, scan it, analyze it, and then ask Chronicle a question about that change to see whether it can trace the history and explain what happened and why....
|
1793613232.236103
|
1793699632.236103
|
|
35722
|
GBWeb by @Doodl0 | Stardance
|
Doodl0
|
1
|
68.27
|
1244
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-28T00:42:33Z", "hours": 68.0, "multiplier": 18.35, "payout": 1244, "blessing": "neutral", "text": "GBWeb Iāve made GBWeb, a basic Gameboy emulator, written in C, designed to run in your browser using WebAssembly and Emscripten It can: Accurately emulate the Gameboyās Z80 based CPU Run games with no memory bank controller, or with MBC1 Semi accurately emulate the Gameboyās picture processing unit (PPU) And run locally on your device, entirely within a browser How to try it: Before you try it, I would like to mention that I cannot legally provide Gameboy game ROM files to play, so you must use your own ROMs. In addition, not all ROMs will work, as the emulator isnāt perfectly accurate. The ones Iāve tested that work are Tetris, and Super Mario Land If you cannot provide a ROM, or otherwise cannot test it, I have also attached a video of me playing Tetris and Super Mario Land on it as a demonstration. You can find it here, on the Github , and thereās also a screenshot below. You can use it by either pressing the demo button, or going to doodl0.github.io/gbweb/ Controls D-Pad -> WASD keys A button -> L key B button -> K key Select button -> Backspace key Start button -> Enter key These are also shown before loading a ROM Challenges This project really challenged my knowledge of low-level systems; especially since I had never made an emulator or even written an assembly program before. I had to rely on a lot of resources that other people had freely compiled, as the Gameboy is fairly advanced, however as it is so old, thereās been plenty of time for others to figure out how it works. (You can see the resources I used in the README) Simultaneously, this was also my first Emscripten project, which added more complexity. Through the devlogs, I also had to undergo lots of trial an error, until something finally was accurate enough, which felt especially frustrating at times What Iām proud of Mostly, Iām just proud that it even works a bit; at the start of the project, I was a little generous with how quickly I thought I could finish this, and as I got further, I got more unconfident. However, Iām glad I actually made something semi-usable, even if compatibility isnāt great at the moment. This is less important, but Iām also proud of the graphics I made for project, such as the banner. I tried to stay close to the original Gameboyās palette and resolution for these, and I though it turned out well, if a bit overly green. Overall, I wish I just had more time in Stardance to continue working on this, but Iām happy with what I made so far.", "repo": "https://github.com/Doodl0/gbweb", "demo": "https://doodl0.github.io/gbweb/"}]...
|
[{"post_id": 84553, "ts": "202 [{"post_id": 84553, "ts": "2026-10-29T20:57:30Z", "hours": 0.27, "text": "Quick Devlog to address ROMs If you donāt have your own ROMs, Iāve added a download link on the site for you to download a free homebrew Tic-Tac-Toe ROM, so you can test the emulator. Thereās also a demo video of me playing both Tetris and Super Mario Land, also on the site"}, {"post_id": 83459, "ts": "2026-10-27T23:57:02Z", "hours": 2.0928, "text": "Final Devlog (probably) - README and making the site pretty This will be a rather short devlog, but Iāve written the README.md file for the repo, and also uploaded the files to doodl0.github.io/gbweb/ , with a more Gameboy themed HTML page. You can visit yourself, or see it in the screenshot. I donāt think I can legally provide ROM files for you to play, so you have to upload your own. Currently, I can only guarantee Tetris and Super Mario Land work."}, {"post_id": 83378, "ts": "2026-10-27T21:26:21Z", "hours": 6.7483, "text": "Devlog 12 - Timers, HALT and MBCs Timers Iāve implemented the timer registers, which increment at a set interval based on the CPU clock. These are used for getting random numbers for Tetris, to pick random Tetriminos, and also used for other things, namely an interrupt is requested when one of the registers overflows and resets. These werenāt too hard to implement, and I based by implementation off of js-GB once again HALT and some interrupt fixes Previously, HALT, and some of the interrupt handling was basically a placeholder, meaning that it didnāt really run properly at all. Iāve now fixed that, meaning the emulator can now pass test ROM 2. I also implemented the STAT interrupt, although Iām not entirely sure it is accurate, as my PPU implementation still isnāt perfect. Memory Bank Controllers (MBCs) Finally, I added some basic support for the MBC1 chip that was frequently included on earlier Gameboy games. This allows the games to exceed the memory limit of 32KiB, instead including a mapper chip that allowed the switching of ROM banks. I based my implementation off of this blog of the development of the PlayKid emulator , and also partially off js-GB again. Now, the emulator is able to start bigger games, and Iāve tested Super Mario Land so far. This also allowed me to pass the combined version of all of the CPU instruction tests. Misc I also fixed a bug with the CPU instruction timing, allowing me to pass blarggās CPU timing test"}, {"post_id": 82037, "ts": "2026-10-23T15:17:16Z", "hours": 8.1889, "text": "Devlog 11 - Input, Interrupts, and (semi-functional) Sprites The next thing I added was joypad input. I had already set up a basic keyboard key checker with SDL events, so I had to connect it to the Gameboy. The joypad in the Gameboy writes to address 0xFF00. The Gameboy uses this as basically a 2x4 matrix. When bit 4 is set, the d-pad buttons are readable, and when bit 5 is set, the A, B, select, and start buttons are readable. I based my implementation of this off of jsGB again, which means I basically just made an array of 2 bytes; one representing the first row of the matrix, and another representing the second. Then when a button is pressed down, I set the corresponding bit to 0, and when it is released, set it back to 1. Then when the Gameboy tries to write to the register, I instead set a column variable, and when it tries to read it, I check the current column and return the correct row. Then, I tried to implement some basic sprite rendering. You can see this in a few of the screenshots below, although my implementation is currently broken. It (should) work like the background renderer, only instead checking each of the 40 sprites in the OAM section of memory, and seeing if they are part of the current line. However currently, I forgot to implement one of the ways to copy sprite data to OAM, meaning that the rendering only actually works in some specific test ROMs, and not Tetris at the moment. Then, I implemented some of the CPU interrupts, namely the VBLANK interrupt, which is the only one Tetris needs to boot. Interrupts have a register (0xFFFF) to enable each one individually, which each bit corresponding to an interrupt. Then, if an interrupt is enabled, when a source triggers it, the corresponding interrupt flag in 0xFF0F is set. On the next CPU step, it checks the interrupt flags, and if one is set, it then calls the specific interrupt handler for that interrupt. Currently, the only fully implemented one is the VBLANK interrupt, which is simply called when the PPU enters the VBLANK mode. This allows Tetris to boot. Unfortunately, I spent a lot of the time in the devlog trying to actually get Tetris in game, as although after implementing interrupts, I could get through the menus, it just spat out a garbled screen when I actually tried to play the game or even watch the title screen demo. At first, I thought this was a rendering bug, so I spend a lot of time scrutinising the PPU code. I used the dmg-acid2 PPU test to try to troubleshoot this (you can see the current, still inaccurate result below), and although I did find out that my placeholder halt code was causing some issues, it didnāt manage to solve the problem. I found a reddit thread that seemed to have the same issue, and a frustratingly deleted comment that seemed to have a solution but obviously I couldnāt use that. However, I managed to find an archiving tool that showed me what the comment was ; Tetris incorrectly writes to some area of the ROM, which causes a crash. All I had to do to fix this was block writes to the ROM area in memory, and it finally worked, although the sprites didnāt work as mentioned previously. Next devlog, I want to fix sprite rendering, hopefully get the PPU more accurate, and implement some of the timer functions, as Tetris uses those to get random blocks, and without them, all the block are squares."}, {"post_id": 81110, "ts": "2026-10-19T22:32:59Z", "hours": 6.6672, "text": "Devlog 10 - (basically) Finishing the CPU After the last devlog, I did some cleaning up with the graphics, which included fixing the last scanline not being rendered, and also adding a screen before the ROM is loaded, telling the user which key to press to load the ROM. I also set up some functions to allow easier access to the I/O registers related to the PPU, such as the x and y scroll and the control flags. Afterwards, I felt a bit burnt out of the PPU, so I went back to finish off most of the CPU. This started with implementing the CFL, CPL, CF, CPL, SCF, SLA, SRA, RL, RLA, RLC, RRC, RLCA, and RRCA instructions, most of which are bit rotations, so once I had a few implemented, it got easier to add the rest. This allowed me to pass CPU test ROM 9. Then, I implemented the rest of the CB prefix instructions, which were all bit related; BIT, RES and SET, which allowed me to pass ROM 10 After those, I implemented some stack pointer related instructions; ADD SP,d and LD HL SP+d, which then allowed me to pass ROM 3 Finally, I added DAA. This one is a bit more unique, as it is designed to convert the result of an add or subtract with binary coded decimal numbers, into a binary coded decimal number. This gets a bit complicated, but I used these resources ( Demystifying the GameBoy/SM83ās DAA Instruction and the RGBDS assembler/linker instruction documentation ) to implement this properly, allowing me to also pass test ROM 1 With a semi-functioning PPU, and some fixes, I was also able to boot into the copyright screen of Tetris for the first time, although I couldnāt get any further without implementing interrupts. The image below shows that, and my emulator passing all of the previously mentioned test ROMs. The only test ROM I havenāt passed yet is the 2nd one, which also requires interrupts."}, {"post_id": 80353, "ts": "2026-10-17T11:17:07Z", "hours": 4.04, "text": "Devlog 9 - Basic graphics (finally) Iāve finally gotten some basic picture processing unit (PPU) functionality implemented into the emulator, which will hopefully make debugging a lot easier going forward. Firstly, to implement this, I had to move the timing logic out of cpu.c and into cycles.c . This was so that, when the loop calls a CPU step, it also calls a PPU step at the same time. I also refactored some of the cycle functions and removed the ones that were no longer being used Then, I implemented the timing code for the PPU. This part and the actual rendering were mostly based on this tutorial series that shows you how to make a GB emulator in javascript, which I based my C code on. Basically, the PPU runs on the clock as the CPU, and a ādotā on the PPU is equal to a T-cycle on the CPU. The PPU renders progressively, like a CRT television, and so also has modes to move the nonexistent electron beam down and back to the start of a scanline before it continutes rendering, known as VBLANK and HBLANK, (vertical and horizontal blank). The Pan Docs were also quite helpful for understanding the basic functionality, although the tutorial was useful to understand the programmatic side. The PPU also has 2 other modes, used for scanning the Object Attribute Memory (OAM) and actually drawing, and all 4 modes have a precise amount of dots that they run for. In terms of actual rendering, the Gameboy doesnāt have a full framebuffer, and instead uses different tiles to create a full image. I implemented a function that, when the CPU writes to VRAM, also updates the data in a separate tileset variables, for easier access in the render pipeline. Each tile is 16 bytes, with 2 bits per pixel colour depth, and 8 x 8 pixels per tile. As the Gameboy renders progressively, I then implemented the function to draw a scanline to the screen, based on the tile data in the background layer. The afformentioned tutorial series helped a lot here, as the tiles need to have a specific offset and mapping applied which would be quite hard to figure out on my own. Then, that function calls a draw pixel function for each each of the 160 pixels in a scanline, which writes the corresponding colour from the palette to an SDL_Surface as the framebuffer. Once the frame is finished, the surface is converted into a texture, which is then scaled to fit the screen size and rendered, with another frame being made afterwards. Below you can see the screen of the previously mentioned blarggās test ROM 7."}, {"post_id": 79179, "ts": "2026-10-12T22:23:50Z", "hours": 6.5228, "text": "Devlog 8 - Organisation, and timing, again Ok, so this didnāt exactly go how I wanted (again), but most of this devlog time was spent fixing the past devlog, and organising code in a better way Firstly: I realised that before, my timing code checked based on M-cycles, rather than T-cycles. Thereās a specific reason for the distinction, but for now all you need to know is that thereās 4 T-cycles in an M-cycle, so my code was targeting a 4x faster speed. I changed this to be correct, but changed it again later so it doesnāt really matter. Then, I cleaned up a lot of cpu.c , changing functions to return values directly rather than using a local variable first, pre-calculating some variables, et cetera. This was an attempt to speed up the CPU, as I was having a bit of trouble meeting the target speed with debug builds (mentioned in devlog 7), but again, this was a bit pointless because I changed the way the timing worked later. While doing this, I also replaced all of the numerical types with their stdint.h counterparts; for example, an unsigned char became a Uint8 (SDL has macros for the stdint types, so they have a slight naming difference from standard C in my code). This was mainly done for specificity and some Hail Mary for performance (although fruitless), and should make the code at least a bit more portable and easy to maintain. I also implemented a couple of new instructions; RST and SWAP. RST effectively calls from a set of pre-specified addresses , and SWAP just swaps the upper and lower 8 bits in a byte, so these werenāt too hard. I also had to fix some bugs with the flags registerĀ“s value after an SBC A instruction, which admittedly did take me a while to fix because I basically banged my head against the wall to fix it. The main change in this devlog was switching the timing system (again). Previously, the CPU ran one instruction for each loop of the SDL_AppIterate function. After reading the documentation and realising that this function is supposed to run each frame, I realised that I was causing all of my speed issues by only doing one cycle per iteration. Instead, the code now does as many instructions as it can until it has run enough T-cycles for a full frame to render (70224). It then renders (to be implemented), and moves on to the next iteration. This is way more performant, and has the added benefit of being more cross-platform, as SDL specifies that sometimes AppIterate may only run at the refresh rate on some devices. Tbh, this took me a while, maybe too long, to conceptualise and implement, and basically made all of the time on the other timing system wasted, but in the end it was worth it for a much better system. You can see the uncapped FPS (in a debug build mind you) here, although when actually playing games, the framerate will be locked to around 60 FPS. Finally, there was a few more miscellaneous changes: copying a ROM file into memory uses memcpy instead of a loop, which may or may not be faster; memory is now a union of smaller arrays of memory banks, for each function, such as work ram (WRAM), high ram (HRAM), ROM banks 0-n and etc; and lastly, some register code has been moved out of cpu.c for organisation."}, {"post_id": 77175, "ts": "2026-10-05T22:31:28Z", "hours": 5.0036, "text": "Devlog 7 - Timing The next main thing I implemented were some more instructions - namely SRL, RR, RRA and ADD HL. These werenāt too hard, as the first 3 are similar to regular bit shifts, and ADD HL is just adding. While I was working on these, I also fixed some bugs with the existing instructions This allowed me to finally pass the cpu_instrs 6 test ROM, which although not really a massive goal, did help to signify the progress I had made. I then moved onto the 7th test, for which I implemented some load functions for the stack pointer register The biggest improvement of this devlog was getting everything timing correctly. The Gameboy is supposed to run at 4.19 MHz and 59.7 FPS, but at the time, the emulator was just running as fast as possible. To solve this, I first made each instruction call a function to add the amount of cycles it takes to a unwaitedCycles variable. Then, I saved the current time in nanoseconds since the program started (provided by the SDL_GetTicksNS() function) into a variable at the start of an instructionās execution. After the instruction is executed, a function is then called that finds the expected execution time the by doing the amount of cycles multiplied by the period of 4.19MHz (about 238 nanoseconds). This expected time is then subtracted from the actual time, which is the start time stored previously subtracted from the current time. The program is then delayed by the result, which should keep the CPU at around 4.19MHz, unless it takes too long. I did have some concerns with my emulatorās performance, as when running as a debug build, it wasnāt running nearly fast enough to reach 4.19MHz, but after compiling as a release build with optimisation, it was much faster and ran under the required time. However, Iām not sure how consistent this will be between devices, so I may have to optimise later Finally, I added a similar function to limit the FPS to around 60 (technically 59.7), which just checks the time since the last frame was rendered, and if it hasnāt been long enough, it continues CPU execution and doesnāt render. You can see the frame limit working in the screenshot, where the frametime is a consistent 16.8 ms and the FPS is locked to 60, as opposed to before where it was unlimited. (Ignore the text, it doesnāt change yet to show a ROM has been loaded)"}, {"post_id": 76068, "ts": "2026-10-02T07:40:09Z", "hours": 5.4931, "text": "Devlog 6 - An unfortunate amount of debugging This devlog is probably going to be shorter than the other, simply because I havenāt done as much as I hoped The main reason for this is that I got completely stuck on a bug, and wasted so much time trying to find it. I first noticed this bug when I got this error message (screenshot) in gameboy-doctor, with a mismatch with a load from memory not being the right value. This got me so stuck, because I didnāt know where to find when the memory was supposed to be written to, so I was basically blindly guessing what was wrong with any previous loads or register writes. Eventually, I caved and asked for help online, and I got my answer after asking on the EmuDev subreddit , where I found out it was an issue with my implementation of the LD (FF00+u8), A instructions, where I wrote LD_n16_n8((0xFF00 + address + 1), registers.a); instead of the correct LD_n16_n8((0xFF00 + ReadMemory(address + 1)), registers.a); so basically any writes to memory using that function were in the complete wrong location. Stupid mistake on my part, and I wasted way too much time on it. I also did implement some basic instructions, like EI and RETI. EI simply enables the emi register, and RETI basically just does that, then calls RET to return from a subroutine. In addition, I also restructured quite a lot of the code, as too much was piling up in the cpu.c file, and I also renamed quite a few functions to follow a Component_Function syntax, so it was easier to tell where they were located in the code"}, {"post_id": 73310, "ts": "2026-09-24T20:22:22Z", "hours": 6.5411, "text": "Devlog 5 - Adding instructions, the stack and lots of debugging After the last devlog, the first think I did was implement some more instructions, namely the jump instructions, and the increment and decrement functions. Luckily these were pretty simple; all the jumps do are set the program counter (effectively the next instruction) to a specified value, and the increment and decrement are pretty self explanatory, increasing or decreasing a register or memory byte by 1; After this, I started implementing the stack. The stack is a section of memory that is ordered, with values being written to it (pushed) and read off of it (popped). You must read the ātopā value, meaning the most recently pushed, which is then removed and the next highest is the next available to read. This wasnāt too hard, although I did have to introduce a new register, the stack pointer (sp). While I was at it, I also implemented load functions, which load data into a specified memory byte or register. After realising it would cause issues down the line, I walked back my previous decision to make the flags register a struct of booleans, and instead made it a single byte with 4 bits representing the 4 flags, making it more accurate. I also made some functions to easily set or reset each flag, rather than use bitwise operations everywhere. Finally, I implemented logging support, so that I could use Gameboy Doctor , a brilliant debugging script that reads a log file from your emulator with a known ROM, and compares it to the correct result. All you have to do is write a line to a log file with all the register values and some memory bytes after each instruction, and it automatically tells you where the first error is, what register or piece of memory is wrong, and even the last instruction to give you a hint as to the problem. This didnāt take much time to implement, but I did spend a considerable amount of time debugging, as previously I hadnāt actually got a way to check that my functions worked correctly (which is why this devlog has quite a few more hours on it). You can see an example of a error in the screenshot; I intentionally changed the SUB instruction to add instead because I forgot to take screenshots of the actual errors š„. Next time, I want to implement more of the CPU, especially more complex behaviours like halting and interrupts, and also implement some of the graphics, so that the games can actually be seen visually."}, {"post_id": 71263, "ts": "2026-09-20T15:22:40Z", "hours": 5.355, "text": "Devlog 4 - Memory mapping and instruction stepping The next thing I worked on was getting a basic function set up for stepping through instructions and calling the execute function. To do this, I also had to make a program counter, which is a 16 bit register storing the address of the next instruction. Currently, the step function is pretty barebones, but it simply calls the execute function, passes it the PC as a parameter, and then sets the program counter to be the returned address. The execute function has also been modified, meaning it reads the instruction from memory (more on that later) rather than being passed it directly, and return the address plus 1 to 3 bytes, depending on the instruction that was executed. The next bit I made was the Game Boyās memory. This is simply an char array with 64K values, equivalent to 64KiB of memory. Then, any address can be accessed simply by accessing the array value at an address. After working on the other parts of the CPU, I went back to working on some instructions, implementing the rest of the disassembly tables , including the condition call table, which checks the flags register before executing an instruction. I also implemented some of the instructions that require inputting an address in memory to use instead of a number or register. Finally, I also worked on some quality of life features. First, I made a function to replace missing functions, which simply sends an error message with the function name, and quits with an error code. Secondly, I made / edited some functions to actually move the loaded ROM file into the main GB memory rather than the program memory. I had a little trouble troubleshooting this, as I didnāt at first have a reliable way to verify that the data had been copied successfully, and after I did, I still had trouble with pointers, as I am still pretty new to Cās manual memory management (I usually just keep things in the stack, or have global variables that will persist throughout the programās lifetime.). I also added basic functionality for loading a ROM on desktop rather than the web, but it doesnāt use the system dialog yet, only loading a rom.gb file in the executable directory. After everything was working, I added a debug message to send the ROMās header title, showing that it actually works. You can see this in the screenshot. It sends the message twice, once when the file is loaded, and once when itās moved to GB memory, which I did to make sure that the transfer didnāt mess up the data accidentally."}, {"post_id": 68852, "ts": "2026-09-15T21:21:15Z", "hours": 3.9186, "text": "Devlog 3 - Algorithmically parsing opcodes After getting things functioning well in the browser, I wanted to move onto the actual emulator bit of the project. Firstly, I looked at a bunch of examples and info, mostly compiled from gbdev.io . At first, I followed both the development blog of Cinoop and the guide DMG-01 . I used these guides to first write the register struct, which is basically just a struct of bytes (in char form as Iām using C), as well as the flags register, which I took inspiration from DMG-01 by making it primarily a struct of 4 bools rather than a binary value, for easier setting. I also wrote functions for converting this into binary though so that I didnāt lose compatibility. Next, I used Decoding Gameboy Z80 Opcodes to write an algorithmic way to decide which instruction correlates to an opcode, instead of a large switch case (although admittedly it does have a lot of nested switch cases). Finally, I added in the āaluā table instructions as the first few instructions, which also happened to be quite simple as they were basically just addition, subtraction and some bitwise operations. Next, I plan to fill in the remaining instructions, add them all to the algorithm and get started on the actual control flow for the CPU"}, {"post_id": 47709, "ts": "2026-08-15T20:02:53Z", "hours": 3.5792, "text": "Devlog 2 - SDL3 and File Loading After setting up the project basics, I spent some time on another project, also using SDL, but a desktop app. This used SDL3 instead of SDL2, which is default for Emscripten. I decided to switch this project to SDL3 as well, since I feel more comfortable with it and it has some features like main callbacks that should help with Emscripten. Instead of using the SDL library bundled with Emscripten, I instead added the SDL3 repo as a submodule, so I should be able to make a desktop version of the program later relatively easily. After switching to SDL3, I researched how to load a file from the user in the web browser into the webasm program. I found a StackOverflow thread that helped a lot, which included a link to a more developed header library, however I opted not to use this, as it was C++ based, and I wanted to remain using C. Instead I just implemented the bits I needed from the thread in C, which wasnāt too hard, although included some JS, which Iāve never used and some pointers which I made a few stupid mistakes with, causing me to think it didnāt work for a while. Finally, I also added a keybind to open the file dialog, which currently is tab, and also made sure that the keys only register on the down press, and not the up as well."}, {"post_id": 29056, "ts": "2026-07-15T18:26:42Z", "hours": 3.6419, "text": "Devlog 1 - Setup and basic input I took a while to find a toolchain that I liked, but Iāve settled on using Emscripten, and itās built in version of SDL2. Emscripten is a library and compiler for CXX that allows direct compilation to web assembly and JavaScript, also allowing graphics and input with SDL. This makes it a lot easier for me to write the program, as I donāt really need to know as much JS or find multiple different libraries to use. Originally I wanted to use SDL3, but I couldnāt get the input to work automatically with Emscripten, and with this being my first major C and web project, I decided to take the easier path and simply use the fully supported SDL2. I also spent some time setting up a simple CMake system and some scripts for building and running, which took me a while to figure out, especially as I was also learning Emscripten for the first time, however it will hopefully save me time in the long run. Just to test my implementation, I set up some keybinds for the eventual emulator to come. I just used SDL scancodes to check for the key press, and they printed the corresponding Gameboy button to the output. You can see this in the video below. For simplicity, I decided to just set keys in code, with WASD being the dpad, J being A, K being B, Return being Start and Backspace being select."}]...
|
Title: GBWeb by @Doodl0 | Stardance
Devlogs:
Devl Title: GBWeb by @Doodl0 | Stardance
Devlogs:
Devlog 1 - Setup and basic input I took a while to find a toolchain that I liked, but Iāve settled on using Emscripten, and itās built in version of SDL2. Emscripten is a library and compiler for CXX that allows direct compilation to web assembly and JavaScript, also allowing graphics and input with SDL. This makes it a lot easier for me to write the program, as I donāt really need to know as much JS or find multiple different libraries to use. Originally I wanted to use SDL3, but I couldnāt get the input to work automatically with Emscripten, and with this being my first major C and web project, I decided to take the easier path and simply use the fully supported SDL2. I also spent some time setting up a simple CMake system and some scripts for building and running, which took me a while to figure out, especially as I was also learning Emscripten for the first time, however it will hopefully save me time in the long run. Just to test my implementation, I set up some keybinds for the eventual emulator to come. I just used SDL scancodes to check for the key press, and they printed the corresponding Gameboy button to the output. You can see this in the video below. For simplicity, I decided to just set keys in code, with WASD being the dpad, J being A, K being B, Return being Start and Backspace being select.
Devlog 2 - SDL3 and File Loading After setting up the project basics, I spent some time on another project, also using SDL, but a desktop app. This used SDL3 instead of SDL2, which is default for Emscripten. I decided to switch this project to SDL3 as well, since I feel more comfortable with it and it has some features like main callbacks that should help with Emscripten. Instead of using the SDL library bundled with Emscripten, I instead added the SDL3 repo as a submodule, so I should be able to make a desktop version of the program later relatively easily. After switching to SDL3, I researched how to load a file from the user in the web browser into the webasm program. I found a StackOverflow thread that helped a lot, which included a link to a more developed header library, however I opted not to use this, as it was C++ based, and I wanted to remain using C. Instead I just implemented the bits I needed from the thread in C, which wasnāt too hard, although included some JS, which Iāve never used and some pointers which I made a few stupid mistakes with, causing me to think it didnāt work for a while. Finally, I also added a keybind to open the file dialog, which currently is tab, and also made sure that the keys only register on the down press, and not the up as well.
Devlog 3 - Algorithmically parsing opcodes After getting things functioning well in the browser, I wanted to move onto the actual emulator bit of the project. Firstly, I looked at a bunch of examples and info, mostly compiled from gbdev.io . At first, I followed both the development blog of Cinoop and the guide DMG-01 . I used these guides to first write the register struct, which is basically just a struct of bytes (in char form as Iām using C), as well as the flags register, which I took inspiration from DMG-01 by making it primarily a struct of 4 bools rather than a binary value, for easier setting. I also wrote functions for converting this into binary though so that I didnāt lose compatibility. Next, I used Decoding Gameboy Z80 Opcodes to write an algorithmic way to decide which instruction correlates to an opcode, instead of a large switch case (although admittedly it does have a lot of nested switch cases). Finally, I added in the āaluā table instructions as the first few instructions, which also happened to be quite simple as they were basically just addition, subtraction and some bitwise operations. Next, I plan to fill in the remaining instructions, add them all to the algorithm and get started on the actual control flow for the CPU
Devlog 4 - Memory mapping and instruction stepping The next thing I worked on was getting a basic function set up for stepping through instructions and calling the execute function. To do this, I also had to make a program counter, which is a 16 bit register storing the address of the next instruction. Currently, the step function is pretty barebones, but it simply calls the execute function, passes it the PC as a parameter, and then sets the program counter to be the returned address. The execute function has also been modified, meaning it reads the instruction from memory (more on that later) rather than being passed it directly, and return the address plus 1 to 3 bytes, depending on the instruction that was executed. The next bit I made was the Game Boyās memory. This is simply an char array with 64K values, equivalent to 64KiB of memory. Then, any address can be accessed simply by accessing the array value at an address. After working on the other parts of the CPU, I went back to working on some instructions, implementing the rest of the disassembly tables , including the condition call table, which checks the flags register before executing an instruction. I also implemented some of the instructions that require inputting an address in memory to use instead of a number or register. Finally, I also worked on some quality of life features. First, I made a function to replace missing functions, which simply sends an error message with the function name, and quits with an error code. Secondly, I made / edited some functions to actually move the loaded ROM file into the main GB memory rather than the program memory. I had a little trouble troubleshooting this, as I didnāt at first have a reliable way to verify that the data had been copied successfully, and after I did, I still had trouble with pointers, as I am still pretty new to Cās manual memory management (I usually just keep things in the stack, or have global variables that will persist throughout the programās lifetime.). I also added basic functionality for loading a ROM on desktop rather than the web, but it doesnāt use the system dialog yet, only loading a rom.gb file in the executable directory. After everything was working, I added a debug message to send the ROMās header title, showing that it actually works. You can see this in the screenshot. It sends the message twice, once when the file is loaded, and once when itās moved to GB memory, which I did to make sure that the transfer didnāt mess up the data accidentally.
Devlog 5 - Adding instructions, the stack and lots of debugging After the last devlog, the first think I did was implement some more instructions, namely the jump instructions, and the increment and decrement functions. Luckily these were pretty simple; all the jumps do are set the program counter (effectively the next instruction) to a specified value, and the increment and decrement are pretty self explanatory, increasing or decreasing a register or memory byte by 1; After this, I started implementing the stack. The stack is a section of memory that is ordered, with values being written to it (pushed) and read off of it (popped). You must read the ātopā value, meaning the most recently pushed, which is then removed and the next highest is the next available to read. This wasnāt too hard, although I did have to introduce a new register, the stack pointer (sp). While I was at it, I also implemented load functions, which load data into a specified memory byte or register. After realising it would cause issues down the line, I walked back my previous decision to make the flags register a struct of booleans, and instead made it a single byte with 4 bits representing the 4 flags, making it more accurate. I also made some functions to easily set or reset each flag, rather than use bitwise operations everywhere. Finally, I implemented logging support, so that I could use Gameboy Doctor , a brilliant debugging script that reads a log file from your emulator with a known ROM, and compares it to the correct result. All you have to do is write a line to a log file with all the register values and some memory bytes after each instruction, and it automatically tells you where the first error is, what register or piece of memory is wrong, and even the last instruction to give you a hint as to the problem. This didnāt take much time to implement, but I did spend a considerable amount of time debugging, as previously I hadnāt actually got a way to check that my functions worked correctly (which is why this devlog has quite a few more hours on it). You can see an example of a error in the screenshot; I intentionally changed the SUB instruction to add instead because I forgot to take screenshots of the actual errors š„. Next time, I want to implement more of the CPU, especially more complex behaviours like halting and interrupts, and also implement some of the graphics, so that the games can actually be seen visually.
Devlog 6 - An unfortunate amount of debugging This devlog is probably going to be shorter than the other, simply because I havenāt done as much as I hoped The main reason for this is that I got completely stuck on a bug, and wasted so much time trying to find it. I first noticed this bug when I got this error message (screenshot) in gameboy-doctor, with a mismatch with a load from memory not being the right value. This got me so stuck, because I didnāt know where to find when the memory was supposed to be written to, so I was basically blindly guessing what was wrong with any previous loads or register writes. Eventually, I caved and asked for help online, and I got my answer after asking on the EmuDev subreddit , where I found out it was an issue with my implementation of the LD (FF00+u8), A instructions, where I wrote LD_n16_n8((0xFF00 + address + 1), registers.a); instead of the correct LD_n16_n8((0xFF00 + ReadMemory(address + 1)), registers.a); so basically any writes to memory using that function were in the complete wrong location. Stupid mistake on my part, and I wasted way too much time on it. I also did implement some basic instructions, like EI and RETI. EI simply enables the emi register, and RETI basically just does that, then calls RET to return from a subroutine. In addition, I also restructured quite a lot of the code, as too much was piling up in the cpu.c file, and I also renamed quite a few functions to follow a Component_Function syntax, so it was easier to tell where they were located in the code
Devlog 7 - Timing The next main thing I implemented were some more instructions - namely SRL, RR, RRA and ADD HL. These werenāt too hard, as the first 3 are similar to regular bit shifts, and ADD HL is just adding. While I was working on these, I also fixed some bugs with the existing instructions This allowed me to finally pass the cpu_instrs 6 test ROM, which although not really a massive goal, did help to signify the progress I had made. I then moved onto the 7th test, for which I implemented some load functions for the stack pointer register The biggest improvement of this devlog was getting everything timing correctly. The Gameboy is supposed to run at 4.19 MHz and 59.7 FPS, but at the time, the emulator was just running as fast as possible. To solve this, I first made each instruction call a function to add the amount of cycles it takes to a unwaitedCycles variable. Then, I saved the current time in nanoseconds since the program started (provided by the SDL_GetTicksNS() function) into a variable at the start of an instructionās execution. After the instruction is executed, a function is then called that finds the expected execution time the by doing the amount of cycles multiplied by the period of 4.19MHz (about 238 nanoseconds). This expected time is then subtracted from the actual time, which is the start time stored previously subtracted from the current time. The program is then delayed by the result, which should keep the CPU at around 4.19MHz, unless it takes too long. I did have some concerns with my emulatorās performance, as when running as a debug build, it wasnāt running nearly fast enough to reach 4.19MHz, but after compiling as a release build with optimisation, it was much faster and ran under the required time. However, Iām not sure how consistent this will be between devices, so I may have to optimise later Finally, I added a similar function to limit the FPS to around 60 (technically 59.7), which just checks the time since the last frame was rendered, and if it hasnāt been long enough, it continues CPU execution and doesnāt render. You can see the frame limit working in the screenshot, where the frametime is a consistent 16.8 ms and the FPS is locked to 60, as opposed to before where it was unlimited. (Ignore the text, it doesnāt change yet to show a ROM has been loaded)
Devlog 8 - Organisation, and timing, again Ok, so this didnāt exactly go how I wanted (again), but most of this devlog time was spent fixing the past devlog, and organising code in a better way Firstly: I realised that before, my timing code checked based on M-cycles, rather than T-cycles. Thereās a specific reason for the distinction, but for now all you need to know is that thereās 4 T-cycles in an M-cycle, so my code was targeting a 4x faster speed. I changed this to be correct, but changed it again later so it doesnāt really matter. Then, I cleaned up a lot of cpu.c , changing functions to return values directly rather than using a local variable first, pre-calculating some variables, et cetera. This was an attempt to speed up the CPU, as I was having a bit of trouble meeting the target speed with debug builds (mentioned in devlog 7), but again, this was a bit pointless because I changed the way the timing worked later. While doing this, I also replaced all of the numerical types with their stdint.h counterparts; for example, an unsigned char became a Uint8 (SDL has macros for the stdint types, so they have a slight naming difference from standard C in my code). This was mainly done for specificity and some Hail Mary for performance (although fruitless), and should make the code at least a bit more portable and easy to maintain. I also implemented a couple of new instructions; RST and SWAP. RST effectively calls from a set of pre-specified addresses , and SWAP just swaps the upper and lower 8 bits in a byte, so these werenāt too hard. I also had to fix some bugs with the flags registerĀ“s value after an SBC A instruction, which admittedly did take me a while to fix because I basically banged my head against the wall to fix it. The main change in this devlog was switching the timing system (again). Previously, the CPU ran one instruction for each loop of the SDL_AppIterate function. After reading the documentation and realising that this function is supposed to run each frame, I realised that I was causing all of my speed issues by only doing one cycle per iteration. Instead, the code now does as many instructions as it can until it has run enough T-cycles for a full frame to render (70224). It then renders (to be implemented), and moves on to the next iteration. This is way more performant, and has the added benefit of being more cross-platform, as SDL specifies that sometimes AppIterate may only run at the refresh rate on some devices. Tbh, this took me a while, maybe too long, to conceptualise and implement, and basically made all of the time on the other timing system wasted, but in the end it was worth it for a much better system. You can see the uncapped FPS (in a debug build mind you) here, although when actually playing games, the framerate will be locked to around 60 FPS. Finally, there was a few more miscellaneous changes: copying a ROM file into memory uses memcpy instead of a loop, which may or may not be faster; memory is now a union of smaller arrays of memory banks, for each function, such as work ram (WRAM), high ram (HRAM), ROM banks 0-n and etc; and lastly, some register code has been moved out of cpu.c for organisation.
Devlog 9 - Basic graphics (finally) Iāve finally gotten some basic picture processing unit (PPU) functionality implemented into the emulator, which will hopefully make debugging a lot easier going forward. Firstly, to implement this, I had to move the timing logic out of cpu.c and into cycles.c . This was so that, when the loop calls a CPU step, it also calls a PPU step at the same time. I also refactored some of the cycle functions and removed the ones that were no longer being used Then, I implemented the timing code for the PPU. This part and the actual rendering were mostly based on this tutorial series that shows you how to make a GB emulator in javascript, which I based my C code on. Basically, the PPU runs on the clock as the CPU, and a ādotā on the PPU is equal to a T-cycle on the CPU. The PPU renders progressively, like a CRT television, and so also has modes to move the nonexistent electron beam down and back to the start of a scanline before it continutes rendering, known as VBLANK and HBLANK, (vertical and horizontal blank). The Pan Docs were also quite helpful for understanding the basic functionality, although the tutorial was useful to understand the programmatic side. The PPU also has 2 other modes, used for scanning the Object Attribute Memory (OAM) and actually drawing, and all 4 modes have a precise amount of dots that they run for. In terms of actual rendering, the Gameboy doesnāt have a full framebuffer, and instead uses different tiles to create a full image. I implemented a function that, when the CPU writes to VRAM, also updates the data in a separate tileset variables, for easier access in the render pipeline. Each tile is 16 bytes, with 2 bits per pixel colour depth, and 8 x 8 pixels per tile. As the Gameboy renders progressively, I then implemented the function to draw a scanline to the screen, based on the tile data in the background layer. The afformentioned tutorial series helped a lot here, as the tiles need to have a specific offset and mapping applied which would be quite hard to figure out on my own. Then, that function calls a draw pixel function for each each of the 160 pixels in a scanline, which writes the corresponding colour from the palette to an SDL_Surface as the framebuffer. Once the frame is finished, the surface is converted into a texture, which is then scaled to fit the screen size and rendered, with another frame being made afterwards. Below you can see the screen of the previously mentioned blarggās test ROM 7.
Devlog 10 - (basically) Finishing the CPU After the last devlog, I did some cleaning up with the graphics, which included fixing the last scanline not being rendered, and also adding a screen before the ROM is loaded, telling the user which key to press to load the ROM. I also set up some functions to allow easier access to the I/O registers related to the PPU, such as the x and y scroll and the control flags. Afterwards, I felt a bit burnt out of the PPU, so I went back to finish off most of the CPU. This started with implementing the CFL, CPL, CF, CPL, SCF, SLA, SRA, RL, RLA, RLC, RRC, RLCA, and RRCA instructions, most of which are bit rotations, so once I had a few implemented, it got easier to add the rest. This allowed me to pass CPU test ROM 9. Then, I implemented the rest of the CB prefix instructions, which were all bit related; BIT, RES and SET, which allowed me to pass ROM 10 After those, I implemented some stack pointer related instructions; ADD SP,d and LD HL SP+d, which then allowed me to pass ROM 3 Finally, I added DAA. This one is a bit more unique, as it is designed to convert the result of an add or subtract with binary coded decimal numbers, into a binary coded decimal number. This gets a bit complicated, but I used these resources ( Demystifying the GameBoy/SM83ās DAA Instruction and the RGBDS assembler/linker instruction documentation ) to implement this properly, allowing me to also pass test ROM 1 With a semi-functioning PPU, and some fixes, I was also able to boot into the copyright screen of Tetris for the first time, although I couldnāt get any further without implementing interrupts. The image below shows that, and my emulator passing all of the previously mentioned test ROMs. The only test ROM I havenāt passed yet is the 2nd one, which also requires interrupts.
Devlog 11 - Input, Interrupts, and (semi-functional) Sprites The next thing I added was joypad input. I had already set up a basic keyboard key checker with SDL events, so I had to connect it to the Gameboy. The joypad in the Gameboy writes to address 0xFF00. The Gameboy uses this as basically a 2x4 matrix. When bit 4 is set, the d-pad buttons are readable, and when bit 5 is set, the A, B, select, and start buttons are readable. I based my implementation of this off of jsGB again, which means I basically just made an array of 2 bytes; one representing the first row of the matrix, and another representing the second. Then when a button is pressed down, I set the corresponding bit to 0, and when it is released, set it back to 1. Then when the Gameboy tries to write to the register, I instead set a column variable, and when it tries to read it, I check the current column and return the correct row. Then, I tried to implement some basic sprite rendering. You can see this in a few of the screenshots below, although my implementation is currently broken. It (should) work like the background renderer, only instead checking each of the 40 sprites in the OAM section of memory, and seeing if they are part of the current line. However currently, I forgot to implement one of the ways to copy sprite data to OAM, meaning that the rendering only actually works in some specific test ROMs, and not Tetris at the moment. Then, I implemented some of the CPU interrupts, namely the VBLANK interrupt, which is the only one Tetris needs to boot. Interrupts have a register (0xFFFF) to enable each one individually, which each bit corresponding to an interrupt. Then, if an interrupt is enabled, when a source triggers it, the corresponding interrupt flag in 0xFF0F is set. On the next CPU step, it checks the interrupt flags, and if one is set, it then calls the specific interrupt handler for that interrupt. Currently, the only fully implemented one is the VBLANK interrupt, which is simply called when the PPU enters the VBLANK mode. This allows Tetris to boot. Unfortunately, I spent a lot of the time in the devlog trying to actually get Tetris in game, as although after implementing interrupts, I could get through the menus, it just spat out a garbled screen when I actually tried to play the game or even watch the title screen demo. At first, I thought this was a rendering bug, so I spend a lot of time scrutinising the PPU code. I used the dmg-acid2 PPU test to try to troubleshoot this (you can see the current, still inaccurate result below), and although I did find out that my placeholder halt code was causing some issues, it didnāt manage to solve the problem. I found a reddit thread that seemed to have the same issue, and a frustratingly deleted comment that seemed to have a solution but obviously I couldnāt use that. However, I managed to find an archiving tool that showed me what the comment was ; Tetris incorrectly writes to some area of the ROM, which causes a crash. All I had to do to fix this was block writes to the ROM area in memory, and it finally worked, although the sprites didnāt work as mentioned previously. Next devlog, I want to fix sprite rendering, hopefully get the PPU more accurate, and implement some of the timer functions, as Tetris uses those to get random blocks, and without them, all the block are squares.
Devlog 12 - Timers, HALT and MBCs Timers Iāve implemented the timer registers, which increment at a set interval based on the CPU clock. These are used for getting random numbers for Tetris, to pick random Tetriminos, and also used for other things, namely an interrupt is requested when one of the registers overflows and resets. These werenāt too hard to implement, and I based by implementation off of js-GB once again HALT and some interrupt fixes Previously, HALT, and some of the interrupt handling was basically a placeholder, meaning that it didnāt really run properly at all. Iāve now fixed that, meaning the emulator can now pass test ROM 2. I also implemented the STAT interrupt, although Iām not entirely sure it is accurate, as my PPU implementation still isnāt perfect. Memory Bank Controllers (MBCs) Finally, I added some basic support for the MBC1 chip that was frequently included on earlier Gameboy games. This allows the games to exceed the memory limit of 32KiB, instead including a mapper chip that allowed the switching of ROM banks. I based my implementation off of this blog of the development of the PlayKid emulator , and also partially off js-GB again. Now, the emulator is able to start bigger games, and Iāve tested Super Mario Land so far. This also allowed me to pass the combined version of all of the CPU instruction tests. Misc I also fixed a bug with the CPU instruction timing, allowing me to pass blarggās CPU timing test
Final Devlog (probably) - README and making the site pretty This will be a rather short devlog, but Iāve written the README.md file for the repo, and also uploaded the files to doodl0.github.io/gbweb/ , with a more Gameboy themed HTML page. You can visit yourself, or see it in the screenshot. I donāt think I can legally provide ROM files for you to play, so you have to upload your own. Currently, I can only guarantee Tetris and Super Mario Land work.
Quick Devlog to address ROMs If you donāt have your own ROMs, Iāve added a download link on the site for you to download a free homebrew Tic-Tac-Toe ROM, so you can test the emulator. Thereās also a demo video of me playing both Tetris and Super Mario Land, also on the site
Ships:
GBWeb Iāve made GBWeb, a basic Gameboy emulator, written in C, designed to run in your browser using WebAssembly and Emscripten It can: Accurately emulate the Gameboyās Z80 based CPU Run games with no memory bank controller, or with MBC1 Semi accurately emulate the Gameboyās picture processing unit (PPU) And run locally on your device, entirely within a browser How to try it: Before you try it, I would like to mention that I cannot legally provide Gameboy game ROM files to play, so you must use your own ROMs. In addition, not all ROMs will work, as the emulator isnāt perfectly accurate. The ones Iāve tested that work are Tetris, and Super Mario Land If you cannot provide a ROM, or otherwise cannot test it, I have also attached a video of me playing Tetris and Super Mario Land on it as a demonstration. You can find it here, on the Github , and thereās also a screenshot below. You can use it by either pressing the demo button, or going to doodl0.github.io/gbweb/ Controls D-Pad -> WASD keys A button -> L key B button -> K key Select button -> Backspace key Start button -> Enter key These are also shown before loading a ROM Challenges This project really challenged my knowledge of low-level systems; especially since I had never made an emulator or even written an assembly program before. I had to rely on a lot of resources that other people had freely compiled, as the Gameboy is fairly advanced, however as it is so old, thereās been plenty of time for others to figure out how it works. (You can see the resources I used in the README) Simultaneously, this was also my first Emscripten project, which added more complexity. Through the devlogs, I also had to undergo lots of trial an error, until something finally was accurate enough, which felt especially frustrating at times What Iām proud of Mostly, Iām just proud that it even works a bit; at the start of the project, I was a little generous with how quickly I thought I could finish this, and as I got further, I got more unconfident. However, Iām glad I actually made something semi-usable, even if compatibility isnāt great at the moment. This is less important, but Iām also proud of the graphics I made for project, such as the banner. I tried to stay close to the original Gameboyās palette and resolution for these, and I though it turned out well, if a bit overly green. Overall, I wish I just had more time in Stardance to continue working on this, but Iām happy with what I made so far....
|
1793613233.397134
|
1793699633.397134
|
|
29073
|
MR. ELECTRIC! by @Nicholas-Reyne | Stardance
|
Nicholas-Reyne
|
2
|
35.0
|
403
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-28T02:17:38Z", "hours": 9.0, "multiplier": 6.27, "payout": 55, "blessing": "neutral", "text": "I made an electric field simulator, and added two new key features from the last ship. The first being a ring charge, the second being a permittivity changer. I found the physics behind the ring charge to be very challenging, and it required many hours of brainstorming and drafting on paper to figure out. Iām very happy with how it all turned out, and I think the actual html now looks very pretty with the new background and organization!", "repo": "https://github.com/RaduUdrea1/Mr_Electric2", "demo": "https://raduudrea1.github.io/Mr_Electric2/"}, {"ship_num": 2, "ts": "2026-08-29T02:34:50Z", "hours": 26.0, "multiplier": 14.95, "payout": 348, "blessing": "neutral", "text": "I made an electric field simulator. It took about the past two or so months to actually figure out how anything works. Itās designed to help people visualize electric fields when doing electrostatics. It took a long time to learn the HTML, Python and JS to actually code it but Iām proud of the fact that it even exists. Future modes will include more stuff, and Iām happy to get a chance to ship it!", "repo": "https://github.com/RaduUdrea1/Mr_Electric2", "demo": "https://raduudrea1.github.io/Mr_Electric2/"}]...
|
[{"post_id": 74721, "ts": "202 [{"post_id": 74721, "ts": "2026-09-28T02:15:44Z", "hours": 4.9092, "text": "Hello all: I replaced the buggy dirac-delta mode with two new modes. The first is the ring charge mode, this creates a superposition of 36 point charges, which effectively simulates a continuous charged ring (not perfectly, but close enough to minimize error). This is especially useful for physics problems, as tons of them involve ring charges. Next, I added a mode that allowed you to change the permittivity of the space the charge is in, with a handful of presets ranging from the vacuum (free space) to pure water, all the way to titanium dioxide. In so doing, I also modified the guide and physics, enjoy these modes as you please. Furthermore, electric potential and electric potential energy were added to each mode, denoted by variables V and U. More additions to come in the future, stay tuned!"}, {"post_id": 68954, "ts": "2026-09-16T03:25:31Z", "hours": 3.9431, "text": "Hello all: I added a new background to make Mr. Electric feel less bland. I organized the information in the pages into blocks, this way it is easier to read, and less info-dumpy. I introduced a slider mode for the charges as well, this way you could drag the slider along and it would update the charge. Future changes are coming: Potentials, Electric Potential Energy, Better Dirac-Delta and more! Stay tuned!"}, {"post_id": 56994, "ts": "2026-08-29T01:55:13Z", "hours": 4.7481, "text": "Devlog 3: I added the ability to set a probe point on the first three run modes, the probe point will return electric field magnitude at that point, but it will also return the x, y and z components of that magnitude, so that anyone doing electrostatics problems can check their work as well. The graph now takes inputs in nanocoulombs, and it grows when larger inputs are put in, rather than changing the color. Guide and gallery have been updated to include these changes as well. Inputs have also been stacked neatly rather than arrayed one by one. Honest limits: One single color for all the plots, Gaussian mode not yet helpful because it still only contains one charge, and Dirac Delta is still just cosmetic! Future work will fix these!"}, {"post_id": 53475, "ts": "2026-08-24T01:20:19Z", "hours": 13.0117, "text": "Itās been a while since Iāve posted a devlog! This is Mr. Electric updates. Iāve brought the simulator into the html proper with a new simulate page. The code uses python connected to javascript. New features: Smoothed out the html and cleaned up any bugs. Added a simulate.html page where the simulator actually runs using Pyodide. Added dropdown options and menus to input values for the simulator. Future features: Planned expansion of simulator with more probe points, and drag and drop feature for probes. Ability to do actual calculations with the fields, and more dynamic fields that are prettier and smoother. Cleaner html and better style and buttons, including a unified nav style."}, {"post_id": 34082, "ts": "2026-07-24T15:36:43Z", "hours": 8.5542, "text": "This is the first devlog for my Mr. Electric project, its a small scale passion project designed to simulate electric fields with user input. I designed it over the span of about eight hours, alongside working the physics problems myself from Griffiths Electrodynamics Fourth Edition. Cursor assisted in debugging the code. The code uses NumPy, SciPy and Matplotlib. There are a few honest limits: I had to scale the arrows so nothing was generated close to the origin, the result was monstrous arrows because of the divide by zero issue. Dirac Delta is furthermore, simply a cosmetic feature. Dirac Delta represents particles, and graphically it is just an infinitely tall spike, I tried to simulate that in 3d and ended up with the current delta cluster. The project contains four run modes, one charge, two charge, Gaussian sphere plus probe and delta cluster. The main issue for this log was simply setting up the functions, and making sure everything worked! Up next is a public demo, more features, and a heatmap to help indicate relative vector strength."}]...
|
Title: MR. ELECTRIC! by @Nicholas-Reyne | Stardanc Title: MR. ELECTRIC! by @Nicholas-Reyne | Stardance
Devlogs:
This is the first devlog for my Mr. Electric project, its a small scale passion project designed to simulate electric fields with user input. I designed it over the span of about eight hours, alongside working the physics problems myself from Griffiths Electrodynamics Fourth Edition. Cursor assisted in debugging the code. The code uses NumPy, SciPy and Matplotlib. There are a few honest limits: I had to scale the arrows so nothing was generated close to the origin, the result was monstrous arrows because of the divide by zero issue. Dirac Delta is furthermore, simply a cosmetic feature. Dirac Delta represents particles, and graphically it is just an infinitely tall spike, I tried to simulate that in 3d and ended up with the current delta cluster. The project contains four run modes, one charge, two charge, Gaussian sphere plus probe and delta cluster. The main issue for this log was simply setting up the functions, and making sure everything worked! Up next is a public demo, more features, and a heatmap to help indicate relative vector strength.
Itās been a while since Iāve posted a devlog! This is Mr. Electric updates. Iāve brought the simulator into the html proper with a new simulate page. The code uses python connected to javascript. New features: Smoothed out the html and cleaned up any bugs. Added a simulate.html page where the simulator actually runs using Pyodide. Added dropdown options and menus to input values for the simulator. Future features: Planned expansion of simulator with more probe points, and drag and drop feature for probes. Ability to do actual calculations with the fields, and more dynamic fields that are prettier and smoother. Cleaner html and better style and buttons, including a unified nav style.
Devlog 3: I added the ability to set a probe point on the first three run modes, the probe point will return electric field magnitude at that point, but it will also return the x, y and z components of that magnitude, so that anyone doing electrostatics problems can check their work as well. The graph now takes inputs in nanocoulombs, and it grows when larger inputs are put in, rather than changing the color. Guide and gallery have been updated to include these changes as well. Inputs have also been stacked neatly rather than arrayed one by one. Honest limits: One single color for all the plots, Gaussian mode not yet helpful because it still only contains one charge, and Dirac Delta is still just cosmetic! Future work will fix these!
Hello all: I added a new background to make Mr. Electric feel less bland. I organized the information in the pages into blocks, this way it is easier to read, and less info-dumpy. I introduced a slider mode for the charges as well, this way you could drag the slider along and it would update the charge. Future changes are coming: Potentials, Electric Potential Energy, Better Dirac-Delta and more! Stay tuned!
Hello all: I replaced the buggy dirac-delta mode with two new modes. The first is the ring charge mode, this creates a superposition of 36 point charges, which effectively simulates a continuous charged ring (not perfectly, but close enough to minimize error). This is especially useful for physics problems, as tons of them involve ring charges. Next, I added a mode that allowed you to change the permittivity of the space the charge is in, with a handful of presets ranging from the vacuum (free space) to pure water, all the way to titanium dioxide. In so doing, I also modified the guide and physics, enjoy these modes as you please. Furthermore, electric potential and electric potential energy were added to each mode, denoted by variables V and U. More additions to come in the future, stay tuned!
Ships:
I made an electric field simulator. It took about the past two or so months to actually figure out how anything works. Itās designed to help people visualize electric fields when doing electrostatics. It took a long time to learn the HTML, Python and JS to actually code it but Iām proud of the fact that it even exists. Future modes will include more stuff, and Iām happy to get a chance to ship it!
I made an electric field simulator, and added two new key features from the last ship. The first being a ring charge, the second being a permittivity changer. I found the physics behind the ring charge to be very challenging, and it required many hours of brainstorming and drafting on paper to figure out. Iām very happy with how it all turned out, and I think the actual html now looks very pretty with the new background and organization!...
|
1793613234.6734734
|
1793699634.6734734
|
|
30620
|
DIY Surveillance system by @suklaasukkulayt | Star DIY Surveillance system by @suklaasukkulayt | Stardance...
|
suklaasukkulayt
|
1
|
1.42
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T17:25:02Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I canāt upload the video here, but itās in my devlog From my devlog: I made a DIY surveillance camera from an old (and broken :D) android phone. It uses the IP camera app and custom html code i made myself to show the camera feed in the apk file and the .html file. There isnāt any crazy features, like no remote control (you can do that with tailscale), but it still works well if you donāt need to use it without being home. The code supports live video and live audio but nothing else. I also 3d printed and modified (added a stand with tinkercad) a phone case for galaxy j5 (this is the phone i used), but it didnāt fit as you can see in the image. The apk file is kind of useless unless your camera is at the same ip as mine. Also i didnāt have hackatime properly set up when i started this, but 20min (which actually got logged) is actually pretty close to the time this took. Also @Makkonen helped me with this(i got the idea from him)", "repo": "https://github.com/suklaasukkulayt/kuuppacam", "demo": "https://suklaasukkulayt.github.io/kuuppacam/"}]...
|
[{"post_id": 35314, "ts": "202 [{"post_id": 35314, "ts": "2026-07-26T17:11:26Z", "hours": 1.4189, "text": "Big update to KuuppaCam! I made the site look way better and fixed some stuff. I used github copilot to add recording so you can now record from your camera and I also used it to add easy IP changing so you can use it without editing the code. Also the IP address is now in https so itās more secure and hopefully works better. THIS IS THE FINAL VERSION OF KUUPPACAM, the old version is still in github (kuuppacam-old.html) (Also the video below has no audio because apparently the zorin os video recorder doesnāt have audio recording :D)"}, {"post_id": 22961, "ts": "2026-07-05T17:15:27Z", "hours": 0.3219, "text": "I made a DIY surveillance camera from an old (and broken :D) android phone. It uses the IP camera app and custom html code i made myself to show the camera feed in the apk file and the .html file. There isnāt any crazy features, like no remote control (you can do that with tailscale), but it still works well if you donāt need to use it without being home. The code supports live video and live audio but nothing else. I also 3d printed and modified (added a stand with tinkercad) a phone case for galaxy j5 (this is the phone i used), but it didnāt fit as you can see in the image. The apk file is kind of useless unless your camera is at the same ip as mine. Also i didnāt have hackatime properly set up when i started this, but 20min (which actually got logged) is actually pretty close to the time this took. Also @Makkonen helped me with this(i got the idea from him)"}]...
|
Title: DIY Surveillance system by @suklaasukkulayt Title: DIY Surveillance system by @suklaasukkulayt | Stardance
Devlogs:
I made a DIY surveillance camera from an old (and broken :D) android phone. It uses the IP camera app and custom html code i made myself to show the camera feed in the apk file and the .html file. There isnāt any crazy features, like no remote control (you can do that with tailscale), but it still works well if you donāt need to use it without being home. The code supports live video and live audio but nothing else. I also 3d printed and modified (added a stand with tinkercad) a phone case for galaxy j5 (this is the phone i used), but it didnāt fit as you can see in the image. The apk file is kind of useless unless your camera is at the same ip as mine. Also i didnāt have hackatime properly set up when i started this, but 20min (which actually got logged) is actually pretty close to the time this took. Also @Makkonen helped me with this(i got the idea from him)
Big update to KuuppaCam! I made the site look way better and fixed some stuff. I used github copilot to add recording so you can now record from your camera and I also used it to add easy IP changing so you can use it without editing the code. Also the IP address is now in https so itās more secure and hopefully works better. THIS IS THE FINAL VERSION OF KUUPPACAM, the old version is still in github (kuuppacam-old.html) (Also the video below has no audio because apparently the zorin os video recorder doesnāt have audio recording :D)
Ships:
I canāt upload the video here, but itās in my devlog From my devlog: I made a DIY surveillance camera from an old (and broken :D) android phone. It uses the IP camera app and custom html code i made myself to show the camera feed in the apk file and the .html file. There isnāt any crazy features, like no remote control (you can do that with tailscale), but it still works well if you donāt need to use it without being home. The code supports live video and live audio but nothing else. I also 3d printed and modified (added a stand with tinkercad) a phone case for galaxy j5 (this is the phone i used), but it didnāt fit as you can see in the image. The apk file is kind of useless unless your camera is at the same ip as mine. Also i didnāt have hackatime properly set up when i started this, but 20min (which actually got logged) is actually pretty close to the time this took. Also @Makkonen helped me with this(i got the idea from him)...
|
1793613235.8410993
|
1793699635.8410993
|
|
51437
|
VasuOS by @Paachu | Stardance
|
Paachu
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T17:28:49Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "VasuOS V1.0.0 Officially shipped Built over 5 days with around 5 hours of coding , starting from the Stardance WebOS 1 mission. Final Features File system File viewer Image viewer with multiple windows Terminal with an Easter egg Google Search App launcher Window dragging, resizing, minimizing and maximizing Credits page Built With HTML CSS JavaScript Python filesystem generator Live os.vasudevonden.in Status SHIPPED ā VasuOS v1.0.0", "repo": "https://github.com/Along-the-skies/VasuOS", "demo": "https://os.vasudevonden.in/"}]...
|
[{"post_id": 55682, "ts": "202 [{"post_id": 55682, "ts": "2026-08-27T17:26:05Z", "hours": 0.5908, "text": "Devlog - Day 4 Final Log Before Ship VasuOS v1.0.0 is ready After around 5 days of working on this project and about 5 hours of coding, VasuOS is finally done. I found MeowOS while looking through Stardance projects and wondered how a website could look this good. Then I found the WebOS 1 beginner mission and decided to try it myself. Today, 27-08-2026 , I finished VasuOS. Features File system Terminal with an Easter egg Google Search File/Image Viewer with multiple windows Credits page My frontend-designer friend also said it looks good, so Iām calling that a win. This is just VasuOS v1.0.0 . Live os.vasudevonden.in"}, {"post_id": 52305, "ts": "2026-08-22T12:47:14Z", "hours": 2.0194, "text": "Devlog - Day 3š» Today, I updated VasuOS with so many tiny Ux improvements What I built A Python script to initialise Virtual File system by Files directory in project root Folder navigation in Files app Files,Image Viewer and Unsupported Error handler Minimize-close functions rebuilt for better UX App running indicators STAY TUNED FOR UPDATES < VasuOS > by Vasudev"}, {"post_id": 51139, "ts": "2026-08-20T17:11:04Z", "hours": 1.2289, "text": "Devlog ā Day 2 š» Today , I wanted to level up VasuOS ! What I built š» VasuOS Terminal āØļø help command š§¹ clear command š¢ echo command with arguments ā Unknown command handling š Live system clock šŖ Toggleable maximize / restore š¦ Split Terminal and Clock into separate JS files What I learned Basic command parsing with split() How to handle command arguments JavaScript modules Using Date() for a live clock More DOM manipulation Problems š echo vasu was being treated as one whole command š Terminal output formatting got weird script.js started getting pretty big file:// caused CORS issues while testing locally Had to switch to type=\"module\" for JS imports š ā Easter egg: banana! Next š Add more Terminal commands Add window focus Polish the desktop UX Make VasuOS feel more like an actual OS š„ļø"}, {"post_id": 50410, "ts": "2026-08-19T15:57:00Z", "hours": 1.2833, "text": "Devlog ā Day 1 š„ļø Today I started building VasuOS ! What I built š„ļø Desktop š Top bar š Floating dock š Files window šŖ Close / minimize / maximize š±ļø Window dragging āļø Window resizing š Window boundaries What I learned How HTML + CSS positioning works JavaScript mouse events Event listeners Basic DOM manipulation How window dragging and resizing actually works Problems š The legendary ant effect šāWindow TPs like a ant when touching mouse pointer Text selection while dragging Window escaping the screen transform causing positioning problems A few resize event bugs Next š Polish the window manager Improve minimize/maximize Add window focus Start building the Terminal š»"}, {"post_id": 50330, "ts": "2026-08-19T14:30:16Z", "hours": 0.4931, "text": "VasuOS WebOs by Vasu First Look š"}]...
|
Title: VasuOS by @Paachu | Stardance
Devlogs:
Vas Title: VasuOS by @Paachu | Stardance
Devlogs:
VasuOS WebOs by Vasu First Look š
Devlog ā Day 1 š„ļø Today I started building VasuOS ! What I built š„ļø Desktop š Top bar š Floating dock š Files window šŖ Close / minimize / maximize š±ļø Window dragging āļø Window resizing š Window boundaries What I learned How HTML + CSS positioning works JavaScript mouse events Event listeners Basic DOM manipulation How window dragging and resizing actually works Problems š The legendary ant effect šāWindow TPs like a ant when touching mouse pointer Text selection while dragging Window escaping the screen transform causing positioning problems A few resize event bugs Next š Polish the window manager Improve minimize/maximize Add window focus Start building the Terminal š»
Devlog ā Day 2 š» Today , I wanted to level up VasuOS ! What I built š» VasuOS Terminal āØļø help command š§¹ clear command š¢ echo command with arguments ā Unknown command handling š Live system clock šŖ Toggleable maximize / restore š¦ Split Terminal and Clock into separate JS files What I learned Basic command parsing with split() How to handle command arguments JavaScript modules Using Date() for a live clock More DOM manipulation Problems š echo vasu was being treated as one whole command š Terminal output formatting got weird script.js started getting pretty big file:// caused CORS issues while testing locally Had to switch to type="module" for JS imports š ā Easter egg: banana! Next š Add more Terminal commands Add window focus Polish the desktop UX Make VasuOS feel more like an actual OS š„ļø
Devlog - Day 3š» Today, I updated VasuOS with so many tiny Ux improvements What I built A Python script to initialise Virtual File system by Files directory in project root Folder navigation in Files app Files,Image Viewer and Unsupported Error handler Minimize-close functions rebuilt for better UX App running indicators STAY TUNED FOR UPDATES < VasuOS > by Vasudev
Devlog - Day 4 Final Log Before Ship VasuOS v1.0.0 is ready After around 5 days of working on this project and about 5 hours of coding, VasuOS is finally done. I found MeowOS while looking through Stardance projects and wondered how a website could look this good. Then I found the WebOS 1 beginner mission and decided to try it myself. Today, 27-08-2026 , I finished VasuOS. Features File system Terminal with an Easter egg Google Search File/Image Viewer with multiple windows Credits page My frontend-designer friend also said it looks good, so Iām calling that a win. This is just VasuOS v1.0.0 . Live os.vasudevonden.in
Ships:
VasuOS V1.0.0 Officially shipped Built over 5 days with around 5 hours of coding , starting from the Stardance WebOS 1 mission. Final Features File system File viewer Image viewer with multiple windows Terminal with an Easter egg Google Search App launcher Window dragging, resizing, minimizing and maximizing Credits page Built With HTML CSS JavaScript Python filesystem generator Live os.vasudevonden.in Status SHIPPED ā VasuOS v1.0.0...
|
1793613237.0643134
|
1793699637.0643134
|
|
116
|
My first slack bot! by @remymoreau12 | Stardance
|
remymoreau12
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-01T22:38:33Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a slack bot! Thats so cool", "repo": "https://github.com/squeakycleanfreshie-cloud/Totoro-Slack-Bot", "demo": "https://hackclub.slack.com/archives/C0B9GUMA326"}]...
|
[{"post_id": 187, "ts": "2026- [{"post_id": 187, "ts": "2026-06-01T06:43:42Z", "hours": 0.4228, "text": "I setup my slack bot! Iām working on adding more functions soon"}]...
|
Title: My first slack bot! by @remymoreau12 | Star Title: My first slack bot! by @remymoreau12 | Stardance
Devlogs:
I setup my slack bot! Iām working on adding more functions soon
Ships:
I made a slack bot! Thats so cool...
|
1793613238.3084455
|
1793699638.3084455
|
|
23188
|
My very own WebOS by @Derpyman | Stardance
|
Derpyman
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T15:47:37Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an OS inspired by cats. The most challenging aspects were creating a grid based organizational system and creating the advanced app: Purrgram (Instagram but for cats). Iām proud of the chibi cat implementation akin to a companion extension.", "repo": "https://github.com/AC583/KittyOS", "demo": "https://ac583.github.io/KittyOS/"}]...
|
[{"post_id": 17667, "ts": "202 [{"post_id": 17667, "ts": "2026-06-28T15:36:11Z", "hours": 0.4833, "text": "Implemented an Instagram type app that allows the user to scroll through reels with cats."}, {"post_id": 13288, "ts": "2026-06-21T19:12:17Z", "hours": 0.8864, "text": "Added a chibi cat extension can be fed and pet and has different reactions."}, {"post_id": 12877, "ts": "2026-06-21T03:04:28Z", "hours": 1.5986, "text": "Basic Functionality"}]...
|
Title: My very own WebOS by @Derpyman | Stardance
Title: My very own WebOS by @Derpyman | Stardance
Devlogs:
Basic Functionality
Added a chibi cat extension can be fed and pet and has different reactions.
Implemented an Instagram type app that allows the user to scroll through reels with cats.
Ships:
I made an OS inspired by cats. The most challenging aspects were creating a grid based organizational system and creating the advanced app: Purrgram (Instagram but for cats). Iām proud of the chibi cat implementation akin to a companion extension....
|
1793613239.474114
|
1793699639.474114
|
|
38090
|
Frictionless by @BestSpark687090 | Stardance
|
BestSpark687090
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-22T05:14:05Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "heya! basically, this is a duplicate tab remover. it basically lets you remove your tabs based off of the url, icon url, or the title! if youāre like me, you always have TOO MANY TABS š and you gotta got rid of them somehow. now i know it might be a lil weird, but hey, it works! and as they say usually, if something works, donāt try to fix it⦠or something like that. i definitely had some interesting times making this. maybe youāll use it to its advantage?", "repo": "https://github.com/BestSpark687090/duplicate_tab_remover_extension", "demo": "https://github.com/BestSpark687090/duplicate_tab_remover_extension/releases"}]...
|
[{"post_id": 32780, "ts": "202 [{"post_id": 32780, "ts": "2026-07-22T05:02:46Z", "hours": 0.4472, "text": "devloggie numberie three styling has been done better i guess"}, {"post_id": 32760, "ts": "2026-07-22T03:42:05Z", "hours": 0.7867, "text": "devlog number 2 goofy styling has been added 0.25 transition between things btw yippee"}, {"post_id": 32637, "ts": "2026-07-21T22:28:53Z", "hours": 1.5975, "text": "devlog number one i guess? so i made the duplicate tab remover. basically, its entire goal is to remove your duplicate tabs based off of what you select. you can select all of them by the way if you wanted to. okay thatās it bye :)"}]...
|
Title: Frictionless by @BestSpark687090 | Stardanc Title: Frictionless by @BestSpark687090 | Stardance
Devlogs:
devlog number one i guess? so i made the duplicate tab remover. basically, its entire goal is to remove your duplicate tabs based off of what you select. you can select all of them by the way if you wanted to. okay thatās it bye :)
devlog number 2 goofy styling has been added 0.25 transition between things btw yippee
devloggie numberie three styling has been done better i guess
Ships:
heya! basically, this is a duplicate tab remover. it basically lets you remove your tabs based off of the url, icon url, or the title! if youāre like me, you always have TOO MANY TABS š and you gotta got rid of them somehow. now i know it might be a lil weird, but hey, it works! and as they say usually, if something works, donāt try to fix it⦠or something like that. i definitely had some interesting times making this. maybe youāll use it to its advantage?...
|
1793613240.667083
|
1793699640.667083
|
|
3228
|
gnn pcna by @advay_awesomer | Stardance
|
advay_awesomer
|
1
|
16.0
|
188
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T20:17:45Z", "hours": 16.0, "multiplier": 18.82, "payout": 188, "blessing": "neutral", "text": "Made GNN-PCNA: a graph neural network that scores which residues on PCNA ā a notoriously hard cancer drug target ā are worth investigating as hidden (ācrypticā) pockets. It reads a protein as two graphs at once (3D contacts + backbone chain) and fuses them with a learned attention gate ā a GATv2 design the standard baseline (PocketMiner) doesnāt use. Hardest part wasnāt the model ā it was catching homology leakage in my own data. My first benchmark looked great until I ran MMseqs2 and found near-identical proteins (99% identity!) sitting across the train/test split. So I deleted my own headline numbers and rebuilt everything on a clean 30%-homology split. The honest score came out lower ā and thatās the whole point. Proud of: itās engineered to not overclaim. Every output is framed as āhypothesis generation,ā an automated verifier catches my own mistakes, and an ablation proves how much comes from sequence vs. structure. To test it: open the demo, pick a PCNA structure (try 8GLA or 1W60), and watch it score every residue in ~2s with a 3D viewer + heatmap. Heads-up: the live demo runs the lightweight model; the headline AUPRC/AUROC come from a heavier ESM2 model (too big to host free). Full story in the repoās DEVLOG.", "repo": "https://github.com/advaycode/gnnpcna", "demo": "https://advaycode.github.io/gnnpcna/"}]...
|
[{"post_id": 13820, "ts": "202 [{"post_id": 13820, "ts": "2026-06-22T17:19:21Z", "hours": 15.8911, "text": "first making a memory base for the gnn"}]...
|
Title: gnn pcna by @advay_awesomer | Stardance
De Title: gnn pcna by @advay_awesomer | Stardance
Devlogs:
first making a memory base for the gnn
Ships:
Made GNN-PCNA: a graph neural network that scores which residues on PCNA ā a notoriously hard cancer drug target ā are worth investigating as hidden (ācrypticā) pockets. It reads a protein as two graphs at once (3D contacts + backbone chain) and fuses them with a learned attention gate ā a GATv2 design the standard baseline (PocketMiner) doesnāt use. Hardest part wasnāt the model ā it was catching homology leakage in my own data. My first benchmark looked great until I ran MMseqs2 and found near-identical proteins (99% identity!) sitting across the train/test split. So I deleted my own headline numbers and rebuilt everything on a clean 30%-homology split. The honest score came out lower ā and thatās the whole point. Proud of: itās engineered to not overclaim. Every output is framed as āhypothesis generation,ā an automated verifier catches my own mistakes, and an ablation proves how much comes from sequence vs. structure. To test it: open the demo, pick a PCNA structure (try 8GLA or 1W60), and watch it score every residue in ~2s with a 3D viewer + heatmap. Heads-up: the live demo runs the lightweight model; the headline AUPRC/AUROC come from a heavier ESM2 model (too big to host free). Full story in the repoās DEVLOG....
|
1793613241.8599699
|
1793699641.8599699
|
|
6841
|
Snake! by @zahran | Stardance
|
zahran
|
1
|
5.0
|
79
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T20:35:29Z", "hours": 5.0, "multiplier": 13.26, "payout": 79, "blessing": "neutral", "text": "I started learning Java at the beginning of June, and to test my skills I recreated Snake in Java. You can control the snake using WASD/arrow keys, and reset the game using R. It features modifiers that let you adjust the snakeās speed and board size, and you can enable other modifiers as well. During development, I faced a lot of minor challenges caused by me writing something incorrectly and then battling with the bug for 5-10 minutes or so. Since itās my first project made using Java, I tried to do most things on my own but I did reference a video if I got too stuck on one thing. However, Iām super proud of achieving this, for two main reasons: Itās my first project made in Java, and itās actually usable and fun to play. Itās a functional game that people can play. This is especially important because Iām planning to make a platformer in C++ soon, so this was a nice warmup for game development. Anyway, I hope you enjoy my Snake game! :)", "repo": "https://github.com/HughMann635/SnakeGame", "demo": "https://github.com/HughMann635/SnakeGame/releases/tag/Initializing"}]...
|
[{"post_id": 19396, "ts": "202 [{"post_id": 19396, "ts": "2026-06-30T18:21:18Z", "hours": 0.4228, "text": "I just fixed two bugs/issues: Made it so you can no longer click a button while the game is running Fixed a bug where if you mashed two inputs in the same frame, your snake could crash (e.g. moving down and mashing the right and up inputs). I fixed this by adding a check to make sure you can only switch directions once per frame. How I did it: I made a boolean called hasMoved, set it to false, and made it check for if hasMoved was false. It also sets hasMoved to true after you change direction and sets it back to false at the end of the frame."}, {"post_id": 19338, "ts": "2026-06-30T16:53:18Z", "hours": 2.1356, "text": "Itās been a hot minute since I posted a devlog, but I think Iāve more or less finished the game. Hereās what Iāve added: Interactive buttons that let you toggle/change the snakeās speed, size of the board, and different modifiers such as disabled collisions and mines that spawn randomly on the map Fixed a bunch of pre-existing bugs (like with score tracking) and new bugs (working out the mines was so annoying holy) yeah thatās pretty much it I think. Next steps: Iāll look into making it resizable/of different dimensions. Honestly, I might not do this one because a lot of my positions/coordinates were hard coded so it might be a pain to rework, but Iāll think about it. Iāll fix any remaining bugs that I can catch. I know thereās one that crashes the snake if you try to mash two directions together. And last but not least, Iām gonna start preparing to ship!"}, {"post_id": 17227, "ts": "2026-06-27T22:53:23Z", "hours": 0.7336, "text": "Ok so I went and fixed all the bugs, there were a LOT of bugs. hereās a couple: Snake movement and apple generation were happening incorrectly; I use a system where different variables like appleX, appleY, and an array for x and y values of each snake segment are stored as values between 1 and the length of the board (boardDim). Theyāre then multiplied by the dimension of each cell(cellDim). I initially forgot to multiply by cellDim so the snake was moving at a 1 pixel/second speed and the apple was confined to the top left corner. The borders of the cells were not being generated I didnāt initialize the arrays that contain the positions for each of the snakeās segments, causing the game to not run at all initially Up and down controls were reversed; borders did not work If you mash 2 directions, you can crash: e.g. if youāre going up, then mash left and down, the program interprets your down input as the latest one and essentially pushes you into yourself There are probably some more I havenāt explored yet, but for now Iām gonna work on the main menu."}, {"post_id": 17195, "ts": "2026-06-27T22:05:51Z", "hours": 1.1186, "text": "This time I completed pretty much all the basic gameplay mechanics and the game should technically work once I fix up any bugs. However, there are still bugs: quite a few of them, actually, since I kinda just brute forced my way through this stage of development with code that I thought should work. Anyway, once I get any bugs that stop me from running the game sorted out, Iāll refine the bugs that are impacting gameplay (there are def gonna be a couple of bugs there too). Then Iāll probably get started on designing a main menu."}, {"post_id": 16553, "ts": "2026-06-26T22:31:46Z", "hours": 0.5861, "text": "I started learning Java at the beginning of June, and to test my skills Iā making a guided project in Java. I decided to recreate Snake, using the video attached in the README file to help guide me. Iāll try to use it as minimally as possible, but if I get stuck Iāll watch the video to learn where to go next. So far Iāve just set up files and classes/functions as mentioned in the video, and I also set up a couple of variables and some code for a few functions on my own. Next time Iāll work on gameplay aspects, then Iāll move on to coding a death screen completely on my own."}]...
|
Title: Snake! by @zahran | Stardance
Devlogs:
I s Title: Snake! by @zahran | Stardance
Devlogs:
I started learning Java at the beginning of June, and to test my skills Iā making a guided project in Java. I decided to recreate Snake, using the video attached in the README file to help guide me. Iāll try to use it as minimally as possible, but if I get stuck Iāll watch the video to learn where to go next. So far Iāve just set up files and classes/functions as mentioned in the video, and I also set up a couple of variables and some code for a few functions on my own. Next time Iāll work on gameplay aspects, then Iāll move on to coding a death screen completely on my own.
This time I completed pretty much all the basic gameplay mechanics and the game should technically work once I fix up any bugs. However, there are still bugs: quite a few of them, actually, since I kinda just brute forced my way through this stage of development with code that I thought should work. Anyway, once I get any bugs that stop me from running the game sorted out, Iāll refine the bugs that are impacting gameplay (there are def gonna be a couple of bugs there too). Then Iāll probably get started on designing a main menu.
Ok so I went and fixed all the bugs, there were a LOT of bugs. hereās a couple: Snake movement and apple generation were happening incorrectly; I use a system where different variables like appleX, appleY, and an array for x and y values of each snake segment are stored as values between 1 and the length of the board (boardDim). Theyāre then multiplied by the dimension of each cell(cellDim). I initially forgot to multiply by cellDim so the snake was moving at a 1 pixel/second speed and the apple was confined to the top left corner. The borders of the cells were not being generated I didnāt initialize the arrays that contain the positions for each of the snakeās segments, causing the game to not run at all initially Up and down controls were reversed; borders did not work If you mash 2 directions, you can crash: e.g. if youāre going up, then mash left and down, the program interprets your down input as the latest one and essentially pushes you into yourself There are probably some more I havenāt explored yet, but for now Iām gonna work on the main menu.
Itās been a hot minute since I posted a devlog, but I think Iāve more or less finished the game. Hereās what Iāve added: Interactive buttons that let you toggle/change the snakeās speed, size of the board, and different modifiers such as disabled collisions and mines that spawn randomly on the map Fixed a bunch of pre-existing bugs (like with score tracking) and new bugs (working out the mines was so annoying holy) yeah thatās pretty much it I think. Next steps: Iāll look into making it resizable/of different dimensions. Honestly, I might not do this one because a lot of my positions/coordinates were hard coded so it might be a pain to rework, but Iāll think about it. Iāll fix any remaining bugs that I can catch. I know thereās one that crashes the snake if you try to mash two directions together. And last but not least, Iām gonna start preparing to ship!
I just fixed two bugs/issues: Made it so you can no longer click a button while the game is running Fixed a bug where if you mashed two inputs in the same frame, your snake could crash (e.g. moving down and mashing the right and up inputs). I fixed this by adding a check to make sure you can only switch directions once per frame. How I did it: I made a boolean called hasMoved, set it to false, and made it check for if hasMoved was false. It also sets hasMoved to true after you change direction and sets it back to false at the end of the frame.
Ships:
I started learning Java at the beginning of June, and to test my skills I recreated Snake in Java. You can control the snake using WASD/arrow keys, and reset the game using R. It features modifiers that let you adjust the snakeās speed and board size, and you can enable other modifiers as well. During development, I faced a lot of minor challenges caused by me writing something incorrectly and then battling with the bug for 5-10 minutes or so. Since itās my first project made using Java, I tried to do most things on my own but I did reference a video if I got too stuck on one thing. However, Iām super proud of achieving this, for two main reasons: Itās my first project made in Java, and itās actually usable and fun to play. Itās a functional game that people can play. This is especially important because Iām planning to make a platformer in C++ soon, so this was a nice warmup for game development. Anyway, I hope you enjoy my Snake game! :)...
|
1793613243.060592
|
1793699643.060592
|
|
32857
|
Personal Portfolio Website by @Sourish-D | Stardan Personal Portfolio Website by @Sourish-D | Stardance...
|
Sourish-D
|
1
|
38.0
|
444
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T16:54:04Z", "hours": 38.0, "multiplier": 12.86, "payout": 444, "blessing": "neutral", "text": "I made a site to showcase my projects, achievements, and skills using React, Vite, and deployed on Vercel. Initially, I planned to make this on HTML, CSS, and JS but then realized there were a lot of repeated components, and that adding more in the future would be a lot harder, so I made a full switch to react. This also allowed me to make use of state fields which made the animations so much easier. The API connections are also a little bit difficult at the moment, the leetcode API especially tends to lose itās tokens really quickly and I tried circumventing that using local cache but it doesnāt seem to be working exactly as intended. Iāll probably fix that in the future, but the Last.FM (The music section) and the Github APIs work as intended. But yeah, Iām proud of the animations and the responsive design, and I believe this is the best site Iāve made. So, without further delay, welcome to my personal website!", "repo": "https://github.com/Sourish-D/Portfolio-Website", "demo": "https://my-portfolio-pi-sand-83.vercel.app/"}]...
|
[{"post_id": 56648, "ts": "202 [{"post_id": 56648, "ts": "2026-08-28T14:20:44Z", "hours": 7.8725, "text": "Final Devlog Before Ship! There was a LOT of changes I made in this devlog, mostly in preparation for ship. First, I added the Github and Leetcode API connections. Next, I made the site responsive, allowing phones and tablets to be able to view the site Afterwards, I did a LOT of refactoring in the code and reviewing the requirements to ship Changed the .readme file Found out that I was making HORRIBLE commit names and tried changing it and found out rebasing ruins your entire history and gave up on that Refactored my code to make it a cleaner (Found out what refactoring means too) Changed the Github and Leetcode APIs AGAIN because it kept running into rate limits But now itās done and I believe ready to ship!"}, {"post_id": 54713, "ts": "2026-08-25T19:45:55Z", "hours": 2.9658, "text": "Beginning of backend! Today I managed to get the back-end started with Vercel and now I have Last.FM API integration! At first, I tried using Spotify for the API but then I found out it requires premium, so I decided to switch over to Last.FM for the statistics. Back-end integration was a HASSLE, it took me forever to find out that I had to put the .env.local api keys in the vercel page as well."}, {"post_id": 54145, "ts": "2026-08-24T23:44:22Z", "hours": 8.8431, "text": "This devlog, I added a bunch of animations and began styling. As you scroll, the arms move components on/off the screen and I added a parchment and gold border theme to all the blocks. Soon, Iām going to change it to have a more consistent and varied theme, and then Iāll connect the APIs."}, {"post_id": 47206, "ts": "2026-08-14T23:37:01Z", "hours": 13.0169, "text": "Devlog 3 I decided to change site from HTML / CSS to React. This was because I just like the React framework a lot more and itāll make it easier to update it in the future. I also changed the entire structure of the page, adding a background and projects page. For now, itās all in simple colors and styling, but soon Iāll add an opus magnum (video game) theme across the whole site. Currently I have basic animations, as I apply the theme across the site I may add several smaller animations just to add to the āmechanicalā feel of it. I also have to begin API integration with Spotify, Github, etc. to complete the site. The video is just a quick run-through of everything."}, {"post_id": 26254, "ts": "2026-07-10T22:43:55Z", "hours": 2.5003, "text": "Added Certificates Page and Web Dev Projects page. Modified the top bar a bit and added many more assets. The last stretch includes re-learning how to open my old java projects that use mySQL (I got locked out šš) and to add a page talking about my current projects, stuff about the ESP2."}, {"post_id": 25097, "ts": "2026-07-09T02:38:17Z", "hours": 2.3428, "text": "Today, we began the project. Creating the home-bar and the drop-down associated with. Also began working on the āabout meā section. Will work towards adding more information in that section. Tomorrow, will work on the certificates and languages pages."}]...
|
Title: Personal Portfolio Website by @Sourish-D | Title: Personal Portfolio Website by @Sourish-D | Stardance
Devlogs:
Today, we began the project. Creating the home-bar and the drop-down associated with. Also began working on the āabout meā section. Will work towards adding more information in that section. Tomorrow, will work on the certificates and languages pages.
Added Certificates Page and Web Dev Projects page. Modified the top bar a bit and added many more assets. The last stretch includes re-learning how to open my old java projects that use mySQL (I got locked out šš) and to add a page talking about my current projects, stuff about the ESP2.
Devlog 3 I decided to change site from HTML / CSS to React. This was because I just like the React framework a lot more and itāll make it easier to update it in the future. I also changed the entire structure of the page, adding a background and projects page. For now, itās all in simple colors and styling, but soon Iāll add an opus magnum (video game) theme across the whole site. Currently I have basic animations, as I apply the theme across the site I may add several smaller animations just to add to the āmechanicalā feel of it. I also have to begin API integration with Spotify, Github, etc. to complete the site. The video is just a quick run-through of everything.
This devlog, I added a bunch of animations and began styling. As you scroll, the arms move components on/off the screen and I added a parchment and gold border theme to all the blocks. Soon, Iām going to change it to have a more consistent and varied theme, and then Iāll connect the APIs.
Beginning of backend! Today I managed to get the back-end started with Vercel and now I have Last.FM API integration! At first, I tried using Spotify for the API but then I found out it requires premium, so I decided to switch over to Last.FM for the statistics. Back-end integration was a HASSLE, it took me forever to find out that I had to put the .env.local api keys in the vercel page as well.
Final Devlog Before Ship! There was a LOT of changes I made in this devlog, mostly in preparation for ship. First, I added the Github and Leetcode API connections. Next, I made the site responsive, allowing phones and tablets to be able to view the site Afterwards, I did a LOT of refactoring in the code and reviewing the requirements to ship Changed the .readme file Found out that I was making HORRIBLE commit names and tried changing it and found out rebasing ruins your entire history and gave up on that Refactored my code to make it a cleaner (Found out what refactoring means too) Changed the Github and Leetcode APIs AGAIN because it kept running into rate limits But now itās done and I believe ready to ship!
Ships:
I made a site to showcase my projects, achievements, and skills using React, Vite, and deployed on Vercel. Initially, I planned to make this on HTML, CSS, and JS but then realized there were a lot of repeated components, and that adding more in the future would be a lot harder, so I made a full switch to react. This also allowed me to make use of state fields which made the animations so much easier. The API connections are also a little bit difficult at the moment, the leetcode API especially tends to lose itās tokens really quickly and I tried circumventing that using local cache but it doesnāt seem to be working exactly as intended. Iāll probably fix that in the future, but the Last.FM (The music section) and the Github APIs work as intended. But yeah, Iām proud of the animations and the responsive design, and I believe this is the best site Iāve made. So, without further delay, welcome to my personal website!...
|
1793613244.2281694
|
1793699644.2281694
|
|
36725
|
JUMPZ by @CY3er | Stardance
|
CY3er
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-19T23:54:17Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a old arcade game simeler to the old game pong! it has a full phyisics system and scoring/high score system, also some fun easter eggs:3", "repo": "https://github.com/cheeseface533-creator/JUMPZ", "demo": "https://scratch.mit.edu/projects/1362933951/"}]...
|
[{"post_id": 31510, "ts": "202 [{"post_id": 31510, "ts": "2026-07-19T23:45:35Z", "hours": 2.5169, "text": "H1 JUMPZ #5 - DONE! I finished the Project!! I added some easter eggs, wrote the read me, fixed the bug that had been PLAGEING ME FOR SO LONG (even tho its only been 2 daysā¦) I had SO MUCH FUN working on this project, and it was a nice intro into stardance with this being my first ship! (also my first time partisapating in hackclub ever!!!) I learned so much such as player movment with physiscs and alot of other things! link to the lapses ā> https://lapse.hackclub.com/timelapse/2hNCXXXRIWAZ <ā :3"}, {"post_id": 31361, "ts": "2026-07-19T18:03:24Z", "hours": 0.5839, "text": "JUMPZ #4 - BUGZ ;-; worked on makeing it so you cant just spam the super jump⦠made a oops and now need to figure out how to fix it not just spamming the sound⦠here is the link to the lapses: https://lapse.hackclub.com/timelapse/EhiV--gqZdOq :3"}, {"post_id": 30936, "ts": "2026-07-18T22:53:53Z", "hours": 1.3836, "text": "JUMPZ DEVLOG #3 - bug~ish fixing I worked on the fixing the problem of the imposible colectables. I very proud of the system i came up with! i made it so that there is a rotateing arrow around the balyou can press space and preforem a ājumpā mid air to get those hard to reach colectables! i also started work on the sounds! i also learned what the mod block does! and also ive been thinking of how to do the save load system my curent idea is to separadte into with dashes. but ill look and see what other people have done and learn from them! link to the lapse: ā> https://lapse.hackclub.com/timelapse/8yy6O1TpfAjS <ā thats it for now! :3"}, {"post_id": 30792, "ts": "2026-07-18T17:59:35Z", "hours": 1.6839, "text": "JUMPZ DEVLOG #2 - coin and scoring system Today i started on the socoreing system and the game over function. i made it so the scoreing system works by counding the number of time you hit the pattle. your āair timeā and the number of coins + the dificultey of geting them. i have ran into a problem⦠it just random chance if you get the coins so i need to come up with a way to make it skill based instead. so i got that going for me ;w; here is the link if you want to see the time lapse: https://lapse.hackclub.com/timelapse/ZDxZ--YPQKPx :3"}, {"post_id": 30515, "ts": "2026-07-18T04:39:43Z", "hours": 0.5986, "text": "JUMPZ DEVLOG #1 - Ball movement today i started working on a new game! it has been a long time since ive used scratch so im going to be useing it for this project! this game is called āJUMPZā the goal for this game is to to keep you ball up and to not let it touch the floor (like from bluey:3) you get scored based on the amount of coins you get the number of times you hit the paddle and your āair timeā some goals that i have for myself are to make a āsave and loadā system and also a working shop system! i did have to fix a werid bug that i created when i wanted the ball to jump around to the left and to the right randomly it would go that direction the just stop and start just bounding up and down nothing else but it turned out i just had a if statment i didnt need and it works just fine without it"}]...
|
Title: JUMPZ by @CY3er | Stardance
Devlogs:
JUMPZ Title: JUMPZ by @CY3er | Stardance
Devlogs:
JUMPZ DEVLOG #1 - Ball movement today i started working on a new game! it has been a long time since ive used scratch so im going to be useing it for this project! this game is called āJUMPZā the goal for this game is to to keep you ball up and to not let it touch the floor (like from bluey:3) you get scored based on the amount of coins you get the number of times you hit the paddle and your āair timeā some goals that i have for myself are to make a āsave and loadā system and also a working shop system! i did have to fix a werid bug that i created when i wanted the ball to jump around to the left and to the right randomly it would go that direction the just stop and start just bounding up and down nothing else but it turned out i just had a if statment i didnt need and it works just fine without it
JUMPZ DEVLOG #2 - coin and scoring system Today i started on the socoreing system and the game over function. i made it so the scoreing system works by counding the number of time you hit the pattle. your āair timeā and the number of coins + the dificultey of geting them. i have ran into a problem⦠it just random chance if you get the coins so i need to come up with a way to make it skill based instead. so i got that going for me ;w; here is the link if you want to see the time lapse: https://lapse.hackclub.com/timelapse/ZDxZ--YPQKPx :3
JUMPZ DEVLOG #3 - bug~ish fixing I worked on the fixing the problem of the imposible colectables. I very proud of the system i came up with! i made it so that there is a rotateing arrow around the balyou can press space and preforem a ājumpā mid air to get those hard to reach colectables! i also started work on the sounds! i also learned what the mod block does! and also ive been thinking of how to do the save load system my curent idea is to separadte into with dashes. but ill look and see what other people have done and learn from them! link to the lapse: ā> https://lapse.hackclub.com/timelapse/8yy6O1TpfAjS <ā thats it for now! :3
JUMPZ #4 - BUGZ ;-; worked on makeing it so you cant just spam the super jump⦠made a oops and now need to figure out how to fix it not just spamming the sound⦠here is the link to the lapses: https://lapse.hackclub.com/timelapse/EhiV--gqZdOq :3
H1 JUMPZ #5 - DONE! I finished the Project!! I added some easter eggs, wrote the read me, fixed the bug that had been PLAGEING ME FOR SO LONG (even tho its only been 2 daysā¦) I had SO MUCH FUN working on this project, and it was a nice intro into stardance with this being my first ship! (also my first time partisapating in hackclub ever!!!) I learned so much such as player movment with physiscs and alot of other things! link to the lapses ā> https://lapse.hackclub.com/timelapse/2hNCXXXRIWAZ <ā :3
Ships:
I made a old arcade game simeler to the old game pong! it has a full phyisics system and scoring/high score system, also some fun easter eggs:3...
|
1793613245.4303699
|
1793699645.4303699
|
|
39243
|
My own site! by @ronitserva | Stardance
|
ronitserva
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-29T07:50:08Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my very-own personal website. This was the first website Iāve ever built. It did go through a lot of transformations before I arrived at a good enough design and structure for the website. One important thing is that the website might get clunky if you zoom in/zoom out the website too much. I recommend to keep a 100% zoom ratio.", "repo": "https://github.com/Ronit-Serva/My-Personal-Website", "demo": "https://ronit-serva.github.io/My-Personal-Website/"}]...
|
[{"post_id": 36879, "ts": "202 [{"post_id": 36879, "ts": "2026-07-29T07:44:56Z", "hours": 4.5631, "text": "I redesigned my website (twice) along the way I learnt about how to create a header & footer and how to center elements in the viewport. Throughout the session the most learning has come by just reading through the source code of otherās website and making sense of it. It has been a very good imparter of knowledge on me. HEREāS the transformation: before- on the left (black) AFTER- on the right (blue)"}, {"post_id": 35068, "ts": "2026-07-26T07:58:36Z", "hours": 3.1514, "text": "I completely redesigned my website. I added my profile photo, my Social links (accessible via icons; which I figured out myself how to do)."}, {"post_id": 34230, "ts": "2026-07-24T19:14:03Z", "hours": 0.5903, "text": "I just built the very first version of my personal Site."}]...
|
Title: My own site! by @ronitserva | Stardance
De Title: My own site! by @ronitserva | Stardance
Devlogs:
I just built the very first version of my personal Site.
I completely redesigned my website. I added my profile photo, my Social links (accessible via icons; which I figured out myself how to do).
I redesigned my website (twice) along the way I learnt about how to create a header & footer and how to center elements in the viewport. Throughout the session the most learning has come by just reading through the source code of otherās website and making sense of it. It has been a very good imparter of knowledge on me. HEREāS the transformation: before- on the left (black) AFTER- on the right (blue)
Ships:
I made my very-own personal website. This was the first website Iāve ever built. It did go through a lot of transformations before I arrived at a good enough design and structure for the website. One important thing is that the website might get clunky if you zoom in/zoom out the website too much. I recommend to keep a 100% zoom ratio....
|
1793613246.6331098
|
1793699646.6331098
|
|
1147
|
My first slack bot! by @project516 | Stardance
|
project516
|
2
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-31T14:36:12Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a slack bot, itās really cool I was able to integrate it with slack and have it work in slack!", "repo": "https://github.com/Project516/project516sslackbot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B971J716C"}, {"ship_num": 2, "ts": "2026-06-04T18:01:06Z", "hours": 1.0, "multiplier": 1.07, "payout": 1, "blessing": "neutral", "text": "i made a simple slack bot!!! its hosted on nest", "repo": "https://github.com/Project516/project516sslackbot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B971J716C"}]...
|
[{"post_id": 2304, "ts": "2026 [{"post_id": 2304, "ts": "2026-06-04T18:29:42Z", "hours": 0.275, "text": "added documentation!"}, {"post_id": 2282, "ts": "2026-06-04T17:57:42Z", "hours": 0.8989, "text": "i made a slackbot that can do basic stuff!"}]...
|
Title: My first slack bot! by @project516 | Starda Title: My first slack bot! by @project516 | Stardance
Devlogs:
i made a slackbot that can do basic stuff!
added documentation!
Ships:
i made a simple slack bot!!! its hosted on nest
I made a slack bot, itās really cool I was able to integrate it with slack and have it work in slack!...
|
1793613247.8276906
|
1793699647.8276906
|
|
53258
|
professional portfolio by @kavy | Stardance
|
kavy
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T13:01:46Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a 3D interactive professional portfolio using React and Vite to showcase my projects, skills, and development journey. The challenging part was balancing the visual 3D experience with usability, responsiveness, and performance. Iām most proud that it represents actual things Iām building rather than just being a collection of claims. My main project right now is Kavyās AI, a full-stack AI workspace, and the portfolio gives people a way to explore that work. Anyone can test the portfolio by interacting with the 3D experience, exploring the projects, and checking it across different screen sizes.", "repo": "https://github.com/kavyjain15/kavy-portfolio", "demo": "https://kavyjain15.netlify.app"}]...
|
[{"post_id": 57211, "ts": "202 [{"post_id": 57211, "ts": "2026-08-29T09:58:51Z", "hours": 0.4247, "text": "My Professional Portfolio ā Devlog I am building my professional portfolio as more than a personal website. My goal is to create a modern, professional platform that represents my technical skills, projects, learning journey, problem-solving ability, and future ambitions in technology and AI. The portfolio will showcase my introduction, skills, projects, achievements, development journey, and professional contact information. I want every section to communicate something meaningful rather than simply listing technologies or accomplishments. A major focus will be my projects. Each project will explain what I built, why I built it, the technologies I used, challenges I faced, how I solved them, and what I learned. This will demonstrate practical engineering ability rather than just theoretical knowledge. One of my key projects is Kavyās AI, an AI-powered workspace built using Next.js, TypeScript, React, Tailwind CSS, NVIDIAās GPT-OSS-20B API, Supabase, and PostgreSQL. The project is evolving from a simple chatbot into a complete AI workspace with persistent conversations and plans for authentication, usage limits, projects, agents, file uploads, and other AI tools. I also want the portfolio to document my development journey through devlogs. These logs will record milestones, experiments, bugs, solutions, and lessons learned. I believe documenting failures is just as valuable as documenting successes because it shows how I approach real-world problems. My philosophy is to understand what I build instead of blindly copying solutions. When something breaks, I want to understand why it happened, how to diagnose it, and how to prevent it from happening again. The portfolio will continuously evolve as I learn and build more. My long-term goal is for it to demonstrate a clear progression from learning and experimenting to building, solving problems, deploying, and improving real technology projects. This portfolio is not just a website. It is a record of my growth as a technology professional and a showcase of what I can build."}]...
|
Title: professional portfolio by @kavy | Stardance Title: professional portfolio by @kavy | Stardance
Devlogs:
My Professional Portfolio ā Devlog I am building my professional portfolio as more than a personal website. My goal is to create a modern, professional platform that represents my technical skills, projects, learning journey, problem-solving ability, and future ambitions in technology and AI. The portfolio will showcase my introduction, skills, projects, achievements, development journey, and professional contact information. I want every section to communicate something meaningful rather than simply listing technologies or accomplishments. A major focus will be my projects. Each project will explain what I built, why I built it, the technologies I used, challenges I faced, how I solved them, and what I learned. This will demonstrate practical engineering ability rather than just theoretical knowledge. One of my key projects is Kavyās AI, an AI-powered workspace built using Next.js, TypeScript, React, Tailwind CSS, NVIDIAās GPT-OSS-20B API, Supabase, and PostgreSQL. The project is evolving from a simple chatbot into a complete AI workspace with persistent conversations and plans for authentication, usage limits, projects, agents, file uploads, and other AI tools. I also want the portfolio to document my development journey through devlogs. These logs will record milestones, experiments, bugs, solutions, and lessons learned. I believe documenting failures is just as valuable as documenting successes because it shows how I approach real-world problems. My philosophy is to understand what I build instead of blindly copying solutions. When something breaks, I want to understand why it happened, how to diagnose it, and how to prevent it from happening again. The portfolio will continuously evolve as I learn and build more. My long-term goal is for it to demonstrate a clear progression from learning and experimenting to building, solving problems, deploying, and improving real technology projects. This portfolio is not just a website. It is a record of my growth as a technology professional and a showcase of what I can build.
Ships:
I built a 3D interactive professional portfolio using React and Vite to showcase my projects, skills, and development journey. The challenging part was balancing the visual 3D experience with usability, responsiveness, and performance. Iām most proud that it represents actual things Iām building rather than just being a collection of claims. My main project right now is Kavyās AI, a full-stack AI workspace, and the portfolio gives people a way to explore that work. Anyone can test the portfolio by interacting with the 3D experience, exploring the projects, and checking it across different screen sizes....
|
1793613248.9921668
|
1793699648.9921668
|
|
53271
|
personalTerminal by @Lunn | Stardance
|
Lunn
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T02:52:01Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "helloooooo world! I built a personal site that processes inputs just like a real Linux CLI. The terminal includes several fun commands you can try, such as āwhoamiā to learn about me, and āneofetchā which displays Arch Linux setup. The feature iām most proud is the āmusicā command. if you type āmusic play 1ā, you can listen to my favorite track previews. Just type āhelpā in the terminal to get started!", "repo": "https://github.com/ZeroLogicDev/ahlun-localhost", "demo": "https://zerologicdev.github.io/ahlun-localhost/"}]...
|
[{"post_id": 57751, "ts": "202 [{"post_id": 57751, "ts": "2026-08-30T00:56:52Z", "hours": 1.6242, "text": "Devlog #3 Updated the music section to make it functional! Users can now list my top 10 favorite tracks and play previews directly inside the terminal using āmusic play [number]ā."}, {"post_id": 57246, "ts": "2026-08-29T10:58:28Z", "hours": 0.7347, "text": "Devlog #2 Added my top ten favorite tracks to the music section and hid some easter eggs. My next mission is figuring out how to make the audio work so we can actually play these tracks straight from the terminal!"}, {"post_id": 56870, "ts": "2026-08-28T20:59:48Z", "hours": 4.5769, "text": "Devlog #1 Just cooked up the MVP for my personal site⦠Welcome to my first devlog, getting ready to ship!"}]...
|
Title: personalTerminal by @Lunn | Stardance
Devl Title: personalTerminal by @Lunn | Stardance
Devlogs:
Devlog #1 Just cooked up the MVP for my personal site⦠Welcome to my first devlog, getting ready to ship!
Devlog #2 Added my top ten favorite tracks to the music section and hid some easter eggs. My next mission is figuring out how to make the audio work so we can actually play these tracks straight from the terminal!
Devlog #3 Updated the music section to make it functional! Users can now list my top 10 favorite tracks and play previews directly inside the terminal using āmusic play [number]ā.
Ships:
helloooooo world! I built a personal site that processes inputs just like a real Linux CLI. The terminal includes several fun commands you can try, such as āwhoamiā to learn about me, and āneofetchā which displays Arch Linux setup. The feature iām most proud is the āmusicā command. if you type āmusic play 1ā, you can listen to my favorite track previews. Just type āhelpā in the terminal to get started!...
|
1793613250.1857924
|
1793699650.1857924
|
|
26974
|
My very own WebOS by @Jimmy_Tropedo | Stardance
|
Jimmy_Tropedo
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-14T21:48:31Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made RockOS, a calm and tactile web operating system themed around mindfulness and rock balancing. What was challenging: Writing the custom 2D physics engine loop from scratch in Vanilla Javascript so the pebbles bounce off boundaries, transfer momentum realistically on collisions, and lock into stable stacked columns. What Iām proud of: The Web Audio API ocean waves synthesizer which generates soothing background sea noises mathematically without loading any heavy audio files, and the live search engine browser. How to test: Open the settings panel to turn on the wave sounds or scale the rocks, click and drag/throw the pebbles to balance them at the bottom, and use the Google Search bar to query live Wikipedia pages!", "repo": "https://github.com/JimmyTorpedo/webos", "demo": "https://jimmytorpedo.github.io/webos/"}]...
|
[{"post_id": 28555, "ts": "202 [{"post_id": 28555, "ts": "2026-07-14T21:34:43Z", "hours": 0.3644, "text": "shipped rockos rockos is officially completed and shipped! iāve finalized all the core features: built a custom 2D physics engine for pebble dragging, throwing velocity inertia, and elastic boundary collisions; wrote a low-frequency pink noise ocean waves sound synthesizer using the native Web Audio API for background nature sounds; connected a live Wikipedia query search API inside the simulated browser panel; styled all rocks with organic terracotta, sandstone, and slate gray colors matching the forest background; and added scaling multipliers and wallpaper changers in the Settings window. this project turned out so clean and calming to use. itās fully ready to deploy!"}, {"post_id": 17308, "ts": "2026-06-28T01:08:54Z", "hours": 1.3075, "text": "Starting rockos iāve had an idea for a new OS and now iām going to start building it and announcing it as the name for the RockOS. itās gonna be a super calm, minimalist workspace focusing on rock balancing and clean layouts. iām excited to start coding this and will log my progress here."}, {"post_id": 17151, "ts": "2026-06-27T20:50:52Z", "hours": 0.8581, "text": "v0.1: starting my webOS project, just a basic web page, more coming soon!!!"}]...
|
Title: My very own WebOS by @Jimmy_Tropedo | Stard Title: My very own WebOS by @Jimmy_Tropedo | Stardance
Devlogs:
v0.1: starting my webOS project, just a basic web page, more coming soon!!!
Starting rockos iāve had an idea for a new OS and now iām going to start building it and announcing it as the name for the RockOS. itās gonna be a super calm, minimalist workspace focusing on rock balancing and clean layouts. iām excited to start coding this and will log my progress here.
shipped rockos rockos is officially completed and shipped! iāve finalized all the core features: built a custom 2D physics engine for pebble dragging, throwing velocity inertia, and elastic boundary collisions; wrote a low-frequency pink noise ocean waves sound synthesizer using the native Web Audio API for background nature sounds; connected a live Wikipedia query search API inside the simulated browser panel; styled all rocks with organic terracotta, sandstone, and slate gray colors matching the forest background; and added scaling multipliers and wallpaper changers in the Settings window. this project turned out so clean and calming to use. itās fully ready to deploy!
Ships:
I made RockOS, a calm and tactile web operating system themed around mindfulness and rock balancing. What was challenging: Writing the custom 2D physics engine loop from scratch in Vanilla Javascript so the pebbles bounce off boundaries, transfer momentum realistically on collisions, and lock into stable stacked columns. What Iām proud of: The Web Audio API ocean waves synthesizer which generates soothing background sea noises mathematically without loading any heavy audio files, and the live search engine browser. How to test: Open the settings panel to turn on the wave sounds or scale the rocks, click and drag/throw the pebbles to balance them at the bottom, and use the Google Search bar to query live Wikipedia pages!...
|
1793613251.3700001
|
1793699651.3700001
|
|
18362
|
NovaOS by @RishitEncrypt | Stardance
|
RishitEncrypt
|
2
|
15.0
|
46
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T13:37:41Z", "hours": 3.0, "multiplier": 14.33, "payout": 46, "blessing": "neutral", "text": "NovaOS started as a small experiment. I wanted to see if I could recreate the feeling of using a desktop operating system entirely inside the browser. What I expected to be a quick side project ended up becoming something much bigger over the course of a few days. The goal was never to copy Windows or macOS. I wanted NovaOS to have its own identity while still feeling familiar enough that anyone could jump in and immediately understand how to use it. The result is a browser-based desktop environment complete with its own applications, taskbar, launcher, notifications, settings system, wallpapers, and window management. Since the first version, the project has grown quite a bit. NovaOS now includes Nova AI, Nova Command, Nova Music, Notes, Calculator, Explorer, Stellar Navigation, live wallpapers, onboarding screens, desktop widgets, custom application icons, system monitoring tools, and a number of smaller quality-of-life features. Version 1.0.2 focused heavily on improving the overall experience, redesigning parts of the interface, adding new applications, and making the desktop feel more cohesive. I used Claude throughout development as a tool to help generate parts of the CSS, experiment with interface ideas, and build some larger components. Nova Command was largely built with Claudeās assistance, along with several widgets and UI systems. Everything still required a lot of manual integration, debugging, redesigning, and refinement to fit together inside the project. The hardest part was never building individual features. A calculator, notes app, or music player can be built on their own. The real challenge was getting everything to work together without breaking something else. Wallpapers needed to communicate with settings, windows needed to interact correctly with the taskbar, notifications needed to work across applications, and every new feature introduced another opportunity for bugs. A large portion of development ended up being spent connecting systems together and solving unexpected problems. What Iām most proud of isnāt any individual feature. Itās the fact that the project actually reached a point where it feels complete and usable. Starting a project is exciting. Finishing one is much harder. There were plenty of moments where fixing one issue created two new ones, but seeing everything finally come together into something that genuinely feels like a desktop environment made the effort worthwhile. If you decide to try NovaOS, the best way to experience it is to explore. Open applications, customize the desktop, launch Stellar Navigation, experiment with Nova Command, play music, change wallpapers, and see what you can find. There are still features I want to add and areas I want to improve, but this version finally feels like the vision I had when I started. For now, NovaOS v1.0.2 marks the end of the first chapter of the project.", "repo": "https://github.com/rishitencrypt/Nova-Os", "demo": "https://nova-os-encrypt.netlify.app"}, {"ship_num": 2, "ts": "2026-06-16T09:29:31Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So this is NovaOS, my browser based desktop environment. I started this about 3 days ago as a small side project, and somehow it turned into something much bigger than I anticipated. My primary goal for this project was to create a desktop environment which was reminiscent of an actual desktop operating system, and still remained completely within the browser. Here are some of the features I ended up including: desktop, taskbar, launcher, windowing system, live wallpapers, notifications, settings, music player, notes app, file explorer, calculator, Nova AI, Nova Command. Although I could have tried to rebuild Windows or macOS, my true intention was to create something original and built entirely by me and help of Claude AI. i used claude to create me some css for the project, nova command app was entirely made using Claude , and the widget . I believe the largest obstacle I faced was getting all the features to interact with each other. Actually implementing a single feature is one aspect; getting all your apps, windows, settings, wallpapers and notifications working together smoothly is where almost all of my time went. There were definitely quite a few bugs, and plenty of issues with deployment, and fixing one bug would cause two more. This was pretty much a project in problem solving. The thing that I am the most proud of is the fact that I actually finished it. It is quite easy to start something because of the excitement of a new idea, however actually taking that idea all the way through to completion is much more difficult. Getting all the different pieces to work together in harmony, and to create something which actually felt like a desktop was a tremendous joy that made all the debugging worthwhile. If you decide to try out NovaOS, the best way to do it is to simply mess around with it. Open the apps, try the Nova Command, use Nova Music, change a wallpaper and check the settings. Although there are still quite a few areas that may seem a bit rough around the edges, given that it was built relatively quickly, I think it pretty much captures what I was looking to achieve. And after three days I think that NovaOS v1.0 is officially done.", "repo": "https://github.com/rishitencrypt/Nova-Os", "demo": "https://nova-os-encrypt.netlify.app"}]...
|
[{"post_id": 10610, "ts": "202 [{"post_id": 10610, "ts": "2026-06-17T13:33:43Z", "hours": 3.2414, "text": "NovaOS v1.0.2 With this release, the goal was to make NovaOS feel like an actual desktop environment instead of just browser windows piled up. This includes a redesign of the layout of the Explorer. The addition of the Stellar Navigation simulator gives users the ability to navigate a space ship using a simple, yet engaging simulation game. Icons for use on the desktop were redesigned and unified using a consistent design approach, instead of relying on placeholder art for each application. There have been several updates under the hood to further refine various aspects of NovaOS including window behavior, desktop arrangement, and application layout."}, {"post_id": 9839, "ts": "2026-06-16T09:16:44Z", "hours": 1.1064, "text": "Thatās all for now. NovaOS v1.0 is done after 3 days of developing, breaking, fixing stuff, redesigning some half of the interface, and wasting a lot of time trying to find those weird bugs. It grew from being an experiment to a full-fledged desktop environment working inside the browser, equipped with its own applications, launcher, wallpaper options, notifications, music player, artificial intelligence, settings, and many other features. I especially liked implementing Nova Command, Nova Music, and making the whole desktop feel like an actual operating system. Working on this project definitely brought many insights and overall Iām quite satisfied with the result achieved in such little time. For everyone interested to see the result yourself: š Live Demo: https://nova-os-encrypt.netlify.app/ š GitHub: https://github.com/rishitencrypt/Nova-Os Thanks for following me during this journey. Next project incoming."}, {"post_id": 9748, "ts": "2026-06-16T05:23:38Z", "hours": 0.5169, "text": "Hi!! NovaOS is becoming very close to that point where I can say that itās āusableā and not just āprojectā. The development of most of the key features is completed now, which means that I can finally start working on improving existing code rather than implementing new stuff. Right now, Iām working on cleaning up the user interface, making the windows behave better, redesigning Settings app, working on the taskbar and Nova Hub. Also, now novaOS supports multiple live wallpapers and I have started adding some improvements to the stock apps to make them more functional. Now, itās almost all about bug fixing, UI adjustments and quality of life improvements."}, {"post_id": 9426, "ts": "2026-06-15T19:46:15Z", "hours": 0.7653, "text": "hi! Been working on NovaOS, a desktop environment Iām building in React. Itās not a real operating system, but more of a futuristic desktop experience with its own apps, live wallpapers, glassmorphism UI, and custom window system. So far Iāve built a taskbar, start menu (Nova Hub), Notes, Explorer, Calculator, Nova AI, Nova Command, Settings, boot animations, and support for live video wallpapers. Lately Iāve been focusing on making everything feel more polished and less like a prototype. Still plenty to improve, but itās finally starting to feel like an actual desktop instead of a bunch of components thrown together."}, {"post_id": 9375, "ts": "2026-06-15T18:29:22Z", "hours": 3.5267, "text": "now that looks like an os that you would expect in a spaceship"}, {"post_id": 9135, "ts": "2026-06-15T09:07:41Z", "hours": 0.6517, "text": "looking wayyy better than befour still lot of stuff to do"}, {"post_id": 9095, "ts": "2026-06-15T06:10:19Z", "hours": 3.9794, "text": "a big jump"}, {"post_id": 8562, "ts": "2026-06-14T07:11:57Z", "hours": 0.3853, "text": "basic structure almost done"}, {"post_id": 8538, "ts": "2026-06-14T06:17:01Z", "hours": 1.3136, "text": "making the basic structure of OS"}]...
|
Title: NovaOS by @RishitEncrypt | Stardance
Devlo Title: NovaOS by @RishitEncrypt | Stardance
Devlogs:
making the basic structure of OS
basic structure almost done
a big jump
looking wayyy better than befour still lot of stuff to do
now that looks like an os that you would expect in a spaceship
hi! Been working on NovaOS, a desktop environment Iām building in React. Itās not a real operating system, but more of a futuristic desktop experience with its own apps, live wallpapers, glassmorphism UI, and custom window system. So far Iāve built a taskbar, start menu (Nova Hub), Notes, Explorer, Calculator, Nova AI, Nova Command, Settings, boot animations, and support for live video wallpapers. Lately Iāve been focusing on making everything feel more polished and less like a prototype. Still plenty to improve, but itās finally starting to feel like an actual desktop instead of a bunch of components thrown together.
Hi!! NovaOS is becoming very close to that point where I can say that itās āusableā and not just āprojectā. The development of most of the key features is completed now, which means that I can finally start working on improving existing code rather than implementing new stuff. Right now, Iām working on cleaning up the user interface, making the windows behave better, redesigning Settings app, working on the taskbar and Nova Hub. Also, now novaOS supports multiple live wallpapers and I have started adding some improvements to the stock apps to make them more functional. Now, itās almost all about bug fixing, UI adjustments and quality of life improvements.
Thatās all for now. NovaOS v1.0 is done after 3 days of developing, breaking, fixing stuff, redesigning some half of the interface, and wasting a lot of time trying to find those weird bugs. It grew from being an experiment to a full-fledged desktop environment working inside the browser, equipped with its own applications, launcher, wallpaper options, notifications, music player, artificial intelligence, settings, and many other features. I especially liked implementing Nova Command, Nova Music, and making the whole desktop feel like an actual operating system. Working on this project definitely brought many insights and overall Iām quite satisfied with the result achieved in such little time. For everyone interested to see the result yourself: š Live Demo: https://nova-os-encrypt.netlify.app/ š GitHub: https://github.com/rishitencrypt/Nova-Os Thanks for following me during this journey. Next project incoming.
NovaOS v1.0.2 With this release, the goal was to make NovaOS feel like an actual desktop environment instead of just browser windows piled up. This includes a redesign of the layout of the Explorer. The addition of the Stellar Navigation simulator gives users the ability to navigate a space ship using a simple, yet engaging simulation game. Icons for use on the desktop were redesigned and unified using a consistent design approach, instead of relying on placeholder art for each application. There have been several updates under the hood to further refine various aspects of NovaOS including window behavior, desktop arrangement, and application layout.
Ships:
So this is NovaOS, my browser based desktop environment. I started this about 3 days ago as a small side project, and somehow it turned into something much bigger than I anticipated. My primary goal for this project was to create a desktop environment which was reminiscent of an actual desktop operating system, and still remained completely within the browser. Here are some of the features I ended up including: desktop, taskbar, launcher, windowing system, live wallpapers, notifications, settings, music player, notes app, file explorer, calculator, Nova AI, Nova Command. Although I could have tried to rebuild Windows or macOS, my true intention was to create something original and built entirely by me and help of Claude AI. i used claude to create me some css for the project, nova command app was entirely made using Claude , and the widget . I believe the largest obstacle I faced was getting all the features to interact with each other. Actually implementing a single feature is one aspect; getting all your apps, windows, settings, wallpapers and notifications working together smoothly is where almost all of my time went. There were definitely quite a few bugs, and plenty of issues with deployment, and fixing one bug would cause two more. This was pretty much a project in problem solving. The thing that I am the most proud of is the fact that I actually finished it. It is quite easy to start something because of the excitement of a new idea, however actually taking that idea all the way through to completion is much more difficult. Getting all the different pieces to work together in harmony, and to create something which actually felt like a desktop was a tremendous joy that made all the debugging worthwhile. If you decide to try out NovaOS, the best way to do it is to simply mess around with it. Open the apps, try the Nova Command, use Nova Music, change a wallpaper and check the settings. Although there are still quite a few areas that may seem a bit rough around the edges, given that it was built relatively quickly, I think it pretty much captures what I was looking to achieve. And after three days I think that NovaOS v1.0 is officially done.
NovaOS started as a small experiment. I wanted to see if I could recreate the feeling of using a desktop operating system entirely inside the browser. What I expected to be a quick side project ended up becoming something much bigger over the course of a few days. The goal was never to copy Windows or macOS. I wanted NovaOS to have its own identity while still feeling familiar enough that anyone could jump in and immediately understand how to use it. The result is a browser-based desktop environment complete with its own applications, taskbar, launcher, notifications, settings system, wallpapers, and window management. Since the first version, the project has grown quite a bit. NovaOS now includes Nova AI, Nova Command, Nova Music, Notes, Calculator, Explorer, Stellar Navigation, live wallpapers, onboarding screens, desktop widgets, custom application icons, system monitoring tools, and a number of smaller quality-of-life features. Version 1.0.2 focused heavily on improving the overall experience, redesigning parts of the interface, adding new applications, and making the desktop feel more cohesive. I used Claude throughout development as a tool to help generate parts of the CSS, experiment with interface ideas, and build some larger components. Nova Command was largely built with Claudeās assistance, along with several widgets and UI systems. Everything still required a lot of manual integration, debugging, redesigning, and refinement to fit together inside the project. The hardest part was never building individual features. A calculator, notes app, or music player can be built on their own. The real challenge was getting everything to work together without breaking something else. Wallpapers needed to communicate with settings, windows needed to interact correctly with the taskbar, notifications needed to work across applications, and every new feature introduced another opportunity for bugs. A large portion of development ended up being spent connecting systems together and solving unexpected problems. What Iām most proud of isnāt any individual feature. Itās the fact that the project actually reached a point where it feels complete and usable. Starting a project is exciting. Finishing one is much harder. There were plenty of moments where fixing one issue created two new ones, but seeing everything finally come together into something that genuinely feels like a desktop environment made the effort worthwhile. If you decide to try NovaOS, the best way to experience it is to explore. Open applications, customize the desktop, launch Stellar Navigation, experiment with Nova Command, play music, change wallpapers, and see what you can find. There are still features I want to add and areas I want to improve, but this version finally feels like the vision I had when I started. For now, NovaOS v1.0.2 marks the end of the first chapter of the project....
|
1793613252.514952
|
1793699652.514952
|
|
4309
|
SSSnake by @bartoszkasyna | Stardance
|
bartoszkasyna
|
1
|
11.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-08T12:16:06Z", "hours": 11.0, "multiplier": 5.63, "payout": 4, "blessing": "neutral", "text": "I made classic snake game running on raspberry pi pico 2. There are two play modes - 1st player mode, 2nd AI agent mode. Making such small AI which can play game fluently on pico 2(512 KB RAM) was challenging.", "repo": "https://github.com/B4rtekk1/SSSnake", "demo": ""}]...
|
[{"post_id": 4856, "ts": "2026 [{"post_id": 4856, "ts": "2026-06-08T12:01:01Z", "hours": 2.0847, "text": "I refactored code for better readibilty. Optimized draw digit function. I think that project is ready to ship."}, {"post_id": 4090, "ts": "2026-06-07T08:59:43Z", "hours": 3.4506, "text": "I have implemented DQN Agent with input size 11 hidden state 128 output size 3 which can play snake game in real time on raspberry pi pico 2. I will try make it better, best scores achieved by ai was 52. I also noticed bug where snake body is larger than one square of grid. Now Iāll focus on optimalization and bug fixes."}, {"post_id": 3367, "ts": "2026-06-06T08:03:42Z", "hours": 1.1811, "text": "Little changes in layout for better game experience. Added Assembly utils for optimalization. Fixed bug - Eaten apple sound wasnt stopping when player died what caused beeping until new game. Added new load screen. Added support for \\n in drawString function"}, {"post_id": 2278, "ts": "2026-06-04T17:54:34Z", "hours": 1.2308, "text": "Previously font size was fixed now you can adjust it. Added loose screen and melody generator when you catch apple. Now I will add more sound like death sound or snake length achievment sound. Then I will focus on creating edge ai capable of playing snake with only 512KB ram on PICO 2"}, {"post_id": 810, "ts": "2026-06-02T14:11:55Z", "hours": 1.2797, "text": "I have implemented basic snake gae. Now I will work on optimalization and lose screen.Later I will try make edge AI capable of working fluently on PICO 2 with 520MB RAM. PS: Itās hard to play and record in same time"}, {"post_id": 713, "ts": "2026-06-02T09:24:54Z", "hours": 1.1464, "text": "Added some simple snake map."}, {"post_id": 661, "ts": "2026-06-02T06:12:54Z", "hours": 0.2764, "text": "He have some power"}]...
|
Title: SSSnake by @bartoszkasyna | Stardance
Devl Title: SSSnake by @bartoszkasyna | Stardance
Devlogs:
He have some power
Added some simple snake map.
I have implemented basic snake gae. Now I will work on optimalization and lose screen.Later I will try make edge AI capable of working fluently on PICO 2 with 520MB RAM. PS: Itās hard to play and record in same time
Previously font size was fixed now you can adjust it. Added loose screen and melody generator when you catch apple. Now I will add more sound like death sound or snake length achievment sound. Then I will focus on creating edge ai capable of playing snake with only 512KB ram on PICO 2
Little changes in layout for better game experience. Added Assembly utils for optimalization. Fixed bug - Eaten apple sound wasnt stopping when player died what caused beeping until new game. Added new load screen. Added support for \n in drawString function
I have implemented DQN Agent with input size 11 hidden state 128 output size 3 which can play snake game in real time on raspberry pi pico 2. I will try make it better, best scores achieved by ai was 52. I also noticed bug where snake body is larger than one square of grid. Now Iāll focus on optimalization and bug fixes.
I refactored code for better readibilty. Optimized draw digit function. I think that project is ready to ship.
Ships:
I made classic snake game running on raspberry pi pico 2. There are two play modes - 1st player mode, 2nd AI agent mode. Making such small AI which can play game fluently on pico 2(512 KB RAM) was challenging....
|
1793613253.7319226
|
1793699653.7319226
|
|
15446
|
zap by @bernardq | Stardance
|
bernardq
|
3
|
47.0
|
444
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-31T00:18:25Z", "hours": 7.0, "multiplier": 14.32, "payout": 106, "blessing": "neutral", "text": "ZAP or in the new name zip asset packager is a package manager build in python with no packages to manager. ZAP is easy to use am the linux version is not stable yet but it runs.", "repo": "https://github.com/Bkner3/zap", "demo": "https://github.com/Bkner3/zap/releases"}, {"ship_num": 2, "ts": "2026-09-16T19:23:17Z", "hours": 24.0, "multiplier": 7.58, "payout": 182, "blessing": "neutral", "text": "So, I built a package manager in Python. The biggest challenge I experienced was organizing my code, debugging, and building complex features. Iām proud that it works, and Iām proud of all the time I spent coding it. My project documentation is on GitHub, which is the best place I have to write and maintain it. Zap can install, remove, and download packages without installing them, as well as update packages and perform other features. Try out my project, and if you want to add your projects to the Zap repository, contact me on Slack or GitHub. Thanks for Reading!", "repo": "https://github.com/Bkner3/zap", "demo": "https://github.com/Bkner3/zap/releases"}, {"ship_num": 3, "ts": "2026-07-11T21:53:33Z", "hours": 16.0, "multiplier": 9.85, "payout": 156, "blessing": "neutral", "text": "Hello everyone! My project is a package manager built entirely in Python. I challenged myself to create something simple for everyoneāboth for the people creating the repository and for those who will use it. I am really proud of myself for dedicating so much effort to this project. ā ļø Project Status & Requirements Please note that this project is currently in Beta and some commands might not be fully functional or ready yet. System Requirements: Python 3.0 or higher is required. To run the project in script mode, you must install the following dependencies: requests, colorama, and tqdm. Current Limitations: The tools inside repo-tools (used for creating repositories) are currently disabled while they undergo updates. In the meantime, if you want to create a repository, you can use the example index provided in the GitHub README and simply replace the package and file names with your own. If you have any questions or run into issues, please feel free to open an issue or ask here on GitHub. I am more than happy to help!", "repo": "https://github.com/Bkner3/zap", "demo": "https://github.com/Bkner3/zap/releases"}]...
|
[{"post_id": 85229, "ts": "202 [{"post_id": 85229, "ts": "2026-10-31T00:12:52Z", "hours": 0.6897, "text": "Devlog #33 The last devlog in stardance I know. Changing some little things with the help of codex because I am very exaust."}, {"post_id": 77160, "ts": "2026-10-05T20:41:48Z", "hours": 1.8519, "text": "Devlog #32 Iām tired of working on this, I try one thing and it doesnāt work I try another even worse but Iām working to launch the zap for linux I just donāt have test packages or packages to release if any wants to launch their package on the zap let me know."}, {"post_id": 76875, "ts": "2026-10-04T21:59:26Z", "hours": 1.7056, "text": "Devlog #31 After some time, I finally had time to work on ZAP again. Today I started fixing some bugs in ZAP, tested the installation script, and added the installation instructions to the README on the main page. ZAP is still in beta, and I know some things donāt work yet, but I want to sleep. I tested the installer on Debian-based systems, but I havenāt tested it on Arch, Alpine, or other obscure distros yet. My linux test PC specs are shown above, and the error is also shown above."}, {"post_id": 74178, "ts": "2026-09-26T21:04:57Z", "hours": 1.0075, "text": "#Devlog #30 Updating the zap web page for the new version."}, {"post_id": 73050, "ts": "2026-09-24T08:47:09Z", "hours": 0.6928, "text": "Devlog #29 Today I finally finished the Linux installation script!"}, {"post_id": 72864, "ts": "2026-09-23T21:50:36Z", "hours": 0.6369, "text": "Devlog #28 So today, I started writing the installation script for Linux. Sorry if I donāt give many updates school just started today!"}, {"post_id": 70055, "ts": "2026-09-18T11:18:17Z", "hours": 0.3489, "text": "Devlog #27 Today, I run zap on Linux and lost my sanity with the complexity of using Linux on an old PC and all the configuration. The hello test package will be available this afternoon. Thanks for reading!"}, {"post_id": 69672, "ts": "2026-09-17T15:29:16Z", "hours": 0.4408, "text": "Devlog #26 Today, I changed the code so that ZAP can have a Linux version. I spent an hour trying to install pip on my Linux PC, but I couldnāt get it to work. I switched to another PC, and now Iām going to test it."}, {"post_id": 69197, "ts": "2026-09-16T15:56:48Z", "hours": 3.8558, "text": "Devlog #25 Making small changes to the code in the past days to launch the version 0.7.0-beta."}, {"post_id": 66646, "ts": "2026-09-12T14:35:05Z", "hours": 0.7144, "text": "Devlog #24 Today, I made some small changes to the project. The next thing Iām going to add is a system to check whether the local index is outdated and update it if necessary."}, {"post_id": 66005, "ts": "2026-09-11T15:00:04Z", "hours": 0.9475, "text": "Devlog #23 Today, I correct a error in the launcher system code and I tried to create a 3 packages to show who it works but they donāt work."}, {"post_id": 65639, "ts": "2026-09-10T22:10:37Z", "hours": 3.4558, "text": "Devlog #22 Today, yesterday I added a function that checks if all packages / dependencies are in the list to be downloaded, also adding the author variable to the database, and some minor changes. Thanks for reading! š"}, {"post_id": 64327, "ts": "2026-09-08T16:48:39Z", "hours": 1.4808, "text": "Devlog #21 Updating the README so I can release version 0.7 tomorrow!"}, {"post_id": 63686, "ts": "2026-09-07T16:52:05Z", "hours": 1.5267, "text": "Devlog #20 Today, with the help of ChatGPT, I created the dependency system. The ZAP can now resolve package dependencies and find the correct versions required by each package. It can also handle multiple versions of the same dependency and create launchers with the required dependencies added to the PATH. This means different packages can use different versions of the same dependency without conflicts."}, {"post_id": 61833, "ts": "2026-09-04T22:52:52Z", "hours": 0.6039, "text": "Devlog #19 Today, with the help of ChatGPT, I created a system to check if a dependencyās version is compatible with the program. For example, if a dependency is specified as dependency@>=1.0.0 , the system will analyze the required version and check whether the available version is compatible."}, {"post_id": 58496, "ts": "2026-08-30T22:28:18Z", "hours": 1.8736, "text": "Devlog #18 Today, I added a new parameter to the database for dependencies, and I started working on the dependency system. I donāt know if I mentioned it in the previous devlog, but I also created the confirmation button. Thanks for reading! And if you want to launch your project on Zap, please contact me. Thanks for reading!"}, {"post_id": 54778, "ts": "2026-08-25T21:48:08Z", "hours": 1.4942, "text": "Devlog #17 Hello! Today I finally started working on the scary part of a package manager: dependencies āļøāļø. Warning Today I only worked on the system that grabs the dependencies. The way dependencies will work is through the .cmd launchers stored in: C:/Users/Your_User/AppData/Local/Zap/sl Each package will have its own launcher, and that launcher will be responsible for setting up the environment required by that package. For example, imagine your program uses lib_a version 1.0 , while another program uses lib_a version 2.0 . Instead of putting everything in the same place and causing conflicts, each .cmd launcher will temporarily add the required dependencies to the PATH . This means that both versions can coexist without interfering with each other. Dependencies can also have their own dependencies. When one package depends on another package, its launcher can create its own environment with the dependencies it requires. This creates a kind of lightweight sandbox for each package. The goal is to keep dependencies isolated while keeping the system simple and transparent. This is definitely one of the more complicated parts of the package manager, but Iām finally starting to figure out the architecture. Warning This changes are not avaiable yet!"}, {"post_id": 51693, "ts": "2026-08-21T14:52:13Z", "hours": 2.9186, "text": "Devlog #16 Today, I changed the way you configure Zap. The example below shows how to hide the logo. Before: zap config hl Now: zap config set show_logo true Previously, you couldnāt view the configuration from the program. Now, zap config list shows the current configuration. Warning The configuration is currently only used to enable, disable, or change the logo and debug settings. Iām also finally using Pythonās virtual environment to work on the project. These changes will be included in the next release. For now, they are available in the dev branch. And thank you to everyone who has checked out the project and given feedback. If anyone wants to publish their projects and make them available in the Zap repository, please leave a comment or try to contact me."}, {"post_id": 40270, "ts": "2026-08-03T18:11:13Z", "hours": 2.7706, "text": "Devlog #15 Today, I re-write the Readme, launch a release (v0.6.5-beta), I created a official repository and add a test package named hello."}, {"post_id": 32531, "ts": "2026-07-21T19:25:58Z", "hours": 0.7503, "text": "Devlog #14 Today I separated repo-tools from the Zap parser and started developing it in its own branch."}, {"post_id": 30730, "ts": "2026-07-18T15:33:21Z", "hours": 0.9061, "text": "Devlog #13 Adding the info commmad."}, {"post_id": 28369, "ts": "2026-07-14T16:15:58Z", "hours": 0.7253, "text": "adding a gitignore and deleting the repo-tools to start from zero."}, {"post_id": 26852, "ts": "2026-07-11T21:29:51Z", "hours": 1.3656, "text": "Devlog #11 - Now I added upgrades to the zap website but I down publish yet. Sorry for my robotic English."}, {"post_id": 26585, "ts": "2026-07-11T14:33:30Z", "hours": 2.1264, "text": "Devlog #10 Today I added the repo-remove command, which removes a repository URL from the index file. I also made some small improvements to the projectās directory structure."}, {"post_id": 24630, "ts": "2026-07-08T10:54:59Z", "hours": 1.2447, "text": "Devlog - 09 Today I added a base_url parameter to the index configuration, allowing the domain to be changed more easily without having to manually update all links. I also fixed issues in the Makefile that were causing broken executables with no output. Finally, I merged my work from the GitHub dev branch into the GitHub main branch."}, {"post_id": 22463, "ts": "2026-07-04T22:40:05Z", "hours": 1.1542, "text": "Devlog - 08 Starting to create an installation script and configure my VS Code for another computer."}, {"post_id": 17617, "ts": "2026-06-28T14:21:40Z", "hours": 1.2869, "text": "Devlog - 07 Today, I added an upgrade feature to update ZAP to the latest version. The code is untested because I have to return my school laptop and move everything over to my dadās computer. I donāt know when I will be back to active development."}, {"post_id": 17010, "ts": "2026-06-27T16:37:05Z", "hours": 1.5008, "text": "Devlog - 06. Today I added a function to check if a package is compatible with the operating system where the program is running."}, {"post_id": 11987, "ts": "2026-06-19T15:47:52Z", "hours": 1.6478, "text": "Devlog - 05 Beginning of the creation of the repo-tools that will be used to create and edit an index."}, {"post_id": 11537, "ts": "2026-06-18T20:43:38Z", "hours": 0.5406, "text": "Devlog - 04 Today I added a SHA-256 integrity verification system. The package manager now generates and compares file hashes to validate downloaded files and prevent corrupted or modified packages from being installed."}, {"post_id": 9316, "ts": "2026-06-15T17:01:19Z", "hours": 1.1847, "text": "Devlog - 03 Today I created and finished the update command."}, {"post_id": 6876, "ts": "2026-06-11T15:04:47Z", "hours": 2.6628, "text": "Devlog - 02 Today I finished the logging system and started updating the README. Whatās new: Complete activity logging README improvements and setup guide Next step: polishing the project documentation and create a better structure for the packages."}, {"post_id": 6340, "ts": "2026-06-10T17:51:33Z", "hours": 1.0964, "text": "Now I am implementing the log system."}]...
|
Title: zap by @bernardq | Stardance
Devlogs:
Now Title: zap by @bernardq | Stardance
Devlogs:
Now I am implementing the log system.
Devlog - 02 Today I finished the logging system and started updating the README. Whatās new: Complete activity logging README improvements and setup guide Next step: polishing the project documentation and create a better structure for the packages.
Devlog - 03 Today I created and finished the update command.
Devlog - 04 Today I added a SHA-256 integrity verification system. The package manager now generates and compares file hashes to validate downloaded files and prevent corrupted or modified packages from being installed.
Devlog - 05 Beginning of the creation of the repo-tools that will be used to create and edit an index.
Devlog - 06. Today I added a function to check if a package is compatible with the operating system where the program is running.
Devlog - 07 Today, I added an upgrade feature to update ZAP to the latest version. The code is untested because I have to return my school laptop and move everything over to my dadās computer. I donāt know when I will be back to active development.
Devlog - 08 Starting to create an installation script and configure my VS Code for another computer.
Devlog - 09 Today I added a base_url parameter to the index configuration, allowing the domain to be changed more easily without having to manually update all links. I also fixed issues in the Makefile that were causing broken executables with no output. Finally, I merged my work from the GitHub dev branch into the GitHub main branch.
Devlog #10 Today I added the repo-remove command, which removes a repository URL from the index file. I also made some small improvements to the projectās directory structure.
Devlog #11 - Now I added upgrades to the zap website but I down publish yet. Sorry for my robotic English.
adding a gitignore and deleting the repo-tools to start from zero.
Devlog #13 Adding the info commmad.
Devlog #14 Today I separated repo-tools from the Zap parser and started developing it in its own branch.
Devlog #15 Today, I re-write the Readme, launch a release (v0.6.5-beta), I created a official repository and add a test package named hello.
Devlog #16 Today, I changed the way you configure Zap. The example below shows how to hide the logo. Before: zap config hl Now: zap config set show_logo true Previously, you couldnāt view the configuration from the program. Now, zap config list shows the current configuration. Warning The configuration is currently only used to enable, disable, or change the logo and debug settings. Iām also finally using Pythonās virtual environment to work on the project. These changes will be included in the next release. For now, they are available in the dev branch. And thank you to everyone who has checked out the project and given feedback. If anyone wants to publish their projects and make them available in the Zap repository, please leave a comment or try to contact me.
Devlog #17 Hello! Today I finally started working on the scary part of a package manager: dependencies āļøāļø. Warning Today I only worked on the system that grabs the dependencies. The way dependencies will work is through the .cmd launchers stored in: C:/Users/Your_User/AppData/Local/Zap/sl Each package will have its own launcher, and that launcher will be responsible for setting up the environment required by that package. For example, imagine your program uses lib_a version 1.0 , while another program uses lib_a version 2.0 . Instead of putting everything in the same place and causing conflicts, each .cmd launcher will temporarily add the required dependencies to the PATH . This means that both versions can coexist without interfering with each other. Dependencies can also have their own dependencies. When one package depends on another package, its launcher can create its own environment with the dependencies it requires. This creates a kind of lightweight sandbox for each package. The goal is to keep dependencies isolated while keeping the system simple and transparent. This is definitely one of the more complicated parts of the package manager, but Iām finally starting to figure out the architecture. Warning This changes are not avaiable yet!
Devlog #18 Today, I added a new parameter to the database for dependencies, and I started working on the dependency system. I donāt know if I mentioned it in the previous devlog, but I also created the confirmation button. Thanks for reading! And if you want to launch your project on Zap, please contact me. Thanks for reading!
Devlog #19 Today, with the help of ChatGPT, I created a system to check if a dependencyās version is compatible with the program. For example, if a dependency is specified as dependency@>=1.0.0 , the system will analyze the required version and check whether the available version is compatible.
Devlog #20 Today, with the help of ChatGPT, I created the dependency system. The ZAP can now resolve package dependencies and find the correct versions required by each package. It can also handle multiple versions of the same dependency and create launchers with the required dependencies added to the PATH. This means different packages can use different versions of the same dependency without conflicts.
Devlog #21 Updating the README so I can release version 0.7 tomorrow!
Devlog #22 Today, yesterday I added a function that checks if all packages / dependencies are in the list to be downloaded, also adding the author variable to the database, and some minor changes. Thanks for reading! š
Devlog #23 Today, I correct a error in the launcher system code and I tried to create a 3 packages to show who it works but they donāt work.
Devlog #24 Today, I made some small changes to the project. The next thing Iām going to add is a system to check whether the local index is outdated and update it if necessary.
Devlog #25 Making small changes to the code in the past days to launch the version 0.7.0-beta.
Devlog #26 Today, I changed the code so that ZAP can have a Linux version. I spent an hour trying to install pip on my Linux PC, but I couldnāt get it to work. I switched to another PC, and now Iām going to test it.
Devlog #27 Today, I run zap on Linux and lost my sanity with the complexity of using Linux on an old PC and all the configuration. The hello test package will be available this afternoon. Thanks for reading!
Devlog #28 So today, I started writing the installation script for Linux. Sorry if I donāt give many updates school just started today!
Devlog #29 Today I finally finished the Linux installation script!
#Devlog #30 Updating the zap web page for the new version.
Devlog #31 After some time, I finally had time to work on ZAP again. Today I started fixing some bugs in ZAP, tested the installation script, and added the installation instructions to the README on the main page. ZAP is still in beta, and I know some things donāt work yet, but I want to sleep. I tested the installer on Debian-based systems, but I havenāt tested it on Arch, Alpine, or other obscure distros yet. My linux test PC specs are shown above, and the error is also shown above.
Devlog #32 Iām tired of working on this, I try one thing and it doesnāt work I try another even worse but Iām working to launch the zap for linux I just donāt have test packages or packages to release if any wants to launch their package on the zap let me know.
Devlog #33 The last devlog in stardance I know. Changing some little things with the help of codex because I am very exaust.
Ships:
Hello everyone! My project is a package manager built entirely in Python. I challenged myself to create something simple for everyoneāboth for the people creating the repository and for those who will use it. I am really proud of myself for dedicating so much effort to this project. ā ļø Project Status & Requirements Please note that this project is currently in Beta and some commands might not be fully functional or ready yet. System Requirements: Python 3.0 or higher is required. To run the project in script mode, you must install the following dependencies: requests, colorama, and tqdm. Current Limitations: The tools inside repo-tools (used for creating repositories) are currently disabled while they undergo updates. In the meantime, if you want to create a repository, you can use the example index provided in the GitHub README and simply replace the package and file names with your own. If you have any questions or run into issues, please feel free to open an issue or ask here on GitHub. I am more than happy to help!
So, I built a package manager in Python. The biggest challenge I experienced was organizing my code, debugging, and building complex features. Iām proud that it works, and Iām proud of all the time I spent coding it. My project documentation is on GitHub, which is the best place I have to write and maintain it. Zap can install, remove, and download packages without installing them, as well as update packages and perform other features. Try out my project, and if you want to add your projects to the Zap repository, contact me on Slack or GitHub. Thanks for Reading!
ZAP or in the new name zip asset packager is a package manager build in python with no packages to manager. ZAP is easy to use am the linux version is not stable yet but it runs....
|
1793613254.992652
|
1793699654.992652
|
|
25027
|
Software Defined Radio Toolkit by @jotheexplorer12 Software Defined Radio Toolkit by @jotheexplorer123 | Stardance...
|
jotheexplorer123
|
1
|
5.62
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T15:04:53Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I was very excited when I got my first RTL-SDR and I could see the whole radio spectrum but I had to mainly scroll through hundreds and thousands of frequencies. I made a tool that lets a Python script access your RTL-SDR and scan frequencies and return the signal strength in decibels . Returning specific traffic or just for general traffic monitoring over a wide spectrum . It returns a JSON file in the same directory that looks like this:", "repo": "https://github.com/Damelhasen/SDR_SCANNER", "demo": "https://youtu.be/q_ZBCR3jcR8"}]...
|
[{"post_id": 85344, "ts": "202 [{"post_id": 85344, "ts": "2026-10-31T05:29:52Z", "hours": 0.6214, "text": "The RTL SDR scanning project is complete. It took me five hours, mostly troubleshooting, but I learned a great deal, how to use Py Pi and how to interface with an RTL SDR. I acquired this RTL SDR when I was very young. Watching YouTubers save for parts, track satellites, and receive satellite imagery was exciting. My motivation was to create a tool that could scan large spectrums like my handheld scanner. Existing SDR Sharp and SDR++ plugins didnāt offer an easy solution, so I built my own and am proud of the result. Through the project I learned how to interface the SDR system and many other skills. This tool will likely be used for tracking satellites, finding beacons, and supporting other projects such as my drone work. Itās available on my GitHub. Itās been a blast."}, {"post_id": 18146, "ts": "2026-06-29T05:03:32Z", "hours": 4.8592, "text": "Working on a simple Band scanner for the RTL-SDR"}]...
|
Title: Software Defined Radio Toolkit by @jotheexp Title: Software Defined Radio Toolkit by @jotheexplorer123 | Stardance
Devlogs:
Working on a simple Band scanner for the RTL-SDR
The RTL SDR scanning project is complete. It took me five hours, mostly troubleshooting, but I learned a great deal, how to use Py Pi and how to interface with an RTL SDR. I acquired this RTL SDR when I was very young. Watching YouTubers save for parts, track satellites, and receive satellite imagery was exciting. My motivation was to create a tool that could scan large spectrums like my handheld scanner. Existing SDR Sharp and SDR++ plugins didnāt offer an easy solution, so I built my own and am proud of the result. Through the project I learned how to interface the SDR system and many other skills. This tool will likely be used for tracking satellites, finding beacons, and supporting other projects such as my drone work. Itās available on my GitHub. Itās been a blast.
Ships:
I was very excited when I got my first RTL-SDR and I could see the whole radio spectrum but I had to mainly scroll through hundreds and thousands of frequencies. I made a tool that lets a Python script access your RTL-SDR and scan frequencies and return the signal strength in decibels . Returning specific traffic or just for general traffic monitoring over a wide spectrum . It returns a JSON file in the same directory that looks like this:...
|
1793613256.3585896
|
1793699656.3585896
|
|
24826
|
sparq by @elaine | Stardance
|
elaine
|
1
|
14.39
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T05:28:54Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "wish you could predict the future? unfortunately, i cant help with that :( but my ML agent can! the agent that iāve trained is capable of predicting the future and using what it predicts to pick the best action. this is my first real machine learning project, so iām proud of my progress!", "repo": "https://github.com/ela1nex/customDQN", "demo": "https://youtu.be/5wtFexOzfos"}]...
|
[{"post_id": 16384, "ts": "202 [{"post_id": 16384, "ts": "2026-06-26T17:40:13Z", "hours": 2.3911, "text": "left: regular (no future prediction) right: dynamic (future prediction)"}, {"post_id": 15536, "ts": "2026-06-25T07:42:45Z", "hours": 11.7881, "text": "devlog #1: machine learning for dummies š¦ my first devlog! i probably shouldve done another devlog earlier since its now been 11 hours into this project but unfortunately i have the foresight of a seal so⦠anyway! join me on my machine learning learning (haha get it) journey! this is my first real foray into actually learning ML beyond using preexisting models, and its been super interesting so far. ive genuinely learned so much including but not limited to (very generally): DQN model: how to create a custom model and train and test it dynamic model: imagined states and being able to predict futures the usefulness of a configs file LOL TODO bc i am genuinely the most forgetful person youāll ever meet anyway im not sure how much more iāll work on this specific project since cartpole is super simple and i want to try nondiscrete action spaces which are more complicated and applicable. im working on learning offline training rn but thats probably going to be a separate project repo: https://github.com/ela1nex/customDQN below images: left: tested wo dynamic model right: tested w dynamic model (makes a super big difference!!)"}]...
|
Title: sparq by @elaine | Stardance
Devlogs:
devl Title: sparq by @elaine | Stardance
Devlogs:
devlog #1: machine learning for dummies š¦ my first devlog! i probably shouldve done another devlog earlier since its now been 11 hours into this project but unfortunately i have the foresight of a seal so⦠anyway! join me on my machine learning learning (haha get it) journey! this is my first real foray into actually learning ML beyond using preexisting models, and its been super interesting so far. ive genuinely learned so much including but not limited to (very generally): DQN model: how to create a custom model and train and test it dynamic model: imagined states and being able to predict futures the usefulness of a configs file LOL TODO bc i am genuinely the most forgetful person youāll ever meet anyway im not sure how much more iāll work on this specific project since cartpole is super simple and i want to try nondiscrete action spaces which are more complicated and applicable. im working on learning offline training rn but thats probably going to be a separate project repo: https://github.com/ela1nex/customDQN below images: left: tested wo dynamic model right: tested w dynamic model (makes a super big difference!!)
left: regular (no future prediction) right: dynamic (future prediction)
Ships:
wish you could predict the future? unfortunately, i cant help with that :( but my ML agent can! the agent that iāve trained is capable of predicting the future and using what it predicts to pick the best action. this is my first real machine learning project, so iām proud of my progress!...
|
1793613257.5561209
|
1793699657.5561209
|
|
25359
|
SkyOS by @samraat-756 | Stardance
|
samraat-756
|
2
|
12.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T06:55:26Z", "hours": 2.0, "multiplier": 5.59, "payout": 12, "blessing": "neutral", "text": "As a follow up to WebOS 1, I have added 3 more features to SkyOS, aswell as refined and simplified some redundant logic that runs the foundation of this web Operating System. The features added were: 1 - A desktop switcher for multi-tasking up to 5 different workspaces 2 - A weather widget in the top right corner displaying the current weather in the area 3 - A flight radar widget in the bottom right corner displaying the number of aircraft in your area, aswell as the details of the closest aircraft to you I also re worked the script.js logic to keep each app local to its designated workspace, so that even if you switch to another workspace, that app doesnāt close, and stays running in the background.", "repo": "https://github.com/samraatpchauhan-eng/SkyOS", "demo": "https://samraatpchauhan-eng.github.io/SkyOS/"}, {"ship_num": 2, "ts": "2026-06-28T18:54:19Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is SkyOS. An aviation themed Web Operating System, to turn your desktop into a virtual cockpit! For the asthetics I went with a clean frosted glass look, with aviation themed backgrounds and a grey color scheme. The most challenging part of this project was getting the formatting of the windows to line up with each other, and making the logic for each app. This was my first time working with html, so WebOS 1 was a learning experience for me. Overall I am pretty impressed with how SkyOS came out though.", "repo": "https://github.com/samraatpchauhan-eng/SkyOS", "demo": "https://samraatpchauhan-eng.github.io/SkyOS/"}]...
|
[{"post_id": 57117, "ts": "202 [{"post_id": 57117, "ts": "2026-08-29T06:49:33Z", "hours": 0.8039, "text": "My 3rd feature added to SkyOS is a nice little flight radar widget found at the bottom right corner of the desktop. I utilized the OpenSky API to display the number of aircraft in your area, and the callsign and altitude of the closest plane to your location. I will say the visual aspects of this feature was pretty easy to create, however is was the logic behind this that took some time to understand. Overall, Iām pretty happy about this feature! The only gripe I have is the limited amount of times you can call data from it, so I had to set the refresh rate to 60 seconds, which is a little slow."}, {"post_id": 46077, "ts": "2026-08-13T01:07:08Z", "hours": 0.7839, "text": "After a little bit of playing around with js and getting some help from online tutorials, I was able to create a workspace system, similarly found on most operating systems like Windows 11 or most Linux distros. You can use this for multitasking and can have up to 5 workspaces open at once with different apps opened in each one, without fear of them closing when switching desktops!"}, {"post_id": 46049, "ts": "2026-08-12T23:54:15Z", "hours": 0.5789, "text": "I have added a new feature for SkyOS! Using Meteomaticās Open Meteo API, I was able to implement a weather widget in the top right corner of the desktop workspace, so you can see the current temperature in the area you are currently in."}, {"post_id": 17297, "ts": "2026-06-28T00:50:23Z", "hours": 0.6519, "text": "I have finally finished making the ACP (Audio Control Panel) app for SkyOS! It features 3 songs from msfs2020 and fsx, and features a song time display, and controls to skip and go back a track, and a play/pause button ofc."}, {"post_id": 17087, "ts": "2026-06-27T19:01:42Z", "hours": 0.9669, "text": "Finished creating the wallpapers app, to switch the background to 3 different images, a Boeing 777, Airbus a350, or F-22."}, {"post_id": 16778, "ts": "2026-06-27T07:44:41Z", "hours": 0.7544, "text": "At the time of making this devlog it is 12:14am. I am lwk exhausted, but just finished building my second, and so far most complicated app for SkyOS (in terms of the logic). It is a simple but functional Stopwatch cleverly called āChronoā. I also want to mention ~1 hour out of the 3 hours logged in the second devlog, was spent building the chrono app"}, {"post_id": 16755, "ts": "2026-06-27T06:37:46Z", "hours": 3.9269, "text": "After a bit of struggle getting the formatting of the elements of SkyOS to work properly, I have finally finished my first app! I call it FlightLog, which is a place to type anything you want, and save it. It works similar to Windows 11ās NotePad application, but simpler."}, {"post_id": 15957, "ts": "2026-06-25T22:26:57Z", "hours": 3.4564, "text": "Finally got a hang of html, and JS! Curently was able to build the basic framework of the onboarding window, and the top bar of SkyOS. I also put a stock image of a Soutwest 737-800 as the background, as it appropriately fits the theme of SkyOS."}]...
|
Title: SkyOS by @samraat-756 | Stardance
Devlogs: Title: SkyOS by @samraat-756 | Stardance
Devlogs:
Finally got a hang of html, and JS! Curently was able to build the basic framework of the onboarding window, and the top bar of SkyOS. I also put a stock image of a Soutwest 737-800 as the background, as it appropriately fits the theme of SkyOS.
After a bit of struggle getting the formatting of the elements of SkyOS to work properly, I have finally finished my first app! I call it FlightLog, which is a place to type anything you want, and save it. It works similar to Windows 11ās NotePad application, but simpler.
At the time of making this devlog it is 12:14am. I am lwk exhausted, but just finished building my second, and so far most complicated app for SkyOS (in terms of the logic). It is a simple but functional Stopwatch cleverly called āChronoā. I also want to mention ~1 hour out of the 3 hours logged in the second devlog, was spent building the chrono app
Finished creating the wallpapers app, to switch the background to 3 different images, a Boeing 777, Airbus a350, or F-22.
I have finally finished making the ACP (Audio Control Panel) app for SkyOS! It features 3 songs from msfs2020 and fsx, and features a song time display, and controls to skip and go back a track, and a play/pause button ofc.
I have added a new feature for SkyOS! Using Meteomaticās Open Meteo API, I was able to implement a weather widget in the top right corner of the desktop workspace, so you can see the current temperature in the area you are currently in.
After a little bit of playing around with js and getting some help from online tutorials, I was able to create a workspace system, similarly found on most operating systems like Windows 11 or most Linux distros. You can use this for multitasking and can have up to 5 workspaces open at once with different apps opened in each one, without fear of them closing when switching desktops!
My 3rd feature added to SkyOS is a nice little flight radar widget found at the bottom right corner of the desktop. I utilized the OpenSky API to display the number of aircraft in your area, and the callsign and altitude of the closest plane to your location. I will say the visual aspects of this feature was pretty easy to create, however is was the logic behind this that took some time to understand. Overall, Iām pretty happy about this feature! The only gripe I have is the limited amount of times you can call data from it, so I had to set the refresh rate to 60 seconds, which is a little slow.
Ships:
This is SkyOS. An aviation themed Web Operating System, to turn your desktop into a virtual cockpit! For the asthetics I went with a clean frosted glass look, with aviation themed backgrounds and a grey color scheme. The most challenging part of this project was getting the formatting of the windows to line up with each other, and making the logic for each app. This was my first time working with html, so WebOS 1 was a learning experience for me. Overall I am pretty impressed with how SkyOS came out though.
As a follow up to WebOS 1, I have added 3 more features to SkyOS, aswell as refined and simplified some redundant logic that runs the foundation of this web Operating System. The features added were: 1 - A desktop switcher for multi-tasking up to 5 different workspaces 2 - A weather widget in the top right corner displaying the current weather in the area 3 - A flight radar widget in the bottom right corner displaying the number of aircraft in your area, aswell as the details of the closest aircraft to you I also re worked the script.js logic to keep each app local to its designated workspace, so that even if you switch to another workspace, that app doesnāt close, and stays running in the background....
|
1793613258.7537587
|
1793699658.7537587
|
|
23329
|
Orbit calculator by @whereami | Stardance
|
whereami
|
1
|
10.0
|
150
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T03:25:21Z", "hours": 10.0, "multiplier": 15.74, "payout": 150, "blessing": "neutral", "text": "I made a website where the user can calculate and visualize an orbit around a planetary object (or the Sun) based on their input parameters. The project actually started in March as a passion project, but I decided to turn it from a Python script to a proper website to make it more useful. Most of the obstacles I have to deal with are related to the calculations, but formatting the UI is also quite challenging. And since I made this website to make science a bit more friendly, the instructions are displayed on the website itself.", "repo": "https://github.com/phong765/Orbit-calculator/", "demo": "https://phong765.github.io/Orbit-calculator/"}]...
|
[{"post_id": 26344, "ts": "202 [{"post_id": 26344, "ts": "2026-07-11T02:34:41Z", "hours": 3.7175, "text": "Devlog #7 Iām close to accomplishing what I want for this project, and I will probably ship it soon. What I have changed I have solved the apogee, perigee problem using the eccentric vector I have added the option to choose which body in the solar system the user wants to orbit around. That means the radius and mass of the orbited object will change to reflect the physics involved. Added the ability to calculate the orbit period. Tidied up the UI What I will work on I think that I will ship it, and if I am suggested to change or add something, I will be very glad to implement it."}, {"post_id": 18967, "ts": "2026-06-30T04:32:39Z", "hours": 1.3783, "text": "Devlog #6 What I have changed: I have added additional information to the users regarding their calculation. When their orbit parameters result in the object either being below the atmosphere or crashing into the surface, a warning will appear in the result section. A warning will also be made if the parameters are invalid for an orbit around the Earth. I have also fixed the scrolling problem. The scrolling function is tied to the calculation button, and when the software hasnāt finished rendering the result image, the scroll function will scroll to the wrong place. Therefore Iāve added a delay to the scroll function so that it can wait for the completion of the rendering process. What I will work on The position of the apogee/perigee problem hasnāt been solved, mainly because it is quite math-heavy. That will be something I will try to solve in the long term, aside from other adjustments that I can carry out immediately."}, {"post_id": 15477, "ts": "2026-06-25T05:06:37Z", "hours": 1.1286, "text": "Devlog #5 What I have changed I have made some adjustments and rearrangements to the layout of the user interface to improve the user experience. I have also added a paragraph to explain how to use it and explain what the result and technical terms mean, and also explain the colors on the graph. Problems I will work on: The z=0 problem: currently, my script uses the z position provided by the user to determine the position of the apogee and perigee relative to the equator; thus, when the input for z is 0, the result isnāt satisfactory. I will probably use the velocity and the direction of rotation relative to the Earth to solve the problem. I will also add additional information to notify the user of the problems with their parameters(for example, their parameters will send the satellite into the ground or the orbit is physically impossible). The scroll function: I want the website to automatically scroll down to the result when the user presses the āCalculateā button, but it seems like my script canāt detect where to scroll down yet. To fix this, I will try to update my internal JS script."}, {"post_id": 14873, "ts": "2026-06-24T04:32:12Z", "hours": 0.9803, "text": "I have finished transferring the Python code to the website. Now I will be custommizing and improving the user interface."}, {"post_id": 14375, "ts": "2026-06-23T14:13:27Z", "hours": 0.6953, "text": "Iām transferring my Python script to a website so that itās easier to use, but the process is really messy. I plan to use PyScript, so if anyone knows how to pull this off, please let me know."}, {"post_id": 13510, "ts": "2026-06-22T03:30:26Z", "hours": 1.1094, "text": "I have completed the calculation for the apogee and perigee positions relative to the equator. I have also made some adjustments to the display of the result"}, {"post_id": 13142, "ts": "2026-06-21T14:42:40Z", "hours": 0.5394, "text": "Iām trying to determine the theta position of a given position. This will be a step toward determining where the apogee/perigee are relative to the equator."}]...
|
Title: Orbit calculator by @whereami | Stardance
Title: Orbit calculator by @whereami | Stardance
Devlogs:
Iām trying to determine the theta position of a given position. This will be a step toward determining where the apogee/perigee are relative to the equator.
I have completed the calculation for the apogee and perigee positions relative to the equator. I have also made some adjustments to the display of the result
Iām transferring my Python script to a website so that itās easier to use, but the process is really messy. I plan to use PyScript, so if anyone knows how to pull this off, please let me know.
I have finished transferring the Python code to the website. Now I will be custommizing and improving the user interface.
Devlog #5 What I have changed I have made some adjustments and rearrangements to the layout of the user interface to improve the user experience. I have also added a paragraph to explain how to use it and explain what the result and technical terms mean, and also explain the colors on the graph. Problems I will work on: The z=0 problem: currently, my script uses the z position provided by the user to determine the position of the apogee and perigee relative to the equator; thus, when the input for z is 0, the result isnāt satisfactory. I will probably use the velocity and the direction of rotation relative to the Earth to solve the problem. I will also add additional information to notify the user of the problems with their parameters(for example, their parameters will send the satellite into the ground or the orbit is physically impossible). The scroll function: I want the website to automatically scroll down to the result when the user presses the āCalculateā button, but it seems like my script canāt detect where to scroll down yet. To fix this, I will try to update my internal JS script.
Devlog #6 What I have changed: I have added additional information to the users regarding their calculation. When their orbit parameters result in the object either being below the atmosphere or crashing into the surface, a warning will appear in the result section. A warning will also be made if the parameters are invalid for an orbit around the Earth. I have also fixed the scrolling problem. The scrolling function is tied to the calculation button, and when the software hasnāt finished rendering the result image, the scroll function will scroll to the wrong place. Therefore Iāve added a delay to the scroll function so that it can wait for the completion of the rendering process. What I will work on The position of the apogee/perigee problem hasnāt been solved, mainly because it is quite math-heavy. That will be something I will try to solve in the long term, aside from other adjustments that I can carry out immediately.
Devlog #7 Iām close to accomplishing what I want for this project, and I will probably ship it soon. What I have changed I have solved the apogee, perigee problem using the eccentric vector I have added the option to choose which body in the solar system the user wants to orbit around. That means the radius and mass of the orbited object will change to reflect the physics involved. Added the ability to calculate the orbit period. Tidied up the UI What I will work on I think that I will ship it, and if I am suggested to change or add something, I will be very glad to implement it.
Ships:
I made a website where the user can calculate and visualize an orbit around a planetary object (or the Sun) based on their input parameters. The project actually started in March as a passion project, but I decided to turn it from a Python script to a proper website to make it more useful. Most of the obstacles I have to deal with are related to the calculations, but formatting the UI is also quite challenging. And since I made this website to make science a bit more friendly, the instructions are displayed on the website itself....
|
1793613259.9755683
|
1793699659.9755683
|
|
2992
|
Roamly by @Waxn | Stardance
|
Waxn
|
1
|
59.43
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T01:01:15Z", "hours": 26.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a comprehensive location tracking app. I have a very bad memory of places I have been and wanted a way to more easily see. Currently only available for Android.", "repo": "https://github.com/waxn/roamly", "demo": "https://roamly.cyou"}]...
|
[{"post_id": 83962, "ts": "202 [{"post_id": 83962, "ts": "2026-10-28T23:58:23Z", "hours": 29.8206, "text": "Auto flight importing! You can now paste in a flight number and a date, and Roamly will search opensky and extract data from your boarding pass (if uploaded) to super easily log fights."}, {"post_id": 23196, "ts": "2026-07-06T00:49:10Z", "hours": 3.6064, "text": "Focused on UI/UX for the first time."}, {"post_id": 18038, "ts": "2026-06-29T00:31:04Z", "hours": 2.4281, "text": "Added an admin page for the server admin"}, {"post_id": 17230, "ts": "2026-06-27T22:56:13Z", "hours": 5.8906, "text": "Fixed the mobile app location sending"}, {"post_id": 9590, "ts": "2026-06-15T23:47:51Z", "hours": 2.2314, "text": "Improved tracking reliability with the app"}, {"post_id": 9241, "ts": "2026-06-15T14:53:12Z", "hours": 4.2867, "text": "Fixed bug that resulted in CPU being pinned to 100%"}, {"post_id": 6332, "ts": "2026-06-10T17:36:13Z", "hours": 1.7381, "text": "WOrking on ai summaries"}, {"post_id": 5357, "ts": "2026-06-09T03:02:09Z", "hours": 1.7519, "text": "location-based journals anyone?"}, {"post_id": 4653, "ts": "2026-06-08T01:54:02Z", "hours": 3.8231, "text": "Working on making Nominatim not have limits by hosting locally"}, {"post_id": 2985, "ts": "2026-06-05T22:18:49Z", "hours": 3.6017, "text": "Worked on efficiency in mobile app"}]...
|
Title: Roamly by @Waxn | Stardance
Devlogs:
Worke Title: Roamly by @Waxn | Stardance
Devlogs:
Worked on efficiency in mobile app
Working on making Nominatim not have limits by hosting locally
location-based journals anyone?
WOrking on ai summaries
Fixed bug that resulted in CPU being pinned to 100%
Improved tracking reliability with the app
Fixed the mobile app location sending
Added an admin page for the server admin
Focused on UI/UX for the first time.
Auto flight importing! You can now paste in a flight number and a date, and Roamly will search opensky and extract data from your boarding pass (if uploaded) to super easily log fights.
Ships:
I made a comprehensive location tracking app. I have a very bad memory of places I have been and wanted a way to more easily see. Currently only available for Android....
|
1793613261.1474638
|
1793699661.1474638
|
|
25521
|
Rchive by @priyanshu | Stardance
|
priyanshu
|
1
|
30.0
|
114
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-20T08:59:42Z", "hours": 30.0, "multiplier": 7.55, "payout": 114, "blessing": "neutral", "text": "I made a offline first notes app this works completely offline and UI design is awesome. So far I have added things that are core in future releases I will be adding security features like biometeric lock and e2e encryption for now it store in a local database already secure. Hope it makes sense for you guys. looking for good response", "repo": "https://github.com/P8labs/rchive", "demo": "https://github.com/P8labs/rchive/releases"}]...
|
[{"post_id": 31675, "ts": "202 [{"post_id": 31675, "ts": "2026-07-20T08:55:12Z", "hours": 4.5811, "text": "I have finally finished V1 for Rchive. GH action is running to release apk rn. and if that finish (this is third try) i feel it will this time. than I am good to go i have tested all so far and I tried to make UI the best I can. App Size it little big as I am using custom fonts may be in future i will fix it too."}, {"post_id": 25972, "ts": "2026-07-10T14:45:59Z", "hours": 2.4961, "text": "I have rewrote the UI and removed that extra fs thing instead now all in one db"}, {"post_id": 19088, "ts": "2026-06-30T09:16:23Z", "hours": 6.9672, "text": "Today I am able to make it work I have removed separate database from vault and added a syncing logic when vault is opened a sync fn is ran that registers all the entries of the vault also fixed treeURI and location as there is some android restrictions. Also fixed alot of bugs now, we can create notes easily backend part is almost done only presentation is remaining."}, {"post_id": 16916, "ts": "2026-06-27T14:03:36Z", "hours": 3.1078, "text": "I have implemented a separate package for SAF android storage access it will just help a lot"}, {"post_id": 16731, "ts": "2026-06-27T05:35:16Z", "hours": 1.7894, "text": "Finally I have added AppState currently solved that default vault implementation but I will change it again in currrent version isDefault is the field of vault registry but it makes it dependent on vault feature so i will be changing it will remove this from vault entry and keep it into app config database"}, {"post_id": 16319, "ts": "2026-06-26T15:32:07Z", "hours": 2.5961, "text": "I have implemented two separate db one for app database and other is for vault level db in which only vault related things will store"}, {"post_id": 16119, "ts": "2026-06-26T06:29:24Z", "hours": 4.3269, "text": "i think i need redesign currently I have mixed alot mixing sharedprefs, drift db, onboarding and vault management. Now, I am going to fix and rewrite my logic now is to remove shared prefs and have a app database that will be private if app deletes it will be deleted. The flow will be when user opens app it will load data from this main appdatabase all vaults and its data this database will store only app data like logs, config, vault data and default vault if no vault opened user can open existing or create new that will register it into appdatabase than when the vault opens will create a separate vault database that will have all data related to vault only that can be synced. as i am following MVVM clean architecture: We will have features as follows for now simple comman - AppDatabase Vault, - this is a separate feature Notes, - it is separate thing"}, {"post_id": 15537, "ts": "2026-06-25T07:47:33Z", "hours": 1.2239, "text": "New note auto markdown view added with custom package and patches."}, {"post_id": 15512, "ts": "2026-06-25T06:30:08Z", "hours": 3.1181, "text": "I am working on authentication and learning clean architecture MVVM"}]...
|
Title: Rchive by @priyanshu | Stardance
Devlogs:
Title: Rchive by @priyanshu | Stardance
Devlogs:
I am working on authentication and learning clean architecture MVVM
New note auto markdown view added with custom package and patches.
i think i need redesign currently I have mixed alot mixing sharedprefs, drift db, onboarding and vault management. Now, I am going to fix and rewrite my logic now is to remove shared prefs and have a app database that will be private if app deletes it will be deleted. The flow will be when user opens app it will load data from this main appdatabase all vaults and its data this database will store only app data like logs, config, vault data and default vault if no vault opened user can open existing or create new that will register it into appdatabase than when the vault opens will create a separate vault database that will have all data related to vault only that can be synced. as i am following MVVM clean architecture: We will have features as follows for now simple comman - AppDatabase Vault, - this is a separate feature Notes, - it is separate thing
I have implemented two separate db one for app database and other is for vault level db in which only vault related things will store
Finally I have added AppState currently solved that default vault implementation but I will change it again in currrent version isDefault is the field of vault registry but it makes it dependent on vault feature so i will be changing it will remove this from vault entry and keep it into app config database
I have implemented a separate package for SAF android storage access it will just help a lot
Today I am able to make it work I have removed separate database from vault and added a syncing logic when vault is opened a sync fn is ran that registers all the entries of the vault also fixed treeURI and location as there is some android restrictions. Also fixed alot of bugs now, we can create notes easily backend part is almost done only presentation is remaining.
I have rewrote the UI and removed that extra fs thing instead now all in one db
I have finally finished V1 for Rchive. GH action is running to release apk rn. and if that finish (this is third try) i feel it will this time. than I am good to go i have tested all so far and I tried to make UI the best I can. App Size it little big as I am using custom fonts may be in future i will fix it too.
Ships:
I made a offline first notes app this works completely offline and UI design is awesome. So far I have added things that are core in future releases I will be adding security features like biometeric lock and e2e encryption for now it store in a local database already secure. Hope it makes sense for you guys. looking for good response...
|
1793613265.8474138
|
1793699665.8474138
|
|
50198
|
InterOS by @Vihaan15 | Stardance
|
Vihaan15
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T12:14:17Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It is my first webOS. It is inspired by the combination of Windows and macOS. By opening the link, you will directly get yourself into the InterOS. Click on the icons to open them and click the red dot to close the window. Hold the top of the window to drag the window anywhere you wish.", "repo": "https://github.com/Vihaan6119/InterOS", "demo": "https://vihaan6119.github.io/InterOS/"}]...
|
[{"post_id": 49518, "ts": "202 [{"post_id": 49518, "ts": "2026-08-18T12:06:33Z", "hours": 0.6272, "text": "finished my first WebOS Named it: InterOS"}, {"post_id": 48834, "ts": "2026-08-17T11:51:32Z", "hours": 1.4664, "text": "Finished half of my work"}]...
|
Title: InterOS by @Vihaan15 | Stardance
Devlogs:
Title: InterOS by @Vihaan15 | Stardance
Devlogs:
Finished half of my work
finished my first WebOS Named it: InterOS
Ships:
It is my first webOS. It is inspired by the combination of Windows and macOS. By opening the link, you will directly get yourself into the InterOS. Click on the icons to open them and click the red dot to close the window. Hold the top of the window to drag the window anywhere you wish....
|
1793613267.023537
|
1793699667.023537
|
|
52754
|
Expense Tracker by @gravityonmars | Stardance
|
gravityonmars
|
1
|
2.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T10:14:16Z", "hours": 2.0, "multiplier": 1.09, "payout": 2, "blessing": "neutral", "text": "So I made and Expense Tracker, its basically a CLI based program that tracks expense in 4 specific categories and 1 other categories, user can create there account, login to the account, add expense and see expense", "repo": "https://github.com/gravityonmars/Expense-Tracker", "demo": "https://github.com/gravityonmars/Expense-Tracker/releases/tag/v0.1.0"}]...
|
[{"post_id": 52219, "ts": "202 [{"post_id": 52219, "ts": "2026-08-22T09:58:19Z", "hours": 0.6769, "text": "Now a user can Add Expense and View the list your there expense and also I use datetime of python to get the exact date and time user added the expense"}, {"post_id": 52193, "ts": "2026-08-22T08:58:51Z", "hours": 0.875, "text": "Added User account create and Login function, it was quite similar with my last Bank Management System project so it was easy for me to do it."}]...
|
Title: Expense Tracker by @gravityonmars | Stardan Title: Expense Tracker by @gravityonmars | Stardance
Devlogs:
Added User account create and Login function, it was quite similar with my last Bank Management System project so it was easy for me to do it.
Now a user can Add Expense and View the list your there expense and also I use datetime of python to get the exact date and time user added the expense
Ships:
So I made and Expense Tracker, its basically a CLI based program that tracks expense in 4 specific categories and 1 other categories, user can create there account, login to the account, add expense and see expense...
|
1793613268.2221074
|
1793699668.2221074
|
|
52770
|
Make a Slack Bot by @ajakovski07 | Stardance
|
ajakovski07
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T10:31:08Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a basic Slack bot out of the provided tutorial. It was my first time hosting something 24/7 thanks to hack clubs nest server and it was an amazing experience. I had a lot of issues with the version control, command prompting it and etc. But i got my way around!!! It was a super easy, fun and educational thing for me that will surely help me in the future to make even harder projects like theese. For using my slack botā¦. Just type /smartio-help Byeeee", "repo": "https://github.com/Ajakovski/Make-a-Slack-Bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BSYLSSPQQ"}]...
|
[{"post_id": 52950, "ts": "202 [{"post_id": 52950, "ts": "2026-08-23T10:19:22Z", "hours": 1.2833, "text": "Made my slack bot 24/7 Finally after having loads of issues with finding the correct ssh key BECAUSE MY PC AND COMMAND PANELS ALWAYS FIND A WAY TO MAKE IT DIFFICULT. No but honestly i never completed a guide as it should be because i have downloaded so much stuff for coding that they intersect with eachother whenever i start command prompting. Next stop: Making the repo look nicer and submitting it :)"}, {"post_id": 52383, "ts": "2026-08-22T14:33:59Z", "hours": 1.8, "text": "Building the Slack Bot pt.1 Waiting for the Nest approvalā¦. Also thanks to my limitations for safety that i did as a child on VSCode now i barely managed to use git commands. Had to go astray from the official guide and figure it out myself by opening external terminals because the one in VSCode had some insane protection rules implied. Its a basic bot for the project but i did learn a lot so it was pretty fun. IDEK if this is supposed to go in a devlog XDDD"}]...
|
Title: Make a Slack Bot by @ajakovski07 | Stardanc Title: Make a Slack Bot by @ajakovski07 | Stardance
Devlogs:
Building the Slack Bot pt.1 Waiting for the Nest approvalā¦. Also thanks to my limitations for safety that i did as a child on VSCode now i barely managed to use git commands. Had to go astray from the official guide and figure it out myself by opening external terminals because the one in VSCode had some insane protection rules implied. Its a basic bot for the project but i did learn a lot so it was pretty fun. IDEK if this is supposed to go in a devlog XDDD
Made my slack bot 24/7 Finally after having loads of issues with finding the correct ssh key BECAUSE MY PC AND COMMAND PANELS ALWAYS FIND A WAY TO MAKE IT DIFFICULT. No but honestly i never completed a guide as it should be because i have downloaded so much stuff for coding that they intersect with eachother whenever i start command prompting. Next stop: Making the repo look nicer and submitting it :)
Ships:
I made a basic Slack bot out of the provided tutorial. It was my first time hosting something 24/7 thanks to hack clubs nest server and it was an amazing experience. I had a lot of issues with the version control, command prompting it and etc. But i got my way around!!! It was a super easy, fun and educational thing for me that will surely help me in the future to make even harder projects like theese. For using my slack botā¦. Just type /smartio-help Byeeee...
|
1793613269.3766003
|
1793699669.3766003
|
|
52798
|
VidNote by @Kartikey26 | Stardance
|
Kartikey26
|
1
|
6.0
|
79
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T08:04:14Z", "hours": 6.0, "multiplier": 12.87, "payout": 79, "blessing": "neutral", "text": "Mission Completed VidNote V1 is live š¬ā” Taking notes on YouTube programming tutorials has too much friction, switching tabs makes you lose your pace or remembering where you left your tutorial is too time consuming. So I built VidNote. Itās a Chrome Extension that lets you take timestamped notes/videomark without ever leaving the video. The Stack & Features: Manifest V3 & Vanilla JS DOM Injection: Injects a native āš Noteā button directly into the YouTube control bar. Zero-Friction Hotkey: Hit Alt+N while watching, the video auto-pauses, you type your note, hit enter, and it auto-resumes. The Teleporter: Click a timestamp in the popup to instantly jump the video back to that exact second. Local Storage & Export: Notes save locally and can be copied to your clipboard in one click for Notion/Obsidian. Itās not a billion-dollar startup, but it solves my exact problem See how it works: https://youtu.be/08dv63YkPuk?si=P_uNvBjuAs3gAz8J", "repo": "https://github.com/kartikeynegi25/VidNote", "demo": "https://github.com/kartikeynegi25/VidNote/releases"}]...
|
[{"post_id": 54922, "ts": "202 [{"post_id": 54922, "ts": "2026-08-26T04:34:18Z", "hours": 2.5278, "text": "So i added a copy all button so you can copy all your timestamped notes in clipboard also there is a shortcut āALT+Nā to quickly take notes and a little note button sits right inside your youtube video to make it even more accessible while significantly improving its UI!!"}, {"post_id": 53576, "ts": "2026-08-24T05:32:02Z", "hours": 2.1597, "text": "So today I tested my extension as the basic structure is complete it is working good just had some problem to add the delete button as it was not visible earlier then replaced it with x emoji so it is now perfect now will add some more functionality to it and work more on its structure and looks ;)"}, {"post_id": 52859, "ts": "2026-08-23T07:04:11Z", "hours": 1.4506, "text": "So today I start my new project VidNote a chrome extension that helps you take timestamped notes while watching youtube videos or work as your yt video bookmark so you can know where you were and what you were doing. Today I learned about Chrome extensions how they work and the main file for extension the manifest.json file also made basic popup.js file"}]...
|
Title: VidNote by @Kartikey26 | Stardance
Devlogs Title: VidNote by @Kartikey26 | Stardance
Devlogs:
So today I start my new project VidNote a chrome extension that helps you take timestamped notes while watching youtube videos or work as your yt video bookmark so you can know where you were and what you were doing. Today I learned about Chrome extensions how they work and the main file for extension the manifest.json file also made basic popup.js file
So today I tested my extension as the basic structure is complete it is working good just had some problem to add the delete button as it was not visible earlier then replaced it with x emoji so it is now perfect now will add some more functionality to it and work more on its structure and looks ;)
So i added a copy all button so you can copy all your timestamped notes in clipboard also there is a shortcut āALT+Nā to quickly take notes and a little note button sits right inside your youtube video to make it even more accessible while significantly improving its UI!!
Ships:
Mission Completed VidNote V1 is live š¬ā” Taking notes on YouTube programming tutorials has too much friction, switching tabs makes you lose your pace or remembering where you left your tutorial is too time consuming. So I built VidNote. Itās a Chrome Extension that lets you take timestamped notes/videomark without ever leaving the video. The Stack & Features: Manifest V3 & Vanilla JS DOM Injection: Injects a native āš Noteā button directly into the YouTube control bar. Zero-Friction Hotkey: Hit Alt+N while watching, the video auto-pauses, you type your note, hit enter, and it auto-resumes. The Teleporter: Click a timestamp in the popup to instantly jump the video back to that exact second. Local Storage & Export: Notes save locally and can be copied to your clipboard in one click for Notion/Obsidian. Itās not a billion-dollar startup, but it solves my exact problem See how it works: https://youtu.be/08dv63YkPuk?si=P_uNvBjuAs3gAz8J...
|
1793613270.5282185
|
1793699670.5282185
|
|
21024
|
mythicalOS by @ele-na | Stardance
|
ele-na
|
2
|
19.0
|
61
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-24T22:04:35Z", "hours": 12.0, "multiplier": 5.11, "payout": 61, "blessing": "neutral", "text": "this is a web-based OS made with html, css and javascript! features: login (password is 1234) notebook (markdown and code accepted) gallery (upload pictures) calculator spotify player calendar terminal to-do list system monitor search bar quick links time and weather tracker (easter egg found here) challenges: ZERO time to work bugs bugs bugs previous versions: elenaOS (june 2026) kpopOS (august 2026) enjoy!", "repo": "https://github.com/ele-na2011/elena.com", "demo": "https://ele-na2011.github.io/elena.com/"}, {"ship_num": 2, "ts": "2026-06-28T17:46:04Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made an OS that basically just holds my personal profile. itās pretty basic for now, just a welcome screen, spotify player, blog, and resume but i will add more in the future note: the spotify is a fixed widget bc yall are obligated to listen to my amazing music taste ty SerenityUX for the amazing guide ty google for the search engine ty claude for saving me from mental collapse during debugging future updates: add more apps (gallery app hopefully), make UI better, add location tracking for real time weather and stuff basically js make it do more things", "repo": "https://github.com/ele-na2011/elena.com", "demo": "https://ele-na2011.github.io/elena.com/"}]...
|
[{"post_id": 82464, "ts": "202 [{"post_id": 82464, "ts": "2026-10-24T21:52:20Z", "hours": 2.5528, "text": "well i genuinely have not touched vscode since i went back to school (and i ran out of codespace storage asw) so here we are i just genuinely deleted everything that wasnāt working. last devlog before submission :)))"}, {"post_id": 66292, "ts": "2026-09-12T01:18:36Z", "hours": 0.6428, "text": "schoolās started up, and iāve lowk really been slacking (just doing my sticky streak w this project now ig) and iāve lowk spent the past couple of days working on fixing a bug and adding a todo app. iāve also added more features to the terminal, but yeah! next iāll start working on the password feature and the other uh feature then it should be ready to ship! (except more bugs are showing up endlessly haha)"}, {"post_id": 63531, "ts": "2026-09-07T13:24:07Z", "hours": 1.1717, "text": "hii so iāve been busy lately (schools starting up and ive also been locking in on snowglobe!!) but iāve worked some more on this i added 2 more apps: a terminal and a newsfeed. the newsfeed uses an api endpoint to call the news, and iām planning on adding more features to the terminal! iāve also fixed the dragging issue thank godā¦.acc no im just looking at it rn and fahh yo im acc done w ts i also changed the font to ceveat, and i think the ui looks a lot more cozy now (i still need to change the font in the terminal tho haha). today i also updated the readme!! later iāll add all the icons (lowk cant find a newsfeed or terminal one but thats okay), work on the ui (and the FRICKING dragging issue bruhhh) then keep working on the secret feature!! i also want to make the os only accessible via a password, but thats a feature for the future ykk"}, {"post_id": 62284, "ts": "2026-09-05T16:05:46Z", "hours": 0.7583, "text": "yesterday and today iāve just been working on the ui, which means adding icons, etc etc and also making the window look more like a window (hint at tuff feature trust) the window drag program broke again (idek why) so iām tryna figure out how to fix that (debugging is not fun) and i wanna figure out how to open mini windows inside the webOS to make it more like an OS"}, {"post_id": 61507, "ts": "2026-09-04T13:39:10Z", "hours": 0.7083, "text": "today i mostly just customized stuff. i added a favicon (just to it looks more polished), icons for all the apps, and im working on changing the cursor inside the site im trying to find a tuff font but imo all the more modern UI ones look vibecoded idk"}, {"post_id": 61212, "ts": "2026-09-04T01:12:04Z", "hours": 2.3611, "text": "today i did a lot of work, mostly on this really tuff new feature im adding (ima call it touching grass for now), i reprogrammed the welcome screen, and got the basic format down the ui rn looks vibecoded (which it lowk is cuz i needed it cleaned up for testing) but i will go through it tmr and redesign everything (cuz as much as it fits the vibe it does look chopped asf)"}, {"post_id": 60684, "ts": "2026-09-03T06:58:40Z", "hours": 0.5658, "text": "okay so today i rebranded again (it was too hard to think up a UI theme for kpop and iām too lazy to change the wallpaper (feature coming soon tho dw) i cleaned up some formatting so itās slightly easier to test, and iām working on a toolbar thats similar to those that run on actual laptops"}, {"post_id": 49900, "ts": "2026-08-18T21:17:55Z", "hours": 0.6858, "text": "today i started the rebrand by firstly, deleting a lot of code, and secondly, deciding some features. i deleted the resume, the notebook (gonna make a better one ofc) and the original welcome screen im pretty much done the intro screen, iām not gonna make it reopenable itās just gonna be a separate tab type shi (and its very neutral) iām still debating whether to have separate themes for each kpop group (iām gonna start w seventeen and enhypen first just to make sure ik changing it works, and everything would be easier as i would just have the icons like pictures of the group and stuff) or have the user themselves upload a background and stuff i relocated the top bar to the bottom center (still have to work on the formatting and stuff ofc) iām thinking about what apps to build, definitely need weverse, mnet, spotify (already built, iāll just keep it), a pomodoro timer, etc etc"}, {"post_id": 42977, "ts": "2026-08-07T23:48:50Z", "hours": 0.8789, "text": "okay so now that i have my very professional site, itās time for the very exciting rebrand of ElenaOS iām brainstorming themes rn, but i think i might make a kpopOS (because i really like kpop ofc lol) this is going to be a lot of work lol (essentially starting over again) but letās see where this goes"}, {"post_id": 29123, "ts": "2026-07-15T19:47:50Z", "hours": 0.7731, "text": "today i was pretty productive and added some apps. i think everything started getting easier once i started getting the hang of things with adding new apps and ensuring that they can open and close normally and stuff i added a grade calculator and embedded a google calendar in there as well i want to be able to sync a lot of things in the OS to my google account so that I donāt have to set up extra time to go update the site"}, {"post_id": 28629, "ts": "2026-07-15T00:19:31Z", "hours": 0.7594, "text": "i havenāt worked on this in a while (since the ship was approving lmao) but today i added a gallery app (as promised from the last ship) im not gonna worry too much about actual OS aesthetics until I have a couple more fully functional apps, then ima see if I can animate the background or smt i also wanna code a OS pet but thats a project for slightly later lmao anyways about the gallery app, its just gonna be a simple carousel to demonstrate my projects and stuff. highkey i regret creating this OS all about myself especially after they dropped the new personal website mission but oh well"}, {"post_id": 17735, "ts": "2026-06-28T17:29:22Z", "hours": 0.6325, "text": "this is prob the last devlog before i ship this project for the first time i added a resume and made that draggable also fixed some bugs⦠(a lot of bugs) in the top bar i also added a temperature tracking module that tracks the temperature in a random town (its pretty tuff) but someday i will update it to match the location of the user ima add some actual articles to the notebook someday the spotify remains a widget anyways all of this will be completed in elenaOS2.0!!"}, {"post_id": 17334, "ts": "2026-06-28T02:25:15Z", "hours": 2.6892, "text": "its been a long day lmao i got the dragging bug fixed and created the notebook app, still working on some formatting issues but its going well. i decided to make it a blog of some sort that i can update through the html code pretty easily and u can basically access it through a dropdown menu instead of a sidebar i decided to make the spotify permanently fixed on the screen and so i deleted its handle and close button (partly bc i couldnt get the click-> open function to work and i didnāt want to deal with it tdy) im probably js gonna make all the apps collectively located on the left and have them open on the right and thus have some sort of control panel on the left the vision is coming together gng ima go brainstorm the new app now :)"}, {"post_id": 16524, "ts": "2026-06-26T21:45:44Z", "hours": 0.8669, "text": "help gng the bugs r only getting worse i added a spotify player and a notebook thingy but i js need the notebook to be closed when the program starts and open on click the drift problem applies to all 3 of the tiny windows now and claude aint fixing it i like the spotify player tho bc its the only thing that works ToT im acc so done (small thing but ima upload a playlist cover cuz i dont like the blue scheme of the playlist) and if i dont drag the others the notebook wont even drag so that needs to be fixed asw"}, {"post_id": 16382, "ts": "2026-06-26T17:39:59Z", "hours": 1.1119, "text": "its been quite a while of trying to debug the drifting problem, so i decided to just go ahead and add some more stuff im trying to add a spotify player and the app thats described in the guide it looks tuff, js some more problems to fix"}, {"post_id": 16254, "ts": "2026-06-26T12:37:47Z", "hours": 1.0319, "text": "oki so between last night and this morning i js kept going with the guide and added some backgrounds and graphics, as well as the timekeeper im currently working on the dragging function, which is bugging out a bit rn but i will figure it out (trust!) i also want to figure out a way to add boundaries so that i wont be able to js drag the window completely off the screen (as shown below lol)"}, {"post_id": 16039, "ts": "2026-06-26T01:50:05Z", "hours": 0.2667, "text": "hi gng first devlog ever so here goes tdy i finally got hackatime, github and my vscode all connected and set up. i havenāt coded HTML since over 5 yrs ago so i dont rlly remember anything so im starting from scratch again yay!! the guides r rlly helpful and im finally recalling some of my past knowledge and i managed to get a decent looking webos started im tired so ima continue this tmr but hey at least its started ykyk"}]...
|
Title: mythicalOS by @ele-na | Stardance
Devlogs: Title: mythicalOS by @ele-na | Stardance
Devlogs:
hi gng first devlog ever so here goes tdy i finally got hackatime, github and my vscode all connected and set up. i havenāt coded HTML since over 5 yrs ago so i dont rlly remember anything so im starting from scratch again yay!! the guides r rlly helpful and im finally recalling some of my past knowledge and i managed to get a decent looking webos started im tired so ima continue this tmr but hey at least its started ykyk
oki so between last night and this morning i js kept going with the guide and added some backgrounds and graphics, as well as the timekeeper im currently working on the dragging function, which is bugging out a bit rn but i will figure it out (trust!) i also want to figure out a way to add boundaries so that i wont be able to js drag the window completely off the screen (as shown below lol)
its been quite a while of trying to debug the drifting problem, so i decided to just go ahead and add some more stuff im trying to add a spotify player and the app thats described in the guide it looks tuff, js some more problems to fix
help gng the bugs r only getting worse i added a spotify player and a notebook thingy but i js need the notebook to be closed when the program starts and open on click the drift problem applies to all 3 of the tiny windows now and claude aint fixing it i like the spotify player tho bc its the only thing that works ToT im acc so done (small thing but ima upload a playlist cover cuz i dont like the blue scheme of the playlist) and if i dont drag the others the notebook wont even drag so that needs to be fixed asw
its been a long day lmao i got the dragging bug fixed and created the notebook app, still working on some formatting issues but its going well. i decided to make it a blog of some sort that i can update through the html code pretty easily and u can basically access it through a dropdown menu instead of a sidebar i decided to make the spotify permanently fixed on the screen and so i deleted its handle and close button (partly bc i couldnt get the click-> open function to work and i didnāt want to deal with it tdy) im probably js gonna make all the apps collectively located on the left and have them open on the right and thus have some sort of control panel on the left the vision is coming together gng ima go brainstorm the new app now :)
this is prob the last devlog before i ship this project for the first time i added a resume and made that draggable also fixed some bugs⦠(a lot of bugs) in the top bar i also added a temperature tracking module that tracks the temperature in a random town (its pretty tuff) but someday i will update it to match the location of the user ima add some actual articles to the notebook someday the spotify remains a widget anyways all of this will be completed in elenaOS2.0!!
i havenāt worked on this in a while (since the ship was approving lmao) but today i added a gallery app (as promised from the last ship) im not gonna worry too much about actual OS aesthetics until I have a couple more fully functional apps, then ima see if I can animate the background or smt i also wanna code a OS pet but thats a project for slightly later lmao anyways about the gallery app, its just gonna be a simple carousel to demonstrate my projects and stuff. highkey i regret creating this OS all about myself especially after they dropped the new personal website mission but oh well
today i was pretty productive and added some apps. i think everything started getting easier once i started getting the hang of things with adding new apps and ensuring that they can open and close normally and stuff i added a grade calculator and embedded a google calendar in there as well i want to be able to sync a lot of things in the OS to my google account so that I donāt have to set up extra time to go update the site
okay so now that i have my very professional site, itās time for the very exciting rebrand of ElenaOS iām brainstorming themes rn, but i think i might make a kpopOS (because i really like kpop ofc lol) this is going to be a lot of work lol (essentially starting over again) but letās see where this goes
today i started the rebrand by firstly, deleting a lot of code, and secondly, deciding some features. i deleted the resume, the notebook (gonna make a better one ofc) and the original welcome screen im pretty much done the intro screen, iām not gonna make it reopenable itās just gonna be a separate tab type shi (and its very neutral) iām still debating whether to have separate themes for each kpop group (iām gonna start w seventeen and enhypen first just to make sure ik changing it works, and everything would be easier as i would just have the icons like pictures of the group and stuff) or have the user themselves upload a background and stuff i relocated the top bar to the bottom center (still have to work on the formatting and stuff ofc) iām thinking about what apps to build, definitely need weverse, mnet, spotify (already built, iāll just keep it), a pomodoro timer, etc etc
okay so today i rebranded again (it was too hard to think up a UI theme for kpop and iām too lazy to change the wallpaper (feature coming soon tho dw) i cleaned up some formatting so itās slightly easier to test, and iām working on a toolbar thats similar to those that run on actual laptops
today i did a lot of work, mostly on this really tuff new feature im adding (ima call it touching grass for now), i reprogrammed the welcome screen, and got the basic format down the ui rn looks vibecoded (which it lowk is cuz i needed it cleaned up for testing) but i will go through it tmr and redesign everything (cuz as much as it fits the vibe it does look chopped asf)
today i mostly just customized stuff. i added a favicon (just to it looks more polished), icons for all the apps, and im working on changing the cursor inside the site im trying to find a tuff font but imo all the more modern UI ones look vibecoded idk
yesterday and today iāve just been working on the ui, which means adding icons, etc etc and also making the window look more like a window (hint at tuff feature trust) the window drag program broke again (idek why) so iām tryna figure out how to fix that (debugging is not fun) and i wanna figure out how to open mini windows inside the webOS to make it more like an OS
hii so iāve been busy lately (schools starting up and ive also been locking in on snowglobe!!) but iāve worked some more on this i added 2 more apps: a terminal and a newsfeed. the newsfeed uses an api endpoint to call the news, and iām planning on adding more features to the terminal! iāve also fixed the dragging issue thank godā¦.acc no im just looking at it rn and fahh yo im acc done w ts i also changed the font to ceveat, and i think the ui looks a lot more cozy now (i still need to change the font in the terminal tho haha). today i also updated the readme!! later iāll add all the icons (lowk cant find a newsfeed or terminal one but thats okay), work on the ui (and the FRICKING dragging issue bruhhh) then keep working on the secret feature!! i also want to make the os only accessible via a password, but thats a feature for the future ykk
schoolās started up, and iāve lowk really been slacking (just doing my sticky streak w this project now ig) and iāve lowk spent the past couple of days working on fixing a bug and adding a todo app. iāve also added more features to the terminal, but yeah! next iāll start working on the password feature and the other uh feature then it should be ready to ship! (except more bugs are showing up endlessly haha)
well i genuinely have not touched vscode since i went back to school (and i ran out of codespace storage asw) so here we are i just genuinely deleted everything that wasnāt working. last devlog before submission :)))
Ships:
i made an OS that basically just holds my personal profile. itās pretty basic for now, just a welcome screen, spotify player, blog, and resume but i will add more in the future note: the spotify is a fixed widget bc yall are obligated to listen to my amazing music taste ty SerenityUX for the amazing guide ty google for the search engine ty claude for saving me from mental collapse during debugging future updates: add more apps (gallery app hopefully), make UI better, add location tracking for real time weather and stuff basically js make it do more things
this is a web-based OS made with html, css and javascript! features: login (password is 1234) notebook (markdown and code accepted) gallery (upload pictures) calculator spotify player calendar terminal to-do list system monitor search bar quick links time and weather tracker (easter egg found here) challenges: ZERO time to work bugs bugs bugs previous versions: elenaOS (june 2026) kpopOS (august 2026) enjoy!...
|
1793613271.7293646
|
1793699671.7293646
|
|
67071
|
hello world by @rgb-hsl | Stardance
|
rgb-hsl
|
1
|
11.0
|
25
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T15:36:29Z", "hours": 11.0, "multiplier": 2.36, "payout": 25, "blessing": "neutral", "text": "Hello World is a metafiction text game written in Python that functions as a Python tutorial, while the program tries its best to simultaneously demotivate the user (lol). But who knows, maybe thereās a reason for that⦠I tried my best to make use of the critique I received on my previous python project by introducing better error handling and using ANSI color codes to make it more interesting. I learnt new things while working on it, such as the color codes, and try and except functions, so Iām quite happy with it. But I did procrastinate like crazy and had a lot of issues after my GitHub codespaces ran out⦠but Iām done now, somehow. Itās playable on pyterm without install! If you give it a try I hope you enjoy playing!", "repo": "https://github.com/rgbhsl/helloworld", "demo": "https://pyterm.hackclub.com/rgbhsl/helloworld"}]...
|
[{"post_id": 83010, "ts": "202 [{"post_id": 83010, "ts": "2026-10-26T15:30:22Z", "hours": 1.7794, "text": "Itās FINALLLYYYYYY done!!!!!!! Had to do a lot of bug fixes, and work in 3 different IDEs, but here it is, finally. My second Python project!"}, {"post_id": 82092, "ts": "2026-10-23T20:41:15Z", "hours": 1.5519, "text": "Iāve barely worked on this in AGEEEESSSSS. i gotta lock in and speedrun this thing. Added some try and except features as well, learning more about errors."}, {"post_id": 78061, "ts": "2026-10-09T12:38:07Z", "hours": 2.3247, "text": "Lately Iāve been working a bit slower than I would like to, but I made a fair amount of progress today. What the program structure looks like right now:"}, {"post_id": 76807, "ts": "2026-10-04T17:09:15Z", "hours": 3.2694, "text": "Devlog 2 Havenāt posted a devlog in some time! The game is progressing quite well. Iāve learnt several new things while working on it lately, such as: ANSI escape codes to change the text color. Big game changer (no pun intended). Made short functions in order to save myself time writing longer commands over and over to leave lines or wait for a short time learning Try and Except these days! as well as the history of Python (itāll be relevantā¦) Eventually: I want it to have at least 3 endings, and maybe even achievements. I want to increase interactivity As for the storyline, Iām working on that as I go along. Any recommendations or advice appreciated!"}, {"post_id": 75662, "ts": "2026-09-30T17:37:03Z", "hours": 1.8475, "text": "I really enjoyed making my previous Python project, much more than the ones Iāve been making with HTML, so I decided to make another! I will be paying close attention to some of the critique i got on my previous Python project and adding more features, improved error handling etc. and improving my README and devlogs. I want to learn new skills with this project as well!!!"}]...
|
Title: hello world by @rgb-hsl | Stardance
Devlog Title: hello world by @rgb-hsl | Stardance
Devlogs:
I really enjoyed making my previous Python project, much more than the ones Iāve been making with HTML, so I decided to make another! I will be paying close attention to some of the critique i got on my previous Python project and adding more features, improved error handling etc. and improving my README and devlogs. I want to learn new skills with this project as well!!!
Devlog 2 Havenāt posted a devlog in some time! The game is progressing quite well. Iāve learnt several new things while working on it lately, such as: ANSI escape codes to change the text color. Big game changer (no pun intended). Made short functions in order to save myself time writing longer commands over and over to leave lines or wait for a short time learning Try and Except these days! as well as the history of Python (itāll be relevantā¦) Eventually: I want it to have at least 3 endings, and maybe even achievements. I want to increase interactivity As for the storyline, Iām working on that as I go along. Any recommendations or advice appreciated!
Lately Iāve been working a bit slower than I would like to, but I made a fair amount of progress today. What the program structure looks like right now:
Iāve barely worked on this in AGEEEESSSSS. i gotta lock in and speedrun this thing. Added some try and except features as well, learning more about errors.
Itās FINALLLYYYYYY done!!!!!!! Had to do a lot of bug fixes, and work in 3 different IDEs, but here it is, finally. My second Python project!
Ships:
Hello World is a metafiction text game written in Python that functions as a Python tutorial, while the program tries its best to simultaneously demotivate the user (lol). But who knows, maybe thereās a reason for that⦠I tried my best to make use of the critique I received on my previous python project by introducing better error handling and using ANSI color codes to make it more interesting. I learnt new things while working on it, such as the color codes, and try and except functions, so Iām quite happy with it. But I did procrastinate like crazy and had a lot of issues after my GitHub codespaces ran out⦠but Iām done now, somehow. Itās playable on pyterm without install! If you give it a try I hope you enjoy playing!...
|
1793613273.0480175
|
1793699673.0480175
|