|
17086
|
Gofer by @DevomB | Stardance
|
DevomB
|
1
|
12.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-08T00:00:54Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Gofer is a full Go (Baduk) engine written in Go, implementing Chinese rules with Monte Carlo Tree Search (MCTS) as its core decision-making algorithm. The engine supports terminal play, self-play, position analysis, and SGF import/export, making it usable both as a standalone player and as a research tool. It also implements the Go Text Protocol (GTP), which lets it plug directly into popular Go GUIs like Sabaki and Lizzie for a more visual playing and analysis experience. Technical Implementation Paragraph Under the hood, Gofer uses PUCT-based MCTS with a transposition table and parallel playouts, paired with a heuristic evaluator (stones, liberties, territory estimate, move priors) or an ONNX neural network backend for stronger play. The project includes a full machine learning training loop inspired by AlphaGo Zero-style research, with a PyTorch bootstrap trainer, self-play sample generation, and arena gating (using Wilson confidence intervals) to validate that new model versions actually outperform prior ones before promotion. It’s built primarily in Go (70.8%) with Python for the training pipeline and Shell for automation scripts, and ships with a nightly 200-game arena workflow on GitHub Actions plus a public web demo hosted at gofer.devomb.com. Progress and Learnings Paragraph The current release, v2.7.0, includes in-process ONNX inference (no external sidecar needed), a parity harness proving the Go inference engine matches the Python reference implementation bit-for-bit, and profile-guided build optimization for performance tuning. Building Gofer meant tackling real research-to-code translation, implementing ideas from the Wu et al. 2020 Go ML paper, wiring together board logic, tree search, and neural inference into one coherent binary. Remaining goals include closing the strength gap toward KataGo-level play, moving fully off the ONNX sidecar architecture, and adding complete time control support like byo-yomi.", "repo": "https://github.com/DevomB/Gofer", "demo": "https://gofer.devomb.com"}]...
|
[{"post_id": 24431, "ts": "202 [{"post_id": 24431, "ts": "2026-07-07T23:55:12Z", "hours": 0.495, "text": "I’ve just spent these last 30 minutes fixing my entire training pipeline since it is a bit broken."}, {"post_id": 24256, "ts": "2026-07-07T18:16:34Z", "hours": 11.7622, "text": "Gofer is a Go (Baduk) playing engine I built from scratch in Go, inspired by the AlphaGo Zero research paper, currently at version 2.7.0. It supports Chinese rules, a GTP interface so it works with popular Go analysis tools like Sabaki and Lizzie, terminal play, self-play generation, and SGF import/export. Rather than trying to compete with production-grade engines like KataGo, I built it as a research-focused project to deeply understand how these systems actually work under the hood. At its core, Gofer uses Monte Carlo Tree Search with a PUCT selection strategy — the same family of algorithm that powers AlphaZero — combined with a neural network evaluator to judge board positions. I implemented ONNX-based neural inference directly in Go, which let me plug in trained model weights and validate that my Go inference pipeline produces results that exactly match a Python reference implementation. Playout counts scale with board size, so the engine can play quick games on small boards or think harder on a full 19x19 board. Beyond just the engine itself, I built a full training and validation pipeline around it, including a replay buffer for generating self-play data and an “arena” system that only promotes a new model if it statistically beats the current best version. I also set up automated nightly games and performance benchmarks through GitHub Actions to make sure new changes don’t quietly make the engine weaker or slower. It’s been a great deep dive into machine learning, search algorithms, and systems engineering all in one project."}]...
|
Title: Gofer by @DevomB | Stardance
Devlogs:
Gofe Title: Gofer by @DevomB | Stardance
Devlogs:
Gofer is a Go (Baduk) playing engine I built from scratch in Go, inspired by the AlphaGo Zero research paper, currently at version 2.7.0. It supports Chinese rules, a GTP interface so it works with popular Go analysis tools like Sabaki and Lizzie, terminal play, self-play generation, and SGF import/export. Rather than trying to compete with production-grade engines like KataGo, I built it as a research-focused project to deeply understand how these systems actually work under the hood. At its core, Gofer uses Monte Carlo Tree Search with a PUCT selection strategy — the same family of algorithm that powers AlphaZero — combined with a neural network evaluator to judge board positions. I implemented ONNX-based neural inference directly in Go, which let me plug in trained model weights and validate that my Go inference pipeline produces results that exactly match a Python reference implementation. Playout counts scale with board size, so the engine can play quick games on small boards or think harder on a full 19x19 board. Beyond just the engine itself, I built a full training and validation pipeline around it, including a replay buffer for generating self-play data and an “arena” system that only promotes a new model if it statistically beats the current best version. I also set up automated nightly games and performance benchmarks through GitHub Actions to make sure new changes don’t quietly make the engine weaker or slower. It’s been a great deep dive into machine learning, search algorithms, and systems engineering all in one project.
I’ve just spent these last 30 minutes fixing my entire training pipeline since it is a bit broken.
Ships:
Gofer is a full Go (Baduk) engine written in Go, implementing Chinese rules with Monte Carlo Tree Search (MCTS) as its core decision-making algorithm. The engine supports terminal play, self-play, position analysis, and SGF import/export, making it usable both as a standalone player and as a research tool. It also implements the Go Text Protocol (GTP), which lets it plug directly into popular Go GUIs like Sabaki and Lizzie for a more visual playing and analysis experience. Technical Implementation Paragraph Under the hood, Gofer uses PUCT-based MCTS with a transposition table and parallel playouts, paired with a heuristic evaluator (stones, liberties, territory estimate, move priors) or an ONNX neural network backend for stronger play. The project includes a full machine learning training loop inspired by AlphaGo Zero-style research, with a PyTorch bootstrap trainer, self-play sample generation, and arena gating (using Wilson confidence intervals) to validate that new model versions actually outperform prior ones before promotion. It’s built primarily in Go (70.8%) with Python for the training pipeline and Shell for automation scripts, and ships with a nightly 200-game arena workflow on GitHub Actions plus a public web demo hosted at gofer.devomb.com. Progress and Learnings Paragraph The current release, v2.7.0, includes in-process ONNX inference (no external sidecar needed), a parity harness proving the Go inference engine matches the Python reference implementation bit-for-bit, and profile-guided build optimization for performance tuning. Building Gofer meant tackling real research-to-code translation, implementing ideas from the Wu et al. 2020 Go ML paper, wiring together board logic, tree search, and neural inference into one coherent binary. Remaining goals include closing the strength gap toward KataGo-level play, moving fully off the ONNX sidecar architecture, and adding complete time control support like byo-yomi....
|
1793119793.1847215
|
1793206193.1847215
|
|
17113
|
RockPaperScissors by @smjp | Stardance
|
smjp
|
1
|
1.53
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T05:09:02Z", "hours": 0.0, "multiplier": 2.35, "payout": 0, "blessing": "neutral", "text": "I made a simple rock paper scissors game after recently learning JS. Currently the most challenging part was probably DOM, localStorage and autoplay features and I was a complete beginner. However, now it looks really cool and even if its simple I hope you guys do give it a good play atleast once and maybe suggest some improvements!", "repo": "https://github.com/Spirit62/Rockpaperscissors", "demo": "https://spirit62.github.io/Rockpaperscissors/"}]...
|
[{"post_id": 11077, "ts": "202 [{"post_id": 11077, "ts": "2026-06-18T03:36:29Z", "hours": 0.8475, "text": "Hey there, I added some amazing changes A shortcut for ‘AutoPlay’ and ‘ResetScore’ Visual changes to font and button/text colors so that it has a better UI A pop-up message displaying if user presses ‘Backspace’ to avoid mis-clicks Things I learnt here: Mainly I implemented addevenListener in js instead of using onclick in HTML, and I also had a huge logic for the pop-up thingy which is not as easy as it looks but it worked fine and I’m really proud :D"}, {"post_id": 9855, "ts": "2026-06-16T09:44:03Z", "hours": 0.6836, "text": "A functionality was added where you can press keys instead of clicking the buttons manually, i changed this by removing onclick attribute on HTML and implementing document.body.eventListener, it really helped and its something new is learnt"}, {"post_id": 7288, "ts": "2026-06-12T04:37:52Z", "hours": 0.0669, "text": "I built a dark mode Rock Paper Scissors game from scratch to learn dynamic DOM manipulation, state logic, and browser storage. The single biggest obstacle was deploying to GitHub, where my image assets completely broke on live servers. It turned out to be a case-sensitivity issue—GitHub’s Linux-based servers rejected my lowercase image paths because my JavaScript was passing capitalized strings. I’m really proud of debugging this and fixing it programmatically using the .toLowerCase() method, which successfully synced my script with the directory assets. The code is clean, fully responsive, and keeps your score saved via localStorage even after a page refresh!"}]...
|
Title: RockPaperScissors by @smjp | Stardance
Dev Title: RockPaperScissors by @smjp | Stardance
Devlogs:
I built a dark mode Rock Paper Scissors game from scratch to learn dynamic DOM manipulation, state logic, and browser storage. The single biggest obstacle was deploying to GitHub, where my image assets completely broke on live servers. It turned out to be a case-sensitivity issue—GitHub’s Linux-based servers rejected my lowercase image paths because my JavaScript was passing capitalized strings. I’m really proud of debugging this and fixing it programmatically using the .toLowerCase() method, which successfully synced my script with the directory assets. The code is clean, fully responsive, and keeps your score saved via localStorage even after a page refresh!
A functionality was added where you can press keys instead of clicking the buttons manually, i changed this by removing onclick attribute on HTML and implementing document.body.eventListener, it really helped and its something new is learnt
Hey there, I added some amazing changes A shortcut for ‘AutoPlay’ and ‘ResetScore’ Visual changes to font and button/text colors so that it has a better UI A pop-up message displaying if user presses ‘Backspace’ to avoid mis-clicks Things I learnt here: Mainly I implemented addevenListener in js instead of using onclick in HTML, and I also had a huge logic for the pop-up thingy which is not as easy as it looks but it worked fine and I’m really proud :D
Ships:
I made a simple rock paper scissors game after recently learning JS. Currently the most challenging part was probably DOM, localStorage and autoplay features and I was a complete beginner. However, now it looks really cool and even if its simple I hope you guys do give it a good play atleast once and maybe suggest some improvements!...
|
1793285452.933857
|
1793371852.933857
|
|
17117
|
Grad Picture Getter For Picking The Right Picture Grad Picture Getter For Picking The Right Picture by @ryanthhua | Stardance...
|
ryanthhua
|
1
|
8.0
|
67
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T20:41:41Z", "hours": 8.0, "multiplier": 8.58, "payout": 67, "blessing": "neutral", "text": "Recently just had graduation, and found out that flash photography provides a zoomed in hd picture of the grad picture, which you can select each spot to zoom into. I did some research and found a github project which used the idea to stitch together the pictures, but when I ran it it did not work. So now I decided I will make my own program to stitch the zoomed in pictures together to make one big preview image of the graduation picture so that you can correctly decide what to get. I started with planning how it would work, such as the double for loop to get the x and y coordinate, which flash photography uses to grab the right zoomed picture via url, and then the idea to download each picture and then use some java method to put them onto a larger image. What I found difficult was not using new methods I had never seen, but rather understanding how the url worked and how even though you go down one pixel on the y axis it for some reason visually shifts the x axis to the right. So I could not take thousands of pictures and then place them together as they would not align correctly; instead I had to use larger pictures and divided up the picture by 4 x 4. After the first success with getting the picture stitched together I wanted to try and remove the zoom in box by cropping it out. So I used subimage method and did some measurements to see where I need to crop. Then I realized that the lines remove image data creating visual issues, and I need to find a way to restore it, so I implemented gaps to be introduced and after finding the correct tweaks for one picture, I tried it on a different one and then those didn’t work for that one, so I implemented user settings so that the user can adjust and try to make it work for their picture. I had ditched having the zoomed in box, but then I realized that trying to restore the data lost by removing the zoom in box may not work at all, so I put an option so that you can have one with the zoom in box, but have no visual issues. I think by limiting myself to no AI and only use forums like stack overflow, I was able to be more of an experimentor, with most of my time tweaking small things to see if they made a difference, and by doing these I think I gained more experience and understanding with the new methods I learned. Then I learned how to export ot jar in vscode and then use launch4j’s config to set it to cli,jre bundle path, and in the end create a exe.", "repo": "https://github.com/RyanTheHua/GraduationPictureGetter/tree/main", "demo": "https://github.com/RyanTheHua/GraduationPictureGetter/releases/tag/Graduation"}]...
|
[{"post_id": 8308, "ts": "2026 [{"post_id": 8308, "ts": "2026-06-13T20:24:43Z", "hours": 2.9153, "text": "Readme.md"}, {"post_id": 7883, "ts": "2026-06-13T04:51:42Z", "hours": 3.1411, "text": "I think finally done. Here are some screenshots of stages of development and the many different tweaks. In the beginning I started with just getting the whole image (the one with squares in the middle, but there were also some lines remaining and visual issues. Then I moved on to make the amount squares used to be 4 x 4 that way more quality could be saved and that looked a lot better. After that I started to utilize cropping to remove those squares and ran through some issues with measurement so I used a pixel ruler to get accurate cropping. After a lot of tweaking such by filling in the gap left from cropping the white square, and how many imagese to stitch together in one, I finally was able to get a good product out of the program and while it does look good there are dark lines where the stitches are, but I think that is good as this was not a program to generate full quality pictures from a photo company, but to generate a good full preview image."}, {"post_id": 7757, "ts": "2026-06-12T23:06:45Z", "hours": 1.7392, "text": "Some sites such as flash photography give you a small zoomed in hd image for you to preview, I want to stitich together all those images into one full image, so you can better view the image. If you like those pictures you have to buy from photographer’s website. If you use this project to get picture you are agreed you will delete those result later. My idea was I can download the images and then stitch them together using java’s imageIO and graphics. If you decide to keep any images as a result of this program is purely between you and that photographer company. And you agree do not use this program to mass-produce image for other people!"}]...
|
Title: Grad Picture Getter For Picking The Right P Title: Grad Picture Getter For Picking The Right Picture by @ryanthhua | Stardance
Devlogs:
Some sites such as flash photography give you a small zoomed in hd image for you to preview, I want to stitich together all those images into one full image, so you can better view the image. If you like those pictures you have to buy from photographer’s website. If you use this project to get picture you are agreed you will delete those result later. My idea was I can download the images and then stitch them together using java’s imageIO and graphics. If you decide to keep any images as a result of this program is purely between you and that photographer company. And you agree do not use this program to mass-produce image for other people!
I think finally done. Here are some screenshots of stages of development and the many different tweaks. In the beginning I started with just getting the whole image (the one with squares in the middle, but there were also some lines remaining and visual issues. Then I moved on to make the amount squares used to be 4 x 4 that way more quality could be saved and that looked a lot better. After that I started to utilize cropping to remove those squares and ran through some issues with measurement so I used a pixel ruler to get accurate cropping. After a lot of tweaking such by filling in the gap left from cropping the white square, and how many imagese to stitch together in one, I finally was able to get a good product out of the program and while it does look good there are dark lines where the stitches are, but I think that is good as this was not a program to generate full quality pictures from a photo company, but to generate a good full preview image.
Readme.md
Ships:
Recently just had graduation, and found out that flash photography provides a zoomed in hd picture of the grad picture, which you can select each spot to zoom into. I did some research and found a github project which used the idea to stitch together the pictures, but when I ran it it did not work. So now I decided I will make my own program to stitch the zoomed in pictures together to make one big preview image of the graduation picture so that you can correctly decide what to get. I started with planning how it would work, such as the double for loop to get the x and y coordinate, which flash photography uses to grab the right zoomed picture via url, and then the idea to download each picture and then use some java method to put them onto a larger image. What I found difficult was not using new methods I had never seen, but rather understanding how the url worked and how even though you go down one pixel on the y axis it for some reason visually shifts the x axis to the right. So I could not take thousands of pictures and then place them together as they would not align correctly; instead I had to use larger pictures and divided up the picture by 4 x 4. After the first success with getting the picture stitched together I wanted to try and remove the zoom in box by cropping it out. So I used subimage method and did some measurements to see where I need to crop. Then I realized that the lines remove image data creating visual issues, and I need to find a way to restore it, so I implemented gaps to be introduced and after finding the correct tweaks for one picture, I tried it on a different one and then those didn’t work for that one, so I implemented user settings so that the user can adjust and try to make it work for their picture. I had ditched having the zoomed in box, but then I realized that trying to restore the data lost by removing the zoom in box may not work at all, so I put an option so that you can have one with the zoom in box, but have no visual issues. I think by limiting myself to no AI and only use forums like stack overflow, I was able to be more of an experimentor, with most of my time tweaking small things to see if they made a difference, and by doing these I think I gained more experience and understanding with the new methods I learned. Then I learned how to export ot jar in vscode and then use launch4j’s config to set it to cli,jre bundle path, and in the end create a exe....
|
1793227665.265595
|
1793314065.265595
|
|
17134
|
particle fun by @lazerkat | Stardance
|
lazerkat
|
1
|
4.0
|
51
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T23:18:33Z", "hours": 4.0, "multiplier": 12.05, "payout": 51, "blessing": "neutral", "text": "I have made a particle simulation that works in your browser! It was challenging to make the gravity and the sim itself, I am proud of the way the circles move, and you should know that it not very realistic before testing it, but it is very fun!", "repo": "https://github.com/betelguesestudios/particle-fun", "demo": "https://betelguesestudios.github.io/particle-fun/"}]...
|
[{"post_id": 14742, "ts": "202 [{"post_id": 14742, "ts": "2026-06-23T23:14:20Z", "hours": 0.5211, "text": "Devlog #5! I rewrote the readme yay"}, {"post_id": 9078, "ts": "2026-06-15T05:06:38Z", "hours": 0.8506, "text": "Devlog #4!! I did a few things: 1: Delete all particles button 2: Made the particles bigger dependent on their mass 3: Canvas size slider (for lower end devices like mine) 4: called the variables the most random names so anyone looking at the code will get confused lol"}, {"post_id": 8499, "ts": "2026-06-14T04:11:23Z", "hours": 0.4967, "text": "Devlog #3! I didn’t have that much time today, as I have to go to a birthday, but I added some more sliders to make different gravitational forces, more disturbance, and I wrote a little tutorial inside the page. I think I need to outline the canvas as its very hard to see. I’ll also try and get some styling done! Also I took a 9 minute simulation and sped it up into 30 secondsish and attached it here :)"}, {"post_id": 7899, "ts": "2026-06-13T05:45:09Z", "hours": 1.2436, "text": "Devlog #2! added gravitational fields and made a thing where you can make a large disturbance in particles (like if you made a loud sound)! now i need to make more customisation!😀"}, {"post_id": 7873, "ts": "2026-06-13T04:15:58Z", "hours": 1.0819, "text": "Devlog #1! I made a bunch of particles bounce around inside a container!! i also calculated the grams using the atomic weight of Oganesson (the heaviest element) and even with that my computer still crashes before i get to even a gram…. its realistic tho! the video attached is actually sped up footage of about 3 minutes of simulation…… i need to do optimization"}]...
|
Title: particle fun by @lazerkat | Stardance
Devl Title: particle fun by @lazerkat | Stardance
Devlogs:
Devlog #1! I made a bunch of particles bounce around inside a container!! i also calculated the grams using the atomic weight of Oganesson (the heaviest element) and even with that my computer still crashes before i get to even a gram…. its realistic tho! the video attached is actually sped up footage of about 3 minutes of simulation…… i need to do optimization
Devlog #2! added gravitational fields and made a thing where you can make a large disturbance in particles (like if you made a loud sound)! now i need to make more customisation!😀
Devlog #3! I didn’t have that much time today, as I have to go to a birthday, but I added some more sliders to make different gravitational forces, more disturbance, and I wrote a little tutorial inside the page. I think I need to outline the canvas as its very hard to see. I’ll also try and get some styling done! Also I took a 9 minute simulation and sped it up into 30 secondsish and attached it here :)
Devlog #4!! I did a few things: 1: Delete all particles button 2: Made the particles bigger dependent on their mass 3: Canvas size slider (for lower end devices like mine) 4: called the variables the most random names so anyone looking at the code will get confused lol
Devlog #5! I rewrote the readme yay
Ships:
I have made a particle simulation that works in your browser! It was challenging to make the gravity and the sim itself, I am proud of the way the circles move, and you should know that it not very realistic before testing it, but it is very fun!...
|
1793242384.8777015
|
1793328784.8777015
|
|
17138
|
CALCULATOR by @althaf | Stardance
|
althaf
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T07:20:18Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "you can do multiplication and division on it", "repo": "https://github.com/muhammedalthaf20250-ui/calculator", "demo": "https://muhammedalthaf20250-ui.github.io/calculator/intex.html"}]...
|
[{"post_id": 15529, "ts": "202 [{"post_id": 15529, "ts": "2026-06-25T07:07:40Z", "hours": 3.7875, "text": "it is a calculator"}]...
|
Title: CALCULATOR by @althaf | Stardance
Devlogs: Title: CALCULATOR by @althaf | Stardance
Devlogs:
it is a calculator
Ships:
you can do multiplication and division on it...
|
1793123287.178773
|
1793209687.178773
|
|
17175
|
Custom WebOS by @yassinbs | Stardance
|
yassinbs
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T19:13:32Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It is a simple webos, I have added features like clicking on tabs to put them on top of other tabs, and the rest is pretty self explanatory. I explained everything briefly in my Devlogs.", "repo": "https://github.com/guccmanegu-eng/AppleWebOS", "demo": "https://guccmanegu-eng.github.io/AppleWebOS/"}]...
|
[{"post_id": 9248, "ts": "2026 [{"post_id": 9248, "ts": "2026-06-15T15:08:10Z", "hours": 0.5067, "text": "Devlog 5 - Creating an Advanced App: Projects Today, I developed my second desktop application for HackOS: the Projects app. One enhancement I integrated is the ability to click windows to bring them to the forefront. The app aims to showcase the projects I’ve created and provide users with an alternative way to navigate my operating system. What I Added I began by designing a new desktop icon labeled “Projects,” featuring a book icon positioned next to the Journal app. Next, I set up a new window for the application that includes: A draggable header A close button A content area for displaying project details I created a JavaScript array named projectsData to store information about my projects, with each project containing: A title A description The loadProjects() function I wrote iterates through the array and dynamically generates project cards within the app. Current projects include: AppleWebOS Journal App A placeholder for future projects Challenges I Encountered This project proved significantly more challenging than developing the Journal app. I spent considerable time troubleshooting why the Projects window wouldn’t open. The primary issue stemmed from an incorrect HTML structure; I had created the window’s header and content but neglected to establish the projectsWindow container that ties everything together. As a result, JavaScript couldn’t locate: var projectsWindow = document . querySelector ( \" #projectsWindow \" ); This oversight hindered the window-opening functionality. Additionally, I mistakenly placed the projects-content div within the header instead of below it. I also mixed up several IDs, including: projects projectsWindow projectsIcon This experience reinforced the importance of maintaining consistent naming conventions as projects expand. What I Learned I discovered that organization is becoming increasingly crucial. In a growing project like HackOS, minor errors in IDs or HTML structure can disrupt entire features, such as the draggable functionality. I also learned how to dynamically generate content using JavaScript arrays rather than hardcoding everything into the HTML. Current HackOS Features HackOS now boasts several features: A top bar displaying a live clock A Welcome window A Journal application A Projects application Draggable windows Open and close functionality Dynamic content loading Next Potential Steps I aim to continue enhancing HackOS by adding more applications and refining the visual design. Some ideas on my list include: Improved window animations Additional projects within the Projects app A settings application Enhanced styling More interactive desktop features HackOS is progressively evolving into a functioning operating system rather than just a simple webpage."}, {"post_id": 9229, "ts": "2026-06-15T14:34:14Z", "hours": 0.6919, "text": "Devlog 4 - Creating My First App: Journal Today, I launched my first application for my personal operating system: the Journal app. I added an app icon to the desktop, allowing users to open the Journal window only when its icon is clicked, rather than having every window open automatically upon loading the website. I incorporated several systems I had previously built, including draggable windows, open and close functionality, and reusable styling. App Structure Inside the Journal app, I created a sidebar and a content area. The sidebar lists various journal entries, while the main section displays the contents of the selected entry. To keep the code organized and avoid hardcoding, I stored the journal entries in a JavaScript array of objects. Each object includes: A title A date The HTML content for that entry I developed JavaScript functions to: Dynamically generate the sidebar entries Show the selected journal content Open and close the Journal window Keep the Journal hidden when the page initially loads Challenges Faced During development, I encountered several bugs. At one point, the Journal window appeared inside the top bar due to incorrect HTML structure. I also accidentally created duplicate IDs and nested windows, which led to both windows moving simultaneously when dragged. After resolving these issues, the operating system became much more organized and interactive. Current Features The following features have been implemented: Welcome window Desktop top bar with a live clock Draggable windows Open and close buttons Desktop application icons Journal app Dynamically generated journal entries using JavaScript This project is gradually transforming into a genuine operating system rather than just a simple webpage. The codebase is also becoming more modular, facilitating future expansions for additional applications."}, {"post_id": 8894, "ts": "2026-06-14T20:09:46Z", "hours": 0.5447, "text": "Devlog 3 – Enhancing Interactivity in HackOS Today, I significantly improved HackOS by adding interactivity to the welcome window, making it feel more like a real operating system. Organization and Structure I began by organizing my project files. I moved my JavaScript code to a separate script.js file and my styles to style.css . This separation made the code cleaner and easier to navigate. Making the Welcome Window Draggable Next, I implemented drag functionality for the welcome window. Using JavaScript, I tracked the mouse position to update the window’s location as users drag it across the screen. I added a header area that serves as a handle, allowing the window to be moved only when dragging from the top section. Adding a Close Button I also introduced a close button in the top-right corner of the window. When clicked, this button hides the window by altering its display property. To reopen the window, I used the OS name in the top bar as a toggle. Clicking it makes the window visible again. Live Clock Integration Continuing from the previous project, I kept the live clock, which updates every second using JavaScript and remains visible in the top bar. Reusable CSS Classes To facilitate future expansions, I created reusable CSS classes for windows, headers, and buttons. This approach enables me to add more windows later without having to rewrite styles. Key Learnings Through this project, I gained insights into: Separating HTML, CSS, and JavaScript into distinct files Organizing elements using IDs and classes Implementing draggable HTML elements Creating reusable CSS classes Utilizing functions in JavaScript Adding click event listeners Dynamically opening and closing windows Positioning elements within a window header My favorite aspect was enabling the draggable functionality, which made the interface resemble a real desktop environment. I also enjoyed adding the close button, enhancing the window’s behavior to mirror traditional applications. Goals for Next Session Create a fictional open button resembling a taskbar, instead of using the title of the page. Follow the development guide to streamline progress."}, {"post_id": 8638, "ts": "2026-06-14T11:15:19Z", "hours": 0.6606, "text": "Devlog 1 – Building My Welcome Screen Today I created the welcome screen for my Personal OS using HTML and CSS. I started by creating a basic HTML page with a heading and a paragraph. After that, I added an image that represents me and included a link to one of my favorite websites. This helped make the page feel more personal. Next, I experimented with different styles. I changed the background color, adjusted the text colors, and selected a font that matched the look I wanted. I also resized my image and rounded its corners using the border-radius property. One challenge I encountered was making the image look the correct size without becoming stretched. I solved this by setting both the width and height and using styling to keep the image looking natural. Through this project, I learned about: HTML elements such as h1 , p , img , and a Adding images and links to a webpage Using inline CSS styles Changing colors, fonts, spacing, and image appearance Using margin and padding to improve layout My favorite part was customizing the page and making it feel like my own . In the future, I want to add windows, a desktop background, and interactive features using JavaScript. Devlog 2 – Creating My Desktop and Top Bar Today I expanded my Personal OS by creating a desktop layout and adding a top bar with a live clock. I started by placing all of my welcome screen content inside a div , which acts as a window. I added a border, rounded corners, padding, and a background color so the window stood out from the desktop background. Next, I added a desktop wallpaper by setting a background image on the body of the page. I used background-size: cover so the image would fill the screen properly. After creating the desktop, I built a top bar. I used a flexbox layout to place the OS name on one side and the time on the other. I also added a semi-transparent background to give it a more modern operating system appearance. Finally, I learned some basic JavaScript. I created a function that gets the current date and time using new Date().toLocaleString() . Then I displayed the time inside the top bar and used setInterval() to update it every second so the clock stays accurate. Through this project, I learned about: Using div elements as windows Positioning elements with position: absolute Centering content with transform: translate() Creating a desktop wallpaper with CSS Using Flexbox for layout Creating a top bar Writing basic JavaScript functions Updating webpage content with querySelector() and innerHTML Using setInterval() to run code repeatedly My favorite part was adding the live clock because it made the website feel more like a real operating system. Next, I would like to add more windows, applications, and interactive features to make the OS more useful. (I put both my devlogs in here because I forgot to post my first devlog)"}]...
|
Title: Custom WebOS by @yassinbs | Stardance
Devl Title: Custom WebOS by @yassinbs | Stardance
Devlogs:
Devlog 1 – Building My Welcome Screen Today I created the welcome screen for my Personal OS using HTML and CSS. I started by creating a basic HTML page with a heading and a paragraph. After that, I added an image that represents me and included a link to one of my favorite websites. This helped make the page feel more personal. Next, I experimented with different styles. I changed the background color, adjusted the text colors, and selected a font that matched the look I wanted. I also resized my image and rounded its corners using the border-radius property. One challenge I encountered was making the image look the correct size without becoming stretched. I solved this by setting both the width and height and using styling to keep the image looking natural. Through this project, I learned about: HTML elements such as h1 , p , img , and a Adding images and links to a webpage Using inline CSS styles Changing colors, fonts, spacing, and image appearance Using margin and padding to improve layout My favorite part was customizing the page and making it feel like my own . In the future, I want to add windows, a desktop background, and interactive features using JavaScript. Devlog 2 – Creating My Desktop and Top Bar Today I expanded my Personal OS by creating a desktop layout and adding a top bar with a live clock. I started by placing all of my welcome screen content inside a div , which acts as a window. I added a border, rounded corners, padding, and a background color so the window stood out from the desktop background. Next, I added a desktop wallpaper by setting a background image on the body of the page. I used background-size: cover so the image would fill the screen properly. After creating the desktop, I built a top bar. I used a flexbox layout to place the OS name on one side and the time on the other. I also added a semi-transparent background to give it a more modern operating system appearance. Finally, I learned some basic JavaScript. I created a function that gets the current date and time using new Date().toLocaleString() . Then I displayed the time inside the top bar and used setInterval() to update it every second so the clock stays accurate. Through this project, I learned about: Using div elements as windows Positioning elements with position: absolute Centering content with transform: translate() Creating a desktop wallpaper with CSS Using Flexbox for layout Creating a top bar Writing basic JavaScript functions Updating webpage content with querySelector() and innerHTML Using setInterval() to run code repeatedly My favorite part was adding the live clock because it made the website feel more like a real operating system. Next, I would like to add more windows, applications, and interactive features to make the OS more useful. (I put both my devlogs in here because I forgot to post my first devlog)
Devlog 3 – Enhancing Interactivity in HackOS Today, I significantly improved HackOS by adding interactivity to the welcome window, making it feel more like a real operating system. Organization and Structure I began by organizing my project files. I moved my JavaScript code to a separate script.js file and my styles to style.css . This separation made the code cleaner and easier to navigate. Making the Welcome Window Draggable Next, I implemented drag functionality for the welcome window. Using JavaScript, I tracked the mouse position to update the window’s location as users drag it across the screen. I added a header area that serves as a handle, allowing the window to be moved only when dragging from the top section. Adding a Close Button I also introduced a close button in the top-right corner of the window. When clicked, this button hides the window by altering its display property. To reopen the window, I used the OS name in the top bar as a toggle. Clicking it makes the window visible again. Live Clock Integration Continuing from the previous project, I kept the live clock, which updates every second using JavaScript and remains visible in the top bar. Reusable CSS Classes To facilitate future expansions, I created reusable CSS classes for windows, headers, and buttons. This approach enables me to add more windows later without having to rewrite styles. Key Learnings Through this project, I gained insights into: Separating HTML, CSS, and JavaScript into distinct files Organizing elements using IDs and classes Implementing draggable HTML elements Creating reusable CSS classes Utilizing functions in JavaScript Adding click event listeners Dynamically opening and closing windows Positioning elements within a window header My favorite aspect was enabling the draggable functionality, which made the interface resemble a real desktop environment. I also enjoyed adding the close button, enhancing the window’s behavior to mirror traditional applications. Goals for Next Session Create a fictional open button resembling a taskbar, instead of using the title of the page. Follow the development guide to streamline progress.
Devlog 4 - Creating My First App: Journal Today, I launched my first application for my personal operating system: the Journal app. I added an app icon to the desktop, allowing users to open the Journal window only when its icon is clicked, rather than having every window open automatically upon loading the website. I incorporated several systems I had previously built, including draggable windows, open and close functionality, and reusable styling. App Structure Inside the Journal app, I created a sidebar and a content area. The sidebar lists various journal entries, while the main section displays the contents of the selected entry. To keep the code organized and avoid hardcoding, I stored the journal entries in a JavaScript array of objects. Each object includes: A title A date The HTML content for that entry I developed JavaScript functions to: Dynamically generate the sidebar entries Show the selected journal content Open and close the Journal window Keep the Journal hidden when the page initially loads Challenges Faced During development, I encountered several bugs. At one point, the Journal window appeared inside the top bar due to incorrect HTML structure. I also accidentally created duplicate IDs and nested windows, which led to both windows moving simultaneously when dragged. After resolving these issues, the operating system became much more organized and interactive. Current Features The following features have been implemented: Welcome window Desktop top bar with a live clock Draggable windows Open and close buttons Desktop application icons Journal app Dynamically generated journal entries using JavaScript This project is gradually transforming into a genuine operating system rather than just a simple webpage. The codebase is also becoming more modular, facilitating future expansions for additional applications.
Devlog 5 - Creating an Advanced App: Projects Today, I developed my second desktop application for HackOS: the Projects app. One enhancement I integrated is the ability to click windows to bring them to the forefront. The app aims to showcase the projects I’ve created and provide users with an alternative way to navigate my operating system. What I Added I began by designing a new desktop icon labeled “Projects,” featuring a book icon positioned next to the Journal app. Next, I set up a new window for the application that includes: A draggable header A close button A content area for displaying project details I created a JavaScript array named projectsData to store information about my projects, with each project containing: A title A description The loadProjects() function I wrote iterates through the array and dynamically generates project cards within the app. Current projects include: AppleWebOS Journal App A placeholder for future projects Challenges I Encountered This project proved significantly more challenging than developing the Journal app. I spent considerable time troubleshooting why the Projects window wouldn’t open. The primary issue stemmed from an incorrect HTML structure; I had created the window’s header and content but neglected to establish the projectsWindow container that ties everything together. As a result, JavaScript couldn’t locate: var projectsWindow = document . querySelector ( " #projectsWindow " ); This oversight hindered the window-opening functionality. Additionally, I mistakenly placed the projects-content div within the header instead of below it. I also mixed up several IDs, including: projects projectsWindow projectsIcon This experience reinforced the importance of maintaining consistent naming conventions as projects expand. What I Learned I discovered that organization is becoming increasingly crucial. In a growing project like HackOS, minor errors in IDs or HTML structure can disrupt entire features, such as the draggable functionality. I also learned how to dynamically generate content using JavaScript arrays rather than hardcoding everything into the HTML. Current HackOS Features HackOS now boasts several features: A top bar displaying a live clock A Welcome window A Journal application A Projects application Draggable windows Open and close functionality Dynamic content loading Next Potential Steps I aim to continue enhancing HackOS by adding more applications and refining the visual design. Some ideas on my list include: Improved window animations Additional projects within the Projects app A settings application Enhanced styling More interactive desktop features HackOS is progressively evolving into a functioning operating system rather than just a simple webpage.
Ships:
It is a simple webos, I have added features like clicking on tabs to put them on top of other tabs, and the rest is pretty self explanatory. I explained everything briefly in my Devlogs....
|
1793134190.6572826
|
1793220590.6572826
|
|
17181
|
Redo by @VibeSlayer | Stardance
|
VibeSlayer
|
1
|
6.68
|
58
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T10:08:58Z", "hours": 5.0, "multiplier": 12.02, "payout": 58, "blessing": "neutral", "text": "Hi everyone, so what exactly is Redo ? Imagine you are a programmer, and your everyday workflow after making changes is something like git add . , git commit -m \"fixed bugs\" , and git push . Typing all those commands again and again gets boring, right? That’s why Redo is here. Redo redefines terminal workflows by letting you save repeated command chains and run them sequentially in seconds. It is not just for Git workflows either. You can use it for frontend projects with commands like npm install , npm run dev , or npm run build , Python projects with commands like pip install -r requirements.txt and python main.py , or any other repeated setup, build, deploy, or cleanup workflow. Redo was originally an idea from my notebook, and I really wanted to build it for a long time. Stardance gave me the motivation to finally turn that idea into a real project. The biggest challenge I faced was making the UI module, because I am not very creative with interfaces and I often mess up while designing UIs. Still, I am proud of myself because seeing the final CLI look clean and usable feels really good. Making the storage module was not easy either, but completing it taught me a lot. Redo is an open-source project built by a programmer, for programmers. I hope voters like my project because it is a unique quality-of-life tool that solves a real problem in a simple way. Thanks y’all for creating such a wonderful platform that helped me turn an idea from my notebook into a real project. I really appreciate it. Thanks!", "repo": "https://github.com/VibeSlayer-code/Redo", "demo": "https://pypi.org/project/redo-cli/"}]...
|
[{"post_id": 17961, "ts": "202 [{"post_id": 17961, "ts": "2026-06-28T22:27:59Z", "hours": 1.6831, "text": "REDO RE-SHIP UPD V1.1.8 Hi guys, I have pushed this update to Redo because it was rejected because of no major 3 QoL improvement. I have worked hard and added these 3 new features- Project-local workflows Redo lets each project store reusable workflows in .redo/workflows.json , so setup/build/test/dev commands can be shared with contributors. Automatic workflow generation redo setup scans the project type and generates common workflows like install , dev , build , test , clean , and ship . Preflight checks before execution Redo checks for missing tools, missing files, missing .env , missing dependencies, dirty Git state, and busy ports before running workflows. The update has been pushed to PyPI and GitHub. Redo can be simply updated using redo update . Good luck!"}, {"post_id": 9146, "ts": "2026-06-15T09:58:12Z", "hours": 1.3356, "text": "Devlog #3 Hi developers, This will be my last devlog because Redo is finally complete! It is fully ready to be deployed, and all the modules have been completed. I have also attached a video so y’all can get a quick glimpse of Redo in action. Along with that, I have published it on PyPI, so you can install it directly using: pip install redo-cli The process of building this project was pretty smooth, and I did not face any major problems since I already have experience with Python. The only challenging part was designing a clean and less clumsy CLI using Rich, but I think I managed to achieve that pretty well. Anyways, I’m shipping the project today!"}, {"post_id": 8696, "ts": "2026-06-14T13:27:15Z", "hours": 2.0497, "text": "Devlog #2 Hi developers! I’ve finally built the base of Redo. I completed the storage module and the UI module, and Redo has finally started working properly. The biggest challenge I faced was configuring Rich to make the terminal UI look clean and beautiful, but I’m happy with how it’s coming together. My roadmap for tomorrow is to complete the placeholder module and fix the remaining bugs. Till then, bye!"}, {"post_id": 7359, "ts": "2026-06-12T08:22:23Z", "hours": 1.4117, "text": "Devlog #1 Started building Redo’s storage module today. Redo is a simple CLI tool that lets you save repeated terminal workflows and run them again with one command — for example, saving a Vite setup flow once and later running it with redo vite . The main progress today was getting the basic storage system working. I finished initialize_file() , load_workflows() , and save_workflows() , which handle creating the workflow JSON file, reading saved workflows, and writing updates back to storage. The tricky part was understanding how file paths, JSON loading, and return status messages should work together without making the code messy. I also learned why an empty JSON file breaks loading, so the storage file now starts with {} instead of being created blank. I also learned new libraries like pathlib There’s still a lot left in the storage module, especially add_workflow() , get_workflow() , delete_workflow() , and run-count tracking, but the foundation is finally in place. Next goal: make Redo actually save a new workflow from user input. No ss today :("}]...
|
Title: Redo by @VibeSlayer | Stardance
Devlogs:
D Title: Redo by @VibeSlayer | Stardance
Devlogs:
Devlog #1 Started building Redo’s storage module today. Redo is a simple CLI tool that lets you save repeated terminal workflows and run them again with one command — for example, saving a Vite setup flow once and later running it with redo vite . The main progress today was getting the basic storage system working. I finished initialize_file() , load_workflows() , and save_workflows() , which handle creating the workflow JSON file, reading saved workflows, and writing updates back to storage. The tricky part was understanding how file paths, JSON loading, and return status messages should work together without making the code messy. I also learned why an empty JSON file breaks loading, so the storage file now starts with {} instead of being created blank. I also learned new libraries like pathlib There’s still a lot left in the storage module, especially add_workflow() , get_workflow() , delete_workflow() , and run-count tracking, but the foundation is finally in place. Next goal: make Redo actually save a new workflow from user input. No ss today :(
Devlog #2 Hi developers! I’ve finally built the base of Redo. I completed the storage module and the UI module, and Redo has finally started working properly. The biggest challenge I faced was configuring Rich to make the terminal UI look clean and beautiful, but I’m happy with how it’s coming together. My roadmap for tomorrow is to complete the placeholder module and fix the remaining bugs. Till then, bye!
Devlog #3 Hi developers, This will be my last devlog because Redo is finally complete! It is fully ready to be deployed, and all the modules have been completed. I have also attached a video so y’all can get a quick glimpse of Redo in action. Along with that, I have published it on PyPI, so you can install it directly using: pip install redo-cli The process of building this project was pretty smooth, and I did not face any major problems since I already have experience with Python. The only challenging part was designing a clean and less clumsy CLI using Rich, but I think I managed to achieve that pretty well. Anyways, I’m shipping the project today!
REDO RE-SHIP UPD V1.1.8 Hi guys, I have pushed this update to Redo because it was rejected because of no major 3 QoL improvement. I have worked hard and added these 3 new features- Project-local workflows Redo lets each project store reusable workflows in .redo/workflows.json , so setup/build/test/dev commands can be shared with contributors. Automatic workflow generation redo setup scans the project type and generates common workflows like install , dev , build , test , clean , and ship . Preflight checks before execution Redo checks for missing tools, missing files, missing .env , missing dependencies, dirty Git state, and busy ports before running workflows. The update has been pushed to PyPI and GitHub. Redo can be simply updated using redo update . Good luck!
Ships:
Hi everyone, so what exactly is Redo ? Imagine you are a programmer, and your everyday workflow after making changes is something like git add . , git commit -m "fixed bugs" , and git push . Typing all those commands again and again gets boring, right? That’s why Redo is here. Redo redefines terminal workflows by letting you save repeated command chains and run them sequentially in seconds. It is not just for Git workflows either. You can use it for frontend projects with commands like npm install , npm run dev , or npm run build , Python projects with commands like pip install -r requirements.txt and python main.py , or any other repeated setup, build, deploy, or cleanup workflow. Redo was originally an idea from my notebook, and I really wanted to build it for a long time. Stardance gave me the motivation to finally turn that idea into a real project. The biggest challenge I faced was making the UI module, because I am not very creative with interfaces and I often mess up while designing UIs. Still, I am proud of myself because seeing the final CLI look clean and usable feels really good. Making the storage module was not easy either, but completing it taught me a lot. Redo is an open-source project built by a programmer, for programmers. I hope voters like my project because it is a unique quality-of-life tool that solves a real problem in a simple way. Thanks y’all for creating such a wonderful platform that helped me turn an idea from my notebook into a real project. I really appreciate it. Thanks!...
|
1793127272.1858032
|
1793213672.1858032
|
|
17184
|
Flag Matcher by @yellowissuchanoverratedcolor | St Flag Matcher by @yellowissuchanoverratedcolor | Stardance...
|
yellowissuchanoverratedcolor
|
1
|
13.25
|
149
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T18:28:03Z", "hours": 11.0, "multiplier": 13.57, "payout": 149, "blessing": "neutral", "text": "I am kinda obsessed with country flags so I created a fun browser game about them. The mission is to recreate colors of country flags as close as possible using HSL sliders. I added both a daily challenge that is the same for everyone and a random challenge for when the daily challenge isn’t enough :) Features 🎨 Match hidden flag colors using Hue, Saturation and Lightness sliders 🌍 Country flags from all around the world 🏆 A challenging scoring system 📅 Daily challenges 🎲 Random challenges for when the daily challenge isn’t enough 🔗 Shareable links so you can easily challenge your friends 🌐 Runs entirely in your browser, no need to download anything It would mean the world to me if you give it a try <3 https://floopus44.github.io/Flag-Matcher/ (UI is WIP)", "repo": "https://github.com/floopus44/Flag-Matcher", "demo": "https://floopus44.github.io/Flag-Matcher/"}]...
|
[{"post_id": 21067, "ts": "202 [{"post_id": 21067, "ts": "2026-07-02T20:55:27Z", "hours": 2.2497, "text": "Flag-Matcher - a fun flag game that runs in your browser - Devlog 5 Thank you so much for all the feedback, I really appreciate it!! <3 Today I improved the UI of the landing page a little bit. Should feel way more straightforward now!! (I am planning to add pics to the front page in the future but I kinda suck at designing stuff) I then looked through the feedback I got and one of the most common complaints was that the design of the timer was kinda annoying so I replaced it with a circular SVG timer. When time runs out it also changes the color and starts to blink as a small little visual indicator. It was kinda my first time actually doing stuff with SVG instead of just downloading them lol and it was kinda exciting figuring all of it out. For the next devlog, I am planning to add a few sound indicators to the timer. Other suggestions I got, that I definitely want to implement: Custom timer options (also no timer) Easy mode Mobile version (working on it!!) (PS: the first pic shows the new landing page, and the other ones show the new timer design)"}, {"post_id": 17492, "ts": "2026-06-28T09:21:59Z", "hours": 4.3247, "text": "Flag-Matcher - a fun flag game that runs in your browser - Devlog 4 (How I spent 2 hours trying to fix a bug that did not exist) I thought I had discovered a bug in my browser game about flags. The game uses a seed system to generate random challenges as well as daily challenges. So yesterday, I tried taking the daily challenge and opened the website right around midnight. But, to my surprise, the challenge was the same one as the day before.. After panicking quite a bit, I tried to find the bug. I think I spent like two hours in total trying to find it. But, just as I was about to rewrite the code, it hit me: Maybe I opened the site right before 0:00 (like probably two seconds before). My PC’s clock is a bit out of sync so that was most likely the cause of it all. But fixing imaginary bugs wasn’t the only thing I did that day as I then changed up the scoring system a little bit: Previously, I just simply took the difference of the target and the guess HSL values and put them in a non-linear formula. This kinda sucked because HSL works like this: A hue of 0 is the color red, BUT a hue of 359 is also red (kinda like a circle). So, as you can probably guess, that lead to some weird scores in the past. To fix it, I now convert the HSL to RGB values, take the difference of those and then calculate the scores. I added two parameters to tweak the algorithm: punishFactor and curveFactor. The higher the punishFactor, the harder the game will be and if you lower the curveFactor, it will be more forgiving for close guesses. Those modifications should make the scoring system feel way better now. Planned additions for the next day: Mobile version Finally fix some of those buggy flags"}, {"post_id": 15658, "ts": "2026-06-25T13:49:37Z", "hours": 0.8686, "text": "Flag-Matcher - a fun flag game that runs in your browser - Devlog 3 Ugghhhhh I hate writing readmes so much but I finally wrote one for my project today :)) I then spent like 30 minutes trying to improve the scoring system but all my ideas kinda sucked so I gave up. (Please contact me if you have any idea on how to implement a better one!!) And that was kinda it for the day.. Oh and also I removed a lot of buggy flags to it should be playable now: https://floopus44.github.io/Flag-Matcher/"}, {"post_id": 14964, "ts": "2026-06-24T09:24:46Z", "hours": 1.6019, "text": "I finally implemented the scoring system (needs some improvements but still) and added a round-end and game-end screen showing the user some stats about how they performed. I had to temporarily remove some flags as they were kinda buggy but they will be added back in the future :)"}, {"post_id": 14285, "ts": "2026-06-23T10:39:39Z", "hours": 4.2842, "text": "Heyy, I am kinda obsessed with flags so that is why I’m working on a fun little browser game about them. Here is how it works: You will be presented a random country flag, but one color is missing. Your mission is to then recreate the missing color within a set time by using HSL sliders. Each game consists of 5 rounds and you will be rewarded points depending on the accuracy of your recreation. I spent the first two days setting up some boilerplate code and preparing the flag SVGs. I then implemented a seed system which allows users to challenge their friends. This system can also be used to generate daily challenges. Then I spent some time trying to fix up some flags because some of the SVGs were kinda buggy but I still did not find a real solution. BUT the game is kinda playable already. Next steps: implement a scoring system fix up the buggy flags make it FUN 🌟 to use maybe add none-country flags (?)"}]...
|
Title: Flag Matcher by @yellowissuchanoverratedcol Title: Flag Matcher by @yellowissuchanoverratedcolor | Stardance
Devlogs:
Heyy, I am kinda obsessed with flags so that is why I’m working on a fun little browser game about them. Here is how it works: You will be presented a random country flag, but one color is missing. Your mission is to then recreate the missing color within a set time by using HSL sliders. Each game consists of 5 rounds and you will be rewarded points depending on the accuracy of your recreation. I spent the first two days setting up some boilerplate code and preparing the flag SVGs. I then implemented a seed system which allows users to challenge their friends. This system can also be used to generate daily challenges. Then I spent some time trying to fix up some flags because some of the SVGs were kinda buggy but I still did not find a real solution. BUT the game is kinda playable already. Next steps: implement a scoring system fix up the buggy flags make it FUN 🌟 to use maybe add none-country flags (?)
I finally implemented the scoring system (needs some improvements but still) and added a round-end and game-end screen showing the user some stats about how they performed. I had to temporarily remove some flags as they were kinda buggy but they will be added back in the future :)
Flag-Matcher - a fun flag game that runs in your browser - Devlog 3 Ugghhhhh I hate writing readmes so much but I finally wrote one for my project today :)) I then spent like 30 minutes trying to improve the scoring system but all my ideas kinda sucked so I gave up. (Please contact me if you have any idea on how to implement a better one!!) And that was kinda it for the day.. Oh and also I removed a lot of buggy flags to it should be playable now: https://floopus44.github.io/Flag-Matcher/
Flag-Matcher - a fun flag game that runs in your browser - Devlog 4 (How I spent 2 hours trying to fix a bug that did not exist) I thought I had discovered a bug in my browser game about flags. The game uses a seed system to generate random challenges as well as daily challenges. So yesterday, I tried taking the daily challenge and opened the website right around midnight. But, to my surprise, the challenge was the same one as the day before.. After panicking quite a bit, I tried to find the bug. I think I spent like two hours in total trying to find it. But, just as I was about to rewrite the code, it hit me: Maybe I opened the site right before 0:00 (like probably two seconds before). My PC’s clock is a bit out of sync so that was most likely the cause of it all. But fixing imaginary bugs wasn’t the only thing I did that day as I then changed up the scoring system a little bit: Previously, I just simply took the difference of the target and the guess HSL values and put them in a non-linear formula. This kinda sucked because HSL works like this: A hue of 0 is the color red, BUT a hue of 359 is also red (kinda like a circle). So, as you can probably guess, that lead to some weird scores in the past. To fix it, I now convert the HSL to RGB values, take the difference of those and then calculate the scores. I added two parameters to tweak the algorithm: punishFactor and curveFactor. The higher the punishFactor, the harder the game will be and if you lower the curveFactor, it will be more forgiving for close guesses. Those modifications should make the scoring system feel way better now. Planned additions for the next day: Mobile version Finally fix some of those buggy flags
Flag-Matcher - a fun flag game that runs in your browser - Devlog 5 Thank you so much for all the feedback, I really appreciate it!! <3 Today I improved the UI of the landing page a little bit. Should feel way more straightforward now!! (I am planning to add pics to the front page in the future but I kinda suck at designing stuff) I then looked through the feedback I got and one of the most common complaints was that the design of the timer was kinda annoying so I replaced it with a circular SVG timer. When time runs out it also changes the color and starts to blink as a small little visual indicator. It was kinda my first time actually doing stuff with SVG instead of just downloading them lol and it was kinda exciting figuring all of it out. For the next devlog, I am planning to add a few sound indicators to the timer. Other suggestions I got, that I definitely want to implement: Custom timer options (also no timer) Easy mode Mobile version (working on it!!) (PS: the first pic shows the new landing page, and the other ones show the new timer design)
Ships:
I am kinda obsessed with country flags so I created a fun browser game about them. The mission is to recreate colors of country flags as close as possible using HSL sliders. I added both a daily challenge that is the same for everyone and a random challenge for when the daily challenge isn’t enough :) Features 🎨 Match hidden flag colors using Hue, Saturation and Lightness sliders 🌍 Country flags from all around the world 🏆 A challenging scoring system 📅 Daily challenges 🎲 Random challenges for when the daily challenge isn’t enough 🔗 Shareable links so you can easily challenge your friends 🌐 Runs entirely in your browser, no need to download anything It would mean the world to me if you give it a try <3 https://floopus44.github.io/Flag-Matcher/ (UI is WIP)...
|
1793127140.5534618
|
1793213540.5534618
|
|
17189
|
Yixboost Games V2 by @jonasvanleeuwen19 | Stardanc Yixboost Games V2 by @jonasvanleeuwen19 | Stardance...
|
jonasvanleeuwen19
|
1
|
13.91
|
97
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T21:10:30Z", "hours": 11.0, "multiplier": 8.96, "payout": 97, "blessing": "neutral", "text": "This is Yixboost Games V2, the free and open-source online browser games platform. The goal of this project is to make a completely better version of the closed-source V1 version of Yixboost Games that feels and works the same as V1, but better, with plugin support, better database connections, and good caching. The way of logging in is made much better and safer with OpenID.", "repo": "https://git.tuxworld.nl/yixboost/games-v2", "demo": "https://games.tuxworld.nl"}]...
|
[{"post_id": 65339, "ts": "202 [{"post_id": 65339, "ts": "2026-09-10T12:46:08Z", "hours": 2.9114, "text": "Updates I forgot to log"}, {"post_id": 24316, "ts": "2026-07-07T20:26:58Z", "hours": 5.845, "text": "Today, there’s just too many updates to put them all here :D I cleaned up the whole structure and updated all the pages with the new design. I also added extra features and pages. Base UI updates The good old Yixboost Games glassy theme is back from V1 New modern navbar with cleaner search bar and better links Nicer and bigger glass footer with more content, including links and the logo Fade animations on tile hover Cleaned up not used CSS Image assets updated with GIMP to make them look nicer temp “This website is WIP” alert added Added “N/I” text to not implemented features Startpage updates Nice large banner at the top 4 games of each category Clickable links to scroll to each category Search plugin updated to v1.0.1 (wow, big update) Cleaner UI with bootstrap and new theming Pagination on searches Game Loader plugin updated to v1.0.1 (really big update agian, lol) Working page to play games Game loader and embed pages for iframes Game action hooks Related games are working now Core updates Plugins can now have required python libraries Better database integration for plugins Plugins can update content of other plugins with better hooks support Added new issues plugin New plugin with a bug report form on /report with auto form fill in and game action button for game report, stores issues in the database. Profile page updated Options and information menu Better profile picture with decor support for later"}, {"post_id": 12528, "ts": "2026-06-20T13:36:45Z", "hours": 2.9953, "text": "Added better database system, plugin loader, default theme, built in plugins, games_loader and search, core systems and better structure"}, {"post_id": 7433, "ts": "2026-06-12T11:41:51Z", "hours": 2.0392, "text": "I made the starting structure for FastAPI in main.py Added: Card structure on homepage, Navbar and footer parts, 404 page, example profile page on / profile with testing data."}]...
|
Title: Yixboost Games V2 by @jonasvanleeuwen19 | S Title: Yixboost Games V2 by @jonasvanleeuwen19 | Stardance
Devlogs:
I made the starting structure for FastAPI in main.py Added: Card structure on homepage, Navbar and footer parts, 404 page, example profile page on / profile with testing data.
Added better database system, plugin loader, default theme, built in plugins, games_loader and search, core systems and better structure
Today, there’s just too many updates to put them all here :D I cleaned up the whole structure and updated all the pages with the new design. I also added extra features and pages. Base UI updates The good old Yixboost Games glassy theme is back from V1 New modern navbar with cleaner search bar and better links Nicer and bigger glass footer with more content, including links and the logo Fade animations on tile hover Cleaned up not used CSS Image assets updated with GIMP to make them look nicer temp “This website is WIP” alert added Added “N/I” text to not implemented features Startpage updates Nice large banner at the top 4 games of each category Clickable links to scroll to each category Search plugin updated to v1.0.1 (wow, big update) Cleaner UI with bootstrap and new theming Pagination on searches Game Loader plugin updated to v1.0.1 (really big update agian, lol) Working page to play games Game loader and embed pages for iframes Game action hooks Related games are working now Core updates Plugins can now have required python libraries Better database integration for plugins Plugins can update content of other plugins with better hooks support Added new issues plugin New plugin with a bug report form on /report with auto form fill in and game action button for game report, stores issues in the database. Profile page updated Options and information menu Better profile picture with decor support for later
Updates I forgot to log
Ships:
This is Yixboost Games V2, the free and open-source online browser games platform. The goal of this project is to make a completely better version of the closed-source V1 version of Yixboost Games that feels and works the same as V1, but better, with plugin support, better database connections, and good caching. The way of logging in is made much better and safer with OpenID....
|
1793249620.2447057
|
1793336020.2447057
|
|
17203
|
Site but Retro by @Josh | Stardance
|
Josh
|
1
|
6.0
|
42
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T04:30:06Z", "hours": 6.0, "multiplier": 8.07, "payout": 42, "blessing": "neutral", "text": "Ive built the start of the site from scratch!", "repo": "https://gitlab.com/castawhat/sitebutretro", "demo": "https://slitro.studio"}]...
|
[{"post_id": 26383, "ts": "202 [{"post_id": 26383, "ts": "2026-07-11T04:29:33Z", "hours": 2.5508, "text": "Its (mostly done!) Ive added a new blog post some cool new features i fixed the guestbook I added the my stuff page"}, {"post_id": 8436, "ts": "2026-06-14T01:12:35Z", "hours": 2.9911, "text": "Started work on the website! webring page works contact page works 88by31 page works Next I think I’m going to add the stats page :D"}]...
|
Title: Site but Retro by @Josh | Stardance
Devlog Title: Site but Retro by @Josh | Stardance
Devlogs:
Started work on the website! webring page works contact page works 88by31 page works Next I think I’m going to add the stats page :D
Its (mostly done!) Ive added a new blog post some cool new features i fixed the guestbook I added the my stuff page
Ships:
Ive built the start of the site from scratch!...
|
1793271208.0359495
|
1793357608.0359495
|
|
17213
|
LumusPad by @araadh3111 | Stardance
|
araadh3111
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T10:37:49Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a hackpad based on hackclubs hackpad guide I worked really really hard on this but lapse was down I even have friends who were on call with me while I was working on this, this is my first hardware project I have made a pcb with 5 cherry mx switches one 0’91 inch oled and one rotary encoder and 5 rgb backlights I have made a really great cyberpunkish case with 3 layers , which can be screwed together by m3 screws", "repo": "https://github.com/Araadh3111/Lumushackpad", "demo": ""}]...
|
[{"post_id": 7403, "ts": "2026 [{"post_id": 7403, "ts": "2026-06-12T10:31:45Z", "hours": 0.2903, "text": "My hack pad is done with small design changes now done and commited everything is done!!"}, {"post_id": 7382, "ts": "2026-06-12T09:46:28Z", "hours": 0.5056, "text": "I am officially done with my hackpad!!!!! I have been workingon it for a long time but forgot to record in lapse these 28 minutes of firmware writing is all I have to show, But I have 2 friends that can vouch for me as I was on calll grinding 6 hrs making this hackpad, U can see its repo at https://github.com/Araadh3111/Lumushackpad- here are some images of case and pcb"}]...
|
Title: LumusPad by @araadh3111 | Stardance
Devlog Title: LumusPad by @araadh3111 | Stardance
Devlogs:
I am officially done with my hackpad!!!!! I have been workingon it for a long time but forgot to record in lapse these 28 minutes of firmware writing is all I have to show, But I have 2 friends that can vouch for me as I was on calll grinding 6 hrs making this hackpad, U can see its repo at https://github.com/Araadh3111/Lumushackpad- here are some images of case and pcb
My hack pad is done with small design changes now done and commited everything is done!!
Ships:
I made a hackpad based on hackclubs hackpad guide I worked really really hard on this but lapse was down I even have friends who were on call with me while I was working on this, this is my first hardware project I have made a pcb with 5 cherry mx switches one 0’91 inch oled and one rotary encoder and 5 rgb backlights I have made a really great cyberpunkish case with 3 layers , which can be screwed together by m3 screws...
|
1793271235.465406
|
1793357635.465406
|
|
17230
|
AraadhOS by @araadh3111 | Stardance
|
araadh3111
|
1
|
2.89
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T19:11:53Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a webos based on hackclubs mission of webos1", "repo": "https://github.com/Araadh3111/WebOS", "demo": "https://web-os-phi-six.vercel.app/"}]...
|
[{"post_id": 26082, "ts": "202 [{"post_id": 26082, "ts": "2026-07-10T17:44:09Z", "hours": 0.8889, "text": "I added ai usage in readme!"}, {"post_id": 12477, "ts": "2026-06-20T11:32:36Z", "hours": 2.3233, "text": "AraadhOS — Devlog From an empty repo to a working web desktop. Vanilla HTML, CSS, and JavaScript — no frameworks, no build step, no shortcuts. —## Initial commitEvery project starts with a small act of faith: a README.md with two lines in it. No code yet, just a freshly initialized git repo and the decision that this is the thing to build — WebOS , a desktop operating system that lives in a browser tab.## Scaffolding — “made three files”The skeleton: index.html , script.js , and style.css . The JS and CSS were empty, the HTML just 8 lines. The unglamorous-but-essential moment of wiring the three files together — followed by the classic merge commit to reconcile local and remote.## First pixels — “the basic landing page”The first commit where AraadhOS started to look like something: 61 lines of CSS and a boot terminal window with the three traffic-light dots. The aesthetic locked in here too — the moody ayu-dark palette, the gold accent ( #E6B450 ), JetBrains Mono. A landing screen that boots you in rather than just dropping you on a desktop.## Bringing it to life — “basic animations”The first JavaScript showed up and the boot screen started doing things: a typing effect spelling out “Welcome to AraadhOS”, a braille spinner cycling like a real loader, and a blinking ASCII mascot — a little (◕‿◕) face that winks and back. The project stopped being a webpage and became an experience .## The big bang — “v1 of Araadh OS”The monster commit. +1,160 lines. script.js went from a few dozen lines to 767. In one push, AraadhOS became a real desktop environment:- A window system — open, close, drag-by-titlebar, focus-to-front, single-instance apps, cascading windows. Generic and shared, so every app gets it free.- An app registry — the architectural heart. Every app is just { name, icon, render() } . Add an entry and it appears in the dock, the menu bar, and the terminal automatically.- A frosted-glass dock — hover-lift, click-bounce, tooltips, open-app indicators.- The apps — Terminal (a working command interpreter), About, Projects, Files, Calculator, Settings.- Persistent settings — accent color, 12/24-hour clock, UI scale, wallpaper, all saved to localStorage .- A PROFILE object — one place to edit your real content; every app renders from it.Not a prototype — a real, usable thing.## The polish sessionA refinement pass to make the whole thing feel finished :- Squashed a bug — a stray keystroke had broken the clock on startup.- Redesigned the menu-bar — frosted glass to match the dock, a gradient brand chip, restyled buttons, and a clock with a live date.- Built a Notes app — an auto-saving notepad with a live word/character counter, backed by localStorage . It slotted straight in thanks to the app registry.- Removed dead weight — a resume.pdf link that 404’d, and the whoami command (a deliberate “no auth rabbit hole right now” call).- Filled the empty desktop — a grid of desktop icons: single-click to select, double-click to open.## Where it standsIn a handful of commits plus a polish session, AraadhOS went from a two-line README to a browser-based desktop OS with a window manager, a dock, desktop icons, seven working apps, persistent theming, and a boot sequence with real character. The architecture is clean enough that adding the next app is a five-minute job. Next: push the polish work, turn on hosting, and let people boot it."}]...
|
Title: AraadhOS by @araadh3111 | Stardance
Devlog Title: AraadhOS by @araadh3111 | Stardance
Devlogs:
AraadhOS — Devlog From an empty repo to a working web desktop. Vanilla HTML, CSS, and JavaScript — no frameworks, no build step, no shortcuts. —## Initial commitEvery project starts with a small act of faith: a README.md with two lines in it. No code yet, just a freshly initialized git repo and the decision that this is the thing to build — WebOS , a desktop operating system that lives in a browser tab.## Scaffolding — “made three files”The skeleton: index.html , script.js , and style.css . The JS and CSS were empty, the HTML just 8 lines. The unglamorous-but-essential moment of wiring the three files together — followed by the classic merge commit to reconcile local and remote.## First pixels — “the basic landing page”The first commit where AraadhOS started to look like something: 61 lines of CSS and a boot terminal window with the three traffic-light dots. The aesthetic locked in here too — the moody ayu-dark palette, the gold accent ( #E6B450 ), JetBrains Mono. A landing screen that boots you in rather than just dropping you on a desktop.## Bringing it to life — “basic animations”The first JavaScript showed up and the boot screen started doing things: a typing effect spelling out “Welcome to AraadhOS”, a braille spinner cycling like a real loader, and a blinking ASCII mascot — a little (◕‿◕) face that winks and back. The project stopped being a webpage and became an experience .## The big bang — “v1 of Araadh OS”The monster commit. +1,160 lines. script.js went from a few dozen lines to 767. In one push, AraadhOS became a real desktop environment:- A window system — open, close, drag-by-titlebar, focus-to-front, single-instance apps, cascading windows. Generic and shared, so every app gets it free.- An app registry — the architectural heart. Every app is just { name, icon, render() } . Add an entry and it appears in the dock, the menu bar, and the terminal automatically.- A frosted-glass dock — hover-lift, click-bounce, tooltips, open-app indicators.- The apps — Terminal (a working command interpreter), About, Projects, Files, Calculator, Settings.- Persistent settings — accent color, 12/24-hour clock, UI scale, wallpaper, all saved to localStorage .- A PROFILE object — one place to edit your real content; every app renders from it.Not a prototype — a real, usable thing.## The polish sessionA refinement pass to make the whole thing feel finished :- Squashed a bug — a stray keystroke had broken the clock on startup.- Redesigned the menu-bar — frosted glass to match the dock, a gradient brand chip, restyled buttons, and a clock with a live date.- Built a Notes app — an auto-saving notepad with a live word/character counter, backed by localStorage . It slotted straight in thanks to the app registry.- Removed dead weight — a resume.pdf link that 404’d, and the whoami command (a deliberate “no auth rabbit hole right now” call).- Filled the empty desktop — a grid of desktop icons: single-click to select, double-click to open.## Where it standsIn a handful of commits plus a polish session, AraadhOS went from a two-line README to a browser-based desktop OS with a window manager, a dock, desktop icons, seven working apps, persistent theming, and a boot sequence with real character. The architecture is clean enough that adding the next app is a five-minute job. Next: push the polish work, turn on hosting, and let people boot it.
I added ai usage in readme!
Ships:
I made a webos based on hackclubs mission of webos1...
|
1793220866.3907158
|
1793307266.3907158
|
|
17248
|
Wanderpin by @darshjain | Stardance
|
darshjain
|
1
|
40.0
|
735
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T08:35:27Z", "hours": 40.0, "multiplier": 18.23, "payout": 735, "blessing": "neutral", "text": "Wanderpin is a 3D-globe trip planner where the journey is the product, not the spreadsheet. Drop pins on a spinning night-earth, watch your route stitch together, then hit Play and fly the whole trip as a cinematic reel - gliding across the globe for long hops and dropping into real 3D terrain when two stops are close. The hardest part was making the globe-to-3D handoff feel continuous. Two heavy engines (three.js for the globe, MapLibre for terrain) had to crossfade without a tile-load flash, so I warm the 3D view in the background and only commit once it’s actually ready. I also caught the play-through reel re-rendering the entire app - globe included - on every caption tick; moving the caption into its own useSyncExternalStore so only it updates made the fly-through visibly smoother. I’m proud that it feels like a journey instead of a form: the cinematic reel, ~40k curated places that each carry a vibe and a fun fact, and one-tap sharing as a postcard, a public link, or an embeddable live globe. To try it: open the live link, search a city or just click the globe to drop pins (or start from a template like India’s Golden Triangle), then hit Play. Zoom all the way into a pin to watch it cross into street-level 3D. Built with React 19 + TypeScript, three.js, MapLibre GL, and Vercel serverless.", "repo": "https://github.com/darshnerd/wanderpin", "demo": "https://wanderpin-ecru.vercel.app/"}]...
|
[{"post_id": 9766, "ts": "2026 [{"post_id": 9766, "ts": "2026-06-16T06:22:00Z", "hours": 3.9347, "text": "Wanderpin - the first five seconds, final touchups Everything in this batch is about the moment someone lands : a blank globe is intimidating, so I built a real first-run, made it personal, and fixed a jank I’d been ignoring. A front door instead of an empty globe New visitors get a welcome dialog: Plan a trip, or Remember one you took. Either way there are starter templates (a week in Italy, around the world, a California road trip) you can drop in with one tap and start dragging stops around. Coachmarks that follow the actual UI A short guided tour spotlights real elements: search, the view toggle, Play. It measures each target’s live bounding rect, re-measures on resize and focus, flips above/below by screen half, and hides itself the moment you focus the search box so it never fights you while typing. Dismissals persist so it doesn’t nag on return visits. Where it stands Build’s green, all staged, not yet committed. Next: watch real first sessions, do people tap through a template or skip straight to search?"}, {"post_id": 9295, "ts": "2026-06-15T16:44:56Z", "hours": 4.0172, "text": "Wanderpin - getting routes to leave the ground Live: https://wanderpin-ecru.vercel.app/ One update, mostly one stubborn visual I’d twice given up on: real lifted route arcs on the 3D map. Arcs that finally hug the globe deck.gl’s ArcLayer drifts on a MapLibre globe (it only knows Web Mercator), and my earlier hand-rolled layer compiled, ran, threw zero errors, and painted nothing. The fix came from reading MapLibre’s own shaders: inject its projection prelude and call projectTileFor3D(pos, elevation) . The thing I’d missed every time - elevation is in meters above the sphere , fed through five per-frame uniforms, not a raw matrix. Then the polish fights: a z-fight speckle (fixed by not writing depth), a 50 km minimum lift that made short hops launch like fireworks, and a fat vertical wall at city zoom (now fades out past ~zoom 10). An optional day timeline New “Days” view in the trip panel. Weekend trip? You’ll never see it. Month-long? Hit “Organize into days” and stops group into collapsible days you can split, reorder, fit the globe to, or play one at a time. A day is a contiguous slice of the route, so “move to Day 3” repositions the stop and re-normalizes - the route and itinerary stay honest. Days travel on share links too. Where it stands Live at site, (Also squashed a deploy bug: one .tsx API route made Vercel type-check the whole api/ folder with no tsconfig - a tiny api/tsconfig.json fixed it.)"}, {"post_id": 9121, "ts": "2026-06-15T08:21:12Z", "hours": 5.0136, "text": "Wanderpin - the globe looked dumb on a 20 km hop, so I taught it to zoom This batch turns a Wanderpin trip from a thing on your screen into a thing you can send to a friend - with a real link preview, an embeddable globe, and a reel that finally looks good on short hops. Share a journey, for real Hit Share and you get a public link ( /t/slug ) in a box, plus Copy, the native share sheet, and WhatsApp / Instagram / X buttons. The interesting part is what happens when someone opens that link: /t/:slug is server-rendered ( api/share.ts ) and serves a dynamically generated Open Graph image ( api/og.tsx via @vercel/og ) - so pasting a Wanderpin link into a chat unfurls into a proper preview card instead of a blank rectangle. There’s an embeddable globe too: /embed/:slug renders just the spinning globe (a tiny route check in main.tsx swaps the whole app for EmbedView ), and the share dialog hands you the <iframe> snippet. Shared trips auto-expire after 7 days via a pg_cron job, so the table stays small and old links quietly die. The reel got smarter - 3D for the short hops The globe fly-through looks flat when two stops are 20 km apart - the arc is a stub and the camera barely moves. So now the Play reel checks each leg: anything under 200 km crosses into the 3D map (terrain + buildings) with a zoom picked from the distance, longer legs stay as globe arcs. It asks once before playing, and video recording stays globe-only so captures never go blank. What bit me Instagram has no web “share a link” intent (unlike WhatsApp/X). So the IG button copies the link and opens Instagram - the native share sheet handles it properly on phones. The slug kept vanishing from the URL. A shared trip was calling replaceState(\"/\") the instant it loaded, so /t/slug disappeared mid-playback and you couldn’t re-share what you were watching. Moved that reset onto the “Create yourslongs. The reel switch reused the globe↔3D handoff plumbing, and the type-checker caught a flyTo signature mismatch before it shipped - the map handle wants { zoom } , not a bare number. Where it stands It all builds clean, Try it: https://wanderpin-ecru.vercel.app/"}, {"post_id": 8858, "ts": "2026-06-14T19:05:10Z", "hours": 6.1658, "text": "Wanderpin - zoom into the world Two big things landed this week: the map went from 26 hand-picked places to ~40,000, and zooming into the globe now drops you into a real 3D city. From 26 places to 40,000 - and they all have a vibe Wanderpin used to know about 26 famous spots. Now it knows ~40k: cities, towns, UNESCO sites, landmarks, and the world’s most-visited attractions - each tagged with a one-word vibe (Coastal, Alpine, Arid, Heritage, Sacred, Volcanic…). The fun part is the vibes aren’t hand-typed. They’re derived at build time from real data: a Köppen climate raster (so Cairo reads “Arid” and Athens “Mediterranean”), distance to an actual coastline for “Coastal”, GeoNames elevation/feature codes for peaks and castles, and Wikidata’s annual-visitor numbers to rank “most visited”. Facts come from Wikipedia and UNESCO descriptions. Search is now instant and offline - type “Firenze” and Florence shows up. The fun part: zoom in and the globe becomes a city The home view is a space globe (three.js). The close-up is a different engine entirely - maplibre with 3D terrain and buildings. I wired up a level-of-detail handoff between them: zoom into a pin and it crosses from globe to 3D automatically, and zoom back out and it returns to the globe. The trick to making it not feel janky: when you start zooming in, it quietly mounts the 3D map hidden and lets it pull tiles in the background. Only once the tiles are warm does it crossfade. No blank loading flash. What broke (twice) It hung forever in preload. The crossfade waited on maplibre’s idle event to know tiles were ready - but that event sometimes never fires. The globe just kept zooming into black. Fix: commit after a 2.2s fallback even if idle is silent. The way back never worked. Zooming out in 3D wouldn’t return to the globe. Turned out map.on(\"zoom\") captured the callback once at mount - back when the view was still “globe” - so its if (view !== \"3d\") return guard killed every event forever. Fix: call the latest callback through a ref. Both are real bugs that would’ve bitten actual users on slow connections, not just test artifacts. Where it stands Globe -> 3D -> globe round-trips cleanly on both laptop and mobile, with zero console errors. Try it: https://wanderpin-ecru.vercel.app/"}, {"post_id": 8556, "ts": "2026-06-14T06:57:59Z", "hours": 3.3139, "text": "Wanderpin - Blog 5 - Update press play, watch your trip turn into a movie Live: https://wanderpin-ecru.vercel.app/ You drop a few pins on a globe and hit Play - and instead of a checklist, you get a cinematic fly-through you can actually share. This update was about chasing one idea until the app felt alive : the journey is the hero, the logistics hide in a drawer. The payoff Play used to just stop. Now it lands: the camera pulls back to frame the route, the arcs light up, and a date-stamped card counts up your distance, stops, countries and time. A little classifier scores the trip and picks the camera - a city hop zooms in, a round-the-world trip shows the marble. You also pick how you travel each leg (walk/train/flight…), which bends both the arc shape and the trip’s duration. Then three swings: export the fly-through as a video (recorded straight off the globe canvas, no server), “been there” pins that glow gold once visited, and a living globe - a warm daylight terminator plus each stop’s local time and current weather. What broke Geocode 500’d in prod, every call. Not a geocoding bug at all: type: \"module\" means Vercel runs the API as native ESM, and Node demands file extensions on imports. from \"./_nominatim\" crashed at load. One .js fixed it. The terminator looked gloomy. Darkening the night side just made an already-night map muddy. I flipped it - glow the sunlit side instead - and it finally read as “half the globe is lit.” Two suns. Every clear-sky stop showed ☀️ 06:28 · ☀️ 15° - my day marker next to the weather glyph. ngl used AI to build this image 😛"}, {"post_id": 8281, "ts": "2026-06-13T19:28:41Z", "hours": 4.5656, "text": "Wanderpin - I deleted the spreadsheet You open the app or you can :) (check it out - https://wanderpin-ecru.vercel.app/ ). A night-side Earth, city lights glowing, a slow spin. You drop a pin in Paris. Another in Tokyo. The arc draws across the globe, and right next to all of that, a panel quietly tells you your dream weighs 2.2 tonnes of CO₂ . That panel was killing the magic. This phase was about fixing it. The shift I stopped showing the numbers on the dream surface. Same numbers, just hidden one click deep behind a “Trip details” disclosure. In their place: one warm line that grows with the trip - “4 stops · 4 countries · An adventure taking shape.” You build a journey. The app reacts like it’s excited about it. Surprise me, the most fun thing the app could do, was buried under a dice icon. It’s the front door now: Take me somewhere. The empty state stopped being homework - “Your map’s a blank canvas, click to start” - and became an invitation: “Where are you dreaming of?” Drop your very first pin and the app whispers back: “Your journey begins in Santorini ✨” . Hover over a stop and a small card appears: “Why go - its iconic caldera is the rim of a colossal volcanic eruption.” Hit Play and the screen goes cinematic. Full-screen overlay, place name, vibe, progress dots, the route lighting up beneath. The trip used to be a spreadsheet. Now it’s a memory you haven’t made yet. The mobile catch Almost shipped a bug that would’ve made this look broken. On a phone, the empty-state “Take me somewhere” lives inside a bottom sheet. Tap it, and the surprise card was rendering behind the still-open sheet. To the user, nothing happened. To me, a testing pass on an iPhone-shaped viewport caught it the morning of. One-line fix. The kind that disappears in the diff but would have left every mobile user thinking the button was broken. Where it stands Empty state, surprise card, first pin, the reel - all warm now. The numbers are still there for the planners, behind one small toggle. The dreamers don’t see them at all. When Play ends, the camera pulls back, the whole route lights up, and the same numbers I just buried come surging back as a celebration - “You crossed 4 countries. Today, that’s a journey.” Same data, different feeling. The closing frame becomes a postcard you can share. The whole phase is one belief: people don’t open a travel app because they want to know how many kilometres a trip is. They open it because they want, for a minute, to imagine going somewhere. So show them the somewhere."}, {"post_id": 8043, "ts": "2026-06-13T12:44:32Z", "hours": 5.3458, "text": "Wanderpin - phase 3: real sharing, and the bug that ate an afternoon This update gave Wanderpin proper short links, a saved-trips library, and a route optimizer. But the part I’ll remember is a 100 KB mystery. Short links + a trip library Sharing used to cram the whole trip into a giant #... URL. Now there’s a tiny Supabase backend: hit Share and you get a clean …/t/aB3xY9 link that anyone can open, no login. Reads come straight from the browser (a public read policy), and writes go through a serverless function with the secret key, so nobody can scribble on the database from the client. When someone opens a shared link, the route flies stop to stop and a little “Make your own” card invites them to start their own. Click polish Spinning the globe was dropping stray pins, because react-globe.gl fires a click even at the end of a drag. Added a pointer-distance guard (under ~5px = a real click). Clicking open ocean now offers an “Add anyway” instead of a useless pin, and there’s an “Optimize route” button that reorders stops with nearest-neighbour + 2-opt to cut total distance. The bug: a 5-stop trip that was 400 KB Share kept failing in the browser with a 413 (payload too large). But the function worked fine when I hit it with curl. Same 5-stop trip, totally different size. I had the user dump their saved trip in the console. Five stops. 403,682 characters. Each stop had two mystery keys: __threeObjPoint and __threeObjLabel , ~100 KB each. Turns out react-globe.gl mutates the data objects you hand it - it bolts the entire Three.js render object (meshes, geometry, materials) straight onto your data. I was passing my live trip array to the globe, so it was quietly fattening every stop by 100 KB, which then got saved to localStorage and sent on publish. The hash link looked fine only because it re-packs specific fields, so it never saw the junk. Fix was two-fold: hand the globe throwaway copies so it scribbles on those instead of my real data, and sanitize trips to known fields on save/load (which also cleans up the bloated localStorage on next visit). Back to ~1 KB per trip. Where it stands Live at https://wanderpin-ecru.vercel.app/ - build a trip, optimize it, save it, share a short link, watch it fly. Honest caveats: shared trips are snapshots (open a link, get a copy - not live collaboration), and the globe’s three.js bundle is still the heavy chunk (lazy-loaded, so it only hits the 3D view). Lesson logged: never trust a viz library not to mutate your state."}, {"post_id": 7632, "ts": "2026-06-12T19:09:46Z", "hours": 3.2525, "text": "Wanderpin - phase 2: trips you can shape, share, and watch fly Phase 1 let you drop pins on a globe. Phase 2 turns that into an actual trip planner: reorder stops, edit them, share a link, and hit Play to watch the camera fly your whole route. Play: the globe earns its keep The feature I’m happiest with. There’s now a Play button that flies the camera stop to stop along your route, advancing the highlighted pin as it goes. On the 3D globe it looks the way I wanted the whole app to feel. The nice surprise: it was almost free. Back in phase 1 both the globe and the flat map exposed the same tiny flyTo handle. So the tour loop doesn’t know or care which view you’re on Editing, sharing, exporting Reorder by dragging (dnd-kit), with the route redrawing live. The drag handle is the only draggable bit, so dragging never fights tapping a stop to edit it. Edit a stop inline — rename, swap the emoji, add a note. Undo on remove and “clear all” via the toast, because I deleted my own trip twice testing it. Share builds a link with the whole trip compressed into the URL (lz-string), no backend. Open it anywhere and the trip loads. IDs are regenerated on import so a shared trip never collides with one you already have. Export to JSON or GPX, so a route can open in Google Earth. Where it stands Live at https://wanderpin-ecru.vercel.app/ . Every phase builds clean ( tsc + Vite) and deploys to Vercel on push. The loop now: build a trip, reorder and annotate it, watch it fly, share the link."}, {"post_id": 7419, "ts": "2026-06-12T11:12:40Z", "hours": 4.6761, "text": "Wanderpin - first build Check it out yourself -> https://wanderpin-ecru.vercel.app/ A little travel app where you drop pins on a spinning 3D globe (or a flat map if you prefer), and it stitches them into a trip with distances and country counts. Here’s where it’s at after the first couple of sessions. What it does so far Globe + map, same data. A 3D night-earth globe (three.js via react-globe.gl) with glowing pins and animated arcs between stops, and a 2D Leaflet map with a dashed route line. One toggle swaps between them - they render off the same trip array. Search and click to add. Type a city and it geocodes through OpenStreetMap’s Nominatim; or just click anywhere on the map and it reverse-geocodes the spot into a named pin. Surprise me. A pile of hand-picked destinations, each with a fun fact and a vibe, for when you don’t know where you want to go. It remembers. Trip, view, and “is this still the sample” all persist to localStorage. First-time visitors get a seeded Paris -> Rome -> Cairo route so the app isn’t empty on load. Spent a bit making the Nominatim calls polite: searches are debounced so a fast typer doesn’t fire a request per keystroke. Where it stands The core loop works end to end: search or click -> pin lands on globe and map -> trip panel updates distance (haversine) and country count -> reload and it’s all still there. Next up is editing/reordering stops and tidying the mobile layout"}]...
|
Title: Wanderpin by @darshjain | Stardance
Devlog Title: Wanderpin by @darshjain | Stardance
Devlogs:
Wanderpin - first build Check it out yourself -> https://wanderpin-ecru.vercel.app/ A little travel app where you drop pins on a spinning 3D globe (or a flat map if you prefer), and it stitches them into a trip with distances and country counts. Here’s where it’s at after the first couple of sessions. What it does so far Globe + map, same data. A 3D night-earth globe (three.js via react-globe.gl) with glowing pins and animated arcs between stops, and a 2D Leaflet map with a dashed route line. One toggle swaps between them - they render off the same trip array. Search and click to add. Type a city and it geocodes through OpenStreetMap’s Nominatim; or just click anywhere on the map and it reverse-geocodes the spot into a named pin. Surprise me. A pile of hand-picked destinations, each with a fun fact and a vibe, for when you don’t know where you want to go. It remembers. Trip, view, and “is this still the sample” all persist to localStorage. First-time visitors get a seeded Paris -> Rome -> Cairo route so the app isn’t empty on load. Spent a bit making the Nominatim calls polite: searches are debounced so a fast typer doesn’t fire a request per keystroke. Where it stands The core loop works end to end: search or click -> pin lands on globe and map -> trip panel updates distance (haversine) and country count -> reload and it’s all still there. Next up is editing/reordering stops and tidying the mobile layout
Wanderpin - phase 2: trips you can shape, share, and watch fly Phase 1 let you drop pins on a globe. Phase 2 turns that into an actual trip planner: reorder stops, edit them, share a link, and hit Play to watch the camera fly your whole route. Play: the globe earns its keep The feature I’m happiest with. There’s now a Play button that flies the camera stop to stop along your route, advancing the highlighted pin as it goes. On the 3D globe it looks the way I wanted the whole app to feel. The nice surprise: it was almost free. Back in phase 1 both the globe and the flat map exposed the same tiny flyTo handle. So the tour loop doesn’t know or care which view you’re on Editing, sharing, exporting Reorder by dragging (dnd-kit), with the route redrawing live. The drag handle is the only draggable bit, so dragging never fights tapping a stop to edit it. Edit a stop inline — rename, swap the emoji, add a note. Undo on remove and “clear all” via the toast, because I deleted my own trip twice testing it. Share builds a link with the whole trip compressed into the URL (lz-string), no backend. Open it anywhere and the trip loads. IDs are regenerated on import so a shared trip never collides with one you already have. Export to JSON or GPX, so a route can open in Google Earth. Where it stands Live at https://wanderpin-ecru.vercel.app/ . Every phase builds clean ( tsc + Vite) and deploys to Vercel on push. The loop now: build a trip, reorder and annotate it, watch it fly, share the link.
Wanderpin - phase 3: real sharing, and the bug that ate an afternoon This update gave Wanderpin proper short links, a saved-trips library, and a route optimizer. But the part I’ll remember is a 100 KB mystery. Short links + a trip library Sharing used to cram the whole trip into a giant #... URL. Now there’s a tiny Supabase backend: hit Share and you get a clean …/t/aB3xY9 link that anyone can open, no login. Reads come straight from the browser (a public read policy), and writes go through a serverless function with the secret key, so nobody can scribble on the database from the client. When someone opens a shared link, the route flies stop to stop and a little “Make your own” card invites them to start their own. Click polish Spinning the globe was dropping stray pins, because react-globe.gl fires a click even at the end of a drag. Added a pointer-distance guard (under ~5px = a real click). Clicking open ocean now offers an “Add anyway” instead of a useless pin, and there’s an “Optimize route” button that reorders stops with nearest-neighbour + 2-opt to cut total distance. The bug: a 5-stop trip that was 400 KB Share kept failing in the browser with a 413 (payload too large). But the function worked fine when I hit it with curl. Same 5-stop trip, totally different size. I had the user dump their saved trip in the console. Five stops. 403,682 characters. Each stop had two mystery keys: __threeObjPoint and __threeObjLabel , ~100 KB each. Turns out react-globe.gl mutates the data objects you hand it - it bolts the entire Three.js render object (meshes, geometry, materials) straight onto your data. I was passing my live trip array to the globe, so it was quietly fattening every stop by 100 KB, which then got saved to localStorage and sent on publish. The hash link looked fine only because it re-packs specific fields, so it never saw the junk. Fix was two-fold: hand the globe throwaway copies so it scribbles on those instead of my real data, and sanitize trips to known fields on save/load (which also cleans up the bloated localStorage on next visit). Back to ~1 KB per trip. Where it stands Live at https://wanderpin-ecru.vercel.app/ - build a trip, optimize it, save it, share a short link, watch it fly. Honest caveats: shared trips are snapshots (open a link, get a copy - not live collaboration), and the globe’s three.js bundle is still the heavy chunk (lazy-loaded, so it only hits the 3D view). Lesson logged: never trust a viz library not to mutate your state.
Wanderpin - I deleted the spreadsheet You open the app or you can :) (check it out - https://wanderpin-ecru.vercel.app/ ). A night-side Earth, city lights glowing, a slow spin. You drop a pin in Paris. Another in Tokyo. The arc draws across the globe, and right next to all of that, a panel quietly tells you your dream weighs 2.2 tonnes of CO₂ . That panel was killing the magic. This phase was about fixing it. The shift I stopped showing the numbers on the dream surface. Same numbers, just hidden one click deep behind a “Trip details” disclosure. In their place: one warm line that grows with the trip - “4 stops · 4 countries · An adventure taking shape.” You build a journey. The app reacts like it’s excited about it. Surprise me, the most fun thing the app could do, was buried under a dice icon. It’s the front door now: Take me somewhere. The empty state stopped being homework - “Your map’s a blank canvas, click to start” - and became an invitation: “Where are you dreaming of?” Drop your very first pin and the app whispers back: “Your journey begins in Santorini ✨” . Hover over a stop and a small card appears: “Why go - its iconic caldera is the rim of a colossal volcanic eruption.” Hit Play and the screen goes cinematic. Full-screen overlay, place name, vibe, progress dots, the route lighting up beneath. The trip used to be a spreadsheet. Now it’s a memory you haven’t made yet. The mobile catch Almost shipped a bug that would’ve made this look broken. On a phone, the empty-state “Take me somewhere” lives inside a bottom sheet. Tap it, and the surprise card was rendering behind the still-open sheet. To the user, nothing happened. To me, a testing pass on an iPhone-shaped viewport caught it the morning of. One-line fix. The kind that disappears in the diff but would have left every mobile user thinking the button was broken. Where it stands Empty state, surprise card, first pin, the reel - all warm now. The numbers are still there for the planners, behind one small toggle. The dreamers don’t see them at all. When Play ends, the camera pulls back, the whole route lights up, and the same numbers I just buried come surging back as a celebration - “You crossed 4 countries. Today, that’s a journey.” Same data, different feeling. The closing frame becomes a postcard you can share. The whole phase is one belief: people don’t open a travel app because they want to know how many kilometres a trip is. They open it because they want, for a minute, to imagine going somewhere. So show them the somewhere.
Wanderpin - Blog 5 - Update press play, watch your trip turn into a movie Live: https://wanderpin-ecru.vercel.app/ You drop a few pins on a globe and hit Play - and instead of a checklist, you get a cinematic fly-through you can actually share. This update was about chasing one idea until the app felt alive : the journey is the hero, the logistics hide in a drawer. The payoff Play used to just stop. Now it lands: the camera pulls back to frame the route, the arcs light up, and a date-stamped card counts up your distance, stops, countries and time. A little classifier scores the trip and picks the camera - a city hop zooms in, a round-the-world trip shows the marble. You also pick how you travel each leg (walk/train/flight…), which bends both the arc shape and the trip’s duration. Then three swings: export the fly-through as a video (recorded straight off the globe canvas, no server), “been there” pins that glow gold once visited, and a living globe - a warm daylight terminator plus each stop’s local time and current weather. What broke Geocode 500’d in prod, every call. Not a geocoding bug at all: type: "module" means Vercel runs the API as native ESM, and Node demands file extensions on imports. from "./_nominatim" crashed at load. One .js fixed it. The terminator looked gloomy. Darkening the night side just made an already-night map muddy. I flipped it - glow the sunlit side instead - and it finally read as “half the globe is lit.” Two suns. Every clear-sky stop showed ☀️ 06:28 · ☀️ 15° - my day marker next to the weather glyph. ngl used AI to build this image 😛
Wanderpin - zoom into the world Two big things landed this week: the map went from 26 hand-picked places to ~40,000, and zooming into the globe now drops you into a real 3D city. From 26 places to 40,000 - and they all have a vibe Wanderpin used to know about 26 famous spots. Now it knows ~40k: cities, towns, UNESCO sites, landmarks, and the world’s most-visited attractions - each tagged with a one-word vibe (Coastal, Alpine, Arid, Heritage, Sacred, Volcanic…). The fun part is the vibes aren’t hand-typed. They’re derived at build time from real data: a Köppen climate raster (so Cairo reads “Arid” and Athens “Mediterranean”), distance to an actual coastline for “Coastal”, GeoNames elevation/feature codes for peaks and castles, and Wikidata’s annual-visitor numbers to rank “most visited”. Facts come from Wikipedia and UNESCO descriptions. Search is now instant and offline - type “Firenze” and Florence shows up. The fun part: zoom in and the globe becomes a city The home view is a space globe (three.js). The close-up is a different engine entirely - maplibre with 3D terrain and buildings. I wired up a level-of-detail handoff between them: zoom into a pin and it crosses from globe to 3D automatically, and zoom back out and it returns to the globe. The trick to making it not feel janky: when you start zooming in, it quietly mounts the 3D map hidden and lets it pull tiles in the background. Only once the tiles are warm does it crossfade. No blank loading flash. What broke (twice) It hung forever in preload. The crossfade waited on maplibre’s idle event to know tiles were ready - but that event sometimes never fires. The globe just kept zooming into black. Fix: commit after a 2.2s fallback even if idle is silent. The way back never worked. Zooming out in 3D wouldn’t return to the globe. Turned out map.on("zoom") captured the callback once at mount - back when the view was still “globe” - so its if (view !== "3d") return guard killed every event forever. Fix: call the latest callback through a ref. Both are real bugs that would’ve bitten actual users on slow connections, not just test artifacts. Where it stands Globe -> 3D -> globe round-trips cleanly on both laptop and mobile, with zero console errors. Try it: https://wanderpin-ecru.vercel.app/
Wanderpin - the globe looked dumb on a 20 km hop, so I taught it to zoom This batch turns a Wanderpin trip from a thing on your screen into a thing you can send to a friend - with a real link preview, an embeddable globe, and a reel that finally looks good on short hops. Share a journey, for real Hit Share and you get a public link ( /t/slug ) in a box, plus Copy, the native share sheet, and WhatsApp / Instagram / X buttons. The interesting part is what happens when someone opens that link: /t/:slug is server-rendered ( api/share.ts ) and serves a dynamically generated Open Graph image ( api/og.tsx via @vercel/og ) - so pasting a Wanderpin link into a chat unfurls into a proper preview card instead of a blank rectangle. There’s an embeddable globe too: /embed/:slug renders just the spinning globe (a tiny route check in main.tsx swaps the whole app for EmbedView ), and the share dialog hands you the <iframe> snippet. Shared trips auto-expire after 7 days via a pg_cron job, so the table stays small and old links quietly die. The reel got smarter - 3D for the short hops The globe fly-through looks flat when two stops are 20 km apart - the arc is a stub and the camera barely moves. So now the Play reel checks each leg: anything under 200 km crosses into the 3D map (terrain + buildings) with a zoom picked from the distance, longer legs stay as globe arcs. It asks once before playing, and video recording stays globe-only so captures never go blank. What bit me Instagram has no web “share a link” intent (unlike WhatsApp/X). So the IG button copies the link and opens Instagram - the native share sheet handles it properly on phones. The slug kept vanishing from the URL. A shared trip was calling replaceState("/") the instant it loaded, so /t/slug disappeared mid-playback and you couldn’t re-share what you were watching. Moved that reset onto the “Create yourslongs. The reel switch reused the globe↔3D handoff plumbing, and the type-checker caught a flyTo signature mismatch before it shipped - the map handle wants { zoom } , not a bare number. Where it stands It all builds clean, Try it: https://wanderpin-ecru.vercel.app/
Wanderpin - getting routes to leave the ground Live: https://wanderpin-ecru.vercel.app/ One update, mostly one stubborn visual I’d twice given up on: real lifted route arcs on the 3D map. Arcs that finally hug the globe deck.gl’s ArcLayer drifts on a MapLibre globe (it only knows Web Mercator), and my earlier hand-rolled layer compiled, ran, threw zero errors, and painted nothing. The fix came from reading MapLibre’s own shaders: inject its projection prelude and call projectTileFor3D(pos, elevation) . The thing I’d missed every time - elevation is in meters above the sphere , fed through five per-frame uniforms, not a raw matrix. Then the polish fights: a z-fight speckle (fixed by not writing depth), a 50 km minimum lift that made short hops launch like fireworks, and a fat vertical wall at city zoom (now fades out past ~zoom 10). An optional day timeline New “Days” view in the trip panel. Weekend trip? You’ll never see it. Month-long? Hit “Organize into days” and stops group into collapsible days you can split, reorder, fit the globe to, or play one at a time. A day is a contiguous slice of the route, so “move to Day 3” repositions the stop and re-normalizes - the route and itinerary stay honest. Days travel on share links too. Where it stands Live at site, (Also squashed a deploy bug: one .tsx API route made Vercel type-check the whole api/ folder with no tsconfig - a tiny api/tsconfig.json fixed it.)
Wanderpin - the first five seconds, final touchups Everything in this batch is about the moment someone lands : a blank globe is intimidating, so I built a real first-run, made it personal, and fixed a jank I’d been ignoring. A front door instead of an empty globe New visitors get a welcome dialog: Plan a trip, or Remember one you took. Either way there are starter templates (a week in Italy, around the world, a California road trip) you can drop in with one tap and start dragging stops around. Coachmarks that follow the actual UI A short guided tour spotlights real elements: search, the view toggle, Play. It measures each target’s live bounding rect, re-measures on resize and focus, flips above/below by screen half, and hides itself the moment you focus the search box so it never fights you while typing. Dismissals persist so it doesn’t nag on return visits. Where it stands Build’s green, all staged, not yet committed. Next: watch real first sessions, do people tap through a template or skip straight to search?
Ships:
Wanderpin is a 3D-globe trip planner where the journey is the product, not the spreadsheet. Drop pins on a spinning night-earth, watch your route stitch together, then hit Play and fly the whole trip as a cinematic reel - gliding across the globe for long hops and dropping into real 3D terrain when two stops are close. The hardest part was making the globe-to-3D handoff feel continuous. Two heavy engines (three.js for the globe, MapLibre for terrain) had to crossfade without a tile-load flash, so I warm the 3D view in the background and only commit once it’s actually ready. I also caught the play-through reel re-rendering the entire app - globe included - on every caption tick; moving the caption into its own useSyncExternalStore so only it updates made the fly-through visibly smoother. I’m proud that it feels like a journey instead of a form: the cinematic reel, ~40k curated places that each carry a vibe and a fun fact, and one-tap sharing as a postcard, a public link, or an embeddable live globe. To try it: open the live link, search a city or just click the globe to drop pins (or start from a template like India’s Golden Triangle), then hit Play. Zoom all the way into a pin to watch it cross into street-level 3D. Built with React 19 + TypeScript, three.js, MapLibre GL, and Vercel serverless....
|
1792878485.7195795
|
1793742485.7195795
|
|
17250
|
NerdyNeighbor by @Scrax99 | Stardance
|
Scrax99
|
1
|
6.0
|
15
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T15:14:47Z", "hours": 6.0, "multiplier": 2.57, "payout": 15, "blessing": "neutral", "text": "I made a study tool that tracks the amount of time you’ve studied, helps you create a todo list, and has an inbuilt A.I. model that makes it to where you don’t get distracted when you’re doing your homework and just need a simple question answered. I learned a lot from this project about a whole bunch of different libraries, and how to use Cloud Flare’s API key security tool which was really useful. I also learned about the struggles of frontend devs which was eyeopening. Anyways I hope that you enjoy the project and are able to use it.", "repo": "https://github.com/scraxx99/NerdyNeighbor", "demo": "https://scraxx99.github.io/NerdyNeighbor/"}]...
|
[{"post_id": 10668, "ts": "202 [{"post_id": 10668, "ts": "2026-06-17T15:06:53Z", "hours": 1.9861, "text": "Finally finished the final security bit for NerdyNeighbor and I’m ready to publish. Thank you for following along, and I learned a whole lot."}, {"post_id": 9102, "ts": "2026-06-15T06:40:55Z", "hours": 1.1308, "text": "Just added tailwind and am now going to work on finishing up all the styling"}, {"post_id": 8683, "ts": "2026-06-14T12:54:49Z", "hours": 1.0375, "text": "Finished the todo function on the app and it works wonderfully (gulp) I was having issues with the tasks disappearing if you reloaded the page, but that was a simple fix (I’m not using A.I. on this one for code so easier said than done) it may look like a caveman built it, but I’m proud of it because I’m building something I understand and I’m not using A.I. nearly as much as I had been previously."}, {"post_id": 7989, "ts": "2026-06-13T10:16:30Z", "hours": 1.9094, "text": "I decided that I was gonna make a project by handwriting all of the code and only using A.I. when I absolutely have too. I decided on a study agent that I could scale until I needed the help of A.I. Today I added a timer that took quite a while, but I’m very proud. I know all of the logic behind it and can implement it in another project if necessary, so it was time well spent. This project may come out looking less impressive, but I’ll be content knowing that it was all of my own code and ideas. Underneath is a photo of what I have so far, and it is indeed quite simple, but I’m just using this is a learning tool so I’m content. The next thing to build is a notes taking feature/ ToDo list."}]...
|
Title: NerdyNeighbor by @Scrax99 | Stardance
Devl Title: NerdyNeighbor by @Scrax99 | Stardance
Devlogs:
I decided that I was gonna make a project by handwriting all of the code and only using A.I. when I absolutely have too. I decided on a study agent that I could scale until I needed the help of A.I. Today I added a timer that took quite a while, but I’m very proud. I know all of the logic behind it and can implement it in another project if necessary, so it was time well spent. This project may come out looking less impressive, but I’ll be content knowing that it was all of my own code and ideas. Underneath is a photo of what I have so far, and it is indeed quite simple, but I’m just using this is a learning tool so I’m content. The next thing to build is a notes taking feature/ ToDo list.
Finished the todo function on the app and it works wonderfully (gulp) I was having issues with the tasks disappearing if you reloaded the page, but that was a simple fix (I’m not using A.I. on this one for code so easier said than done) it may look like a caveman built it, but I’m proud of it because I’m building something I understand and I’m not using A.I. nearly as much as I had been previously.
Just added tailwind and am now going to work on finishing up all the styling
Finally finished the final security bit for NerdyNeighbor and I’m ready to publish. Thank you for following along, and I learned a whole lot.
Ships:
I made a study tool that tracks the amount of time you’ve studied, helps you create a todo list, and has an inbuilt A.I. model that makes it to where you don’t get distracted when you’re doing your homework and just need a simple question answered. I learned a lot from this project about a whole bunch of different libraries, and how to use Cloud Flare’s API key security tool which was really useful. I also learned about the struggles of frontend devs which was eyeopening. Anyways I hope that you enjoy the project and are able to use it....
|
1793246000.2023094
|
1793332400.2023094
|
|
17275
|
BulkGPT by @aamir_pa2009 | Stardance
|
aamir_pa2009
|
1
|
2.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T19:27:55Z", "hours": 2.0, "multiplier": 1.8, "payout": 2, "blessing": "neutral", "text": "I made a chrome extension that can delete and archive multiuple chats at a time", "repo": "https://github.com/AamirKPathan/BulkGPTv1", "demo": "https://github.com/AamirKPathan/BulkGPTv1/releases/tag/v2.1"}]...
|
[{"post_id": 46582, "ts": "202 [{"post_id": 46582, "ts": "2026-08-13T22:15:40Z", "hours": 2.4075, "text": "Finally finished this blasted extension. You can delete multiple chats at once and also archive."}]...
|
Title: BulkGPT by @aamir_pa2009 | Stardance
Devlo Title: BulkGPT by @aamir_pa2009 | Stardance
Devlogs:
Finally finished this blasted extension. You can delete multiple chats at once and also archive.
Ships:
I made a chrome extension that can delete and archive multiuple chats at a time...
|
1793141632.5281696
|
1793228032.5281696
|
|
17291
|
an EPIC Light Sail Simulation by @SpaceEvee | Star an EPIC Light Sail Simulation by @SpaceEvee | Stardance...
|
SpaceEvee
|
1
|
49.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T08:42:06Z", "hours": 49.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is the first ship of an interstellar light sail simulation for a research paper I am working on. The simulation models an idealised Gaussian laser beam with a fixed nominal propagation direction along +Z. The beam settings include peak intensity (I_0), waist (w_0), wavelength (\\lambda), and lateral beam-centre offsets. The sail model estimates radiation-pressure force and torque over the discretised surface, then advances translational and rotational state. The workbench records time histories so configurations can be inspected and compared. A local radiative-equilibrium calculation estimates surface temperature from absorbed illumination and the configured emissivity. Few Notes: The simulation is not very optimised so it may take some time to function on lower end PCs I have added a video performing some functions of the software in the github ReadMe. (As in the ship of my last project, many people told me to have a video as they didn’t want to download the package itself.) If there the runner throws an exception or error pop up at the end, i.e. after running the program, the data can still be accessed (plots, .json, .csv, etc.)", "repo": "https://github.com/Evyvaan-Space-Lover/Nyx", "demo": "https://github.com/Evyvaan-Space-Lover/Nyx/releases/tag/v1.0"}]...
|
[{"post_id": 79732, "ts": "202 [{"post_id": 79732, "ts": "2026-10-15T07:54:51Z", "hours": 0.3886, "text": "Mini Devlog :yoooo-chat-whats-up–are-yall-ready-for-another-weekly-journal–i-hope-so-kitty-dance-mb-sorry-for-b: I completed the parameter sweep and it works (still pretty glitchy tho) and added a 3d visualisation section to the program (prolly the most visually appealing thing ) GONNA SHIP NOW YAY"}, {"post_id": 79555, "ts": "2026-10-14T16:10:53Z", "hours": 9.5667, "text": "NYX DEVLOG MUHEHEHEHHE (NO IDEA BOUT THE INDEX) sorry for being dead for so long. i was busy with irl stuff The Simulator is ALMOST done yay I made the GUI for yall (the program is not user friendly ) and now the simulated data can FINALLY be saved into .json and .csv and some boring physics shit heres the run down: Physics World frame inertia calculation. i CORRECTED THE INERTIA TENSOR TRANSFORMATION so that angular momentum and rotational dynamics use the inertia tensor in the world frame Rotational Dynamics used the rigid body rotational equation normalised the intermediate RK4 orientation states (so yeah lots of attitude control yk) paraboloid COM and hemisphere COM were straight wrong as i found out so they are fixed now respectively GUI added a workbench/gui for the whole program (I HATE this) and in the repo i added the Read Me after two gazillion years ill say Nyx (the simulator) is done and i can ship it FINALLY after so long and start working on the paper FINALLY. btw the BEANS SHALL PREVAIL some things the 3d geometry visualization doesnt work with the gui stack so ill have to fix that and the parameter sweep doesnt work any bit. these things ill have to do before the first ship and besides ill say the same is pretty good and completed"}, {"post_id": 59110, "ts": "2026-08-31T18:55:55Z", "hours": 7.2819, "text": "DEVLOG 6 (and seven soon) Its been soooooooooooooooo long since my last devlog. I had my exams and well I couldn’t much and didn’t write my devlog last time. Oh you don’t know what Nyx? It is a light sail simulation I am working on for a paper I am writing (btw there are emojis now so cool stuff got added when I was gone) NEW ADDITIONS: Introduce a materials package (Material dataclass + presets: Graphene, Aluminium, SiliconCarbide) and an analysis package with plotting helpers and an Experiment helper. Update SimMain to accept a material for each sail type, pull reflectivity/absorptivity from the material, and record max/average temperature history. Fix numeric/geometry issues: correct sphere inertia, improve normal/rotation math for sphere and paraboloid, and ensure positions use rotated local coordinates. Add multiple debug/test scripts and enable analysis plotting at the end of simLoop to visualize force, position, velocity, acceleration, angular velocity and temperature histories. I did NOT copy-paste the commit here trust. If you think I did, you're wrong Well, thats it for now, Ill put more effort in the next devlog See YALL soon (no one cares, but I care )"}, {"post_id": 28180, "ts": "2026-07-14T09:47:43Z", "hours": 8.4836, "text": "DEVLOG - smth im bad at remembering numbers and its been sometime too WHATS UP LOVELY PEOPLE Another Nyx devlog it is! You dont know what Nyx is? Its my light sail simulation for a paper im working on! I did some code refining and yeah lots of boring stuff. Used the Stefan–Boltzmann equilibrium approximation to estimate local surface temperature. Added a temperature mapping system based on absorbed laser intensity (Absolutely obsolete btw ): ) Fixed the paraboloid sign issue so it curved in the intended direction. -Also tried using other libraries for rendering, but MatPlotLib is the best option right now other miscellaneous stuff I cant remember honestly (Next devlog will be more detailed trust)"}, {"post_id": 16406, "ts": "2026-06-26T18:05:21Z", "hours": 12.8053, "text": "Devlog - 4 YO PEOPLE, i am BACK (ts so cringe. literally nobody cares). This devlog is about how almost lost my minds migrating my simulation’s rotation calculations into Quaternions , integrating RK4 and as always solving bugs, because Nyx is filled with bugs (Oh, you dont know what Nyx is? well it is my passive beam riding light sail simulation, for a research paper im working on) Euler Angles Started Tweaking Ok so before this, Nyx used normal Euler angle rotations using thetaX and thetaY for orientation. At first it worked fine, but after longer simulations stuff started tweaking hard The sphere and paraboloid would randomly start flattening into weird pancake/disc things (which i lowkey think might be cuz matplotlib library hates me idk) , rotations started looking cursed, and the orientation slowly became unstable over time. At first I thought matplotlib was just being goofy again, but nah, the actual orientation system itself was kinda cooked (most likely) . The problem was that Euler angles are not really built for stable continuous 3D rotational dynamics. Rotations started interfering with each other and the geometry would slowly drift into nonphysical states during longer simulations.Basically Nyx had reached the point where the old orientation system just wasn’t enough anymore :(. Quaternion Migration (The Pain of ’26 ) So yeah, this devlog was basically the “quaternion suffering” update I replaced the entire orientation system with quaternions. Instead of storing orientation as separate thetaX and thetaY values, Nyx now stores orientation as a quaternion state directly integrated through RK4.This was honestly one of the biggest upgrades to the simulator so far because now orientation itself is physically simulated instead of just being fake angle accumulation and stuff. The migration was WAY more painful than expected At first literally everything exploded: infinitiesNaNsbroken, normals-cursed, and sphere geometry intensity overflows. At one point the simulator straight up started generating inf values and the sphere looked like it got compressed by a hydraulic press .The biggest issue ended up being invalid normal vectors inside the sphere mesh generation. A single broken normal could completely destroy the intensity calculations and then infect the entire simulation state with NaNs.After fixing all that, Nyx now has stable quaternion orientation. quaternion vector rotation, quaternion RK4 integration, much more stable rotational dynamics, no more gimbal-lock-type weird ahh stuff . This was really hard for me to add lol now what ? so thats what took more than 10 hours. I think my boi Nyx is doing pretty good and will help me in great magnitude for my research paper. For now at least, i wanna make a sort of UI and replace ‘matplotlib’ with smth better cuz’ I am lowkey fed up. I would also like to add a feature of mass data collection, so that there is much data to study. – that’s it for me today, I hope YOU have a great day! (BTW, i have no idea why the markdown on this devlog is so weird, i can not seem to fix it lowkey)"}, {"post_id": 13176, "ts": "2026-06-21T15:45:41Z", "hours": 4.1456, "text": "Devlog 3 - NYX HAS FRIED MY BRAN btw, if you havent seen my older devlogs, you are legally obligated to do so, and if not done, the police shall come for you so, after my last devlog, added a new sail geometry, fixed A LOT OF BUGS and made the code efficient (not really) and improved the physics calculation, to a more complex force calculation engine (its not an engine, idk why i said that). also, i realized paraboloids are pretty niffty as with some dingle dangle, we can have a circular sail without even making a new class! Features i added Paraboloid geometry, cleaned up the radiation pressure code, quivers for visualization and better force equation. the force equation is now F = fmag * (2*cosTheta*normal - beamDih) (this is embarrassing, but in my code, the beam direction variable is beamDih ) Whats Next? wanna improve the visualization local force vector rendering time evolution moving sail oscillation simulation ability to upload a .obj file as a sail (The image below is when i broke the code. i accidentally wrote =+ instead of += )"}, {"post_id": 10036, "ts": "2026-06-16T16:26:48Z", "hours": 3.6364, "text": "Nyx Devlog #2: The Curved Sail Arc Status: Nyx V2 Complete Mood: Sleep-deprived aerospace engineer Bug Count: We don’t talk about the 90° bug. So… what happened? This dev cycle started with a simple goal: “Let’s add some tilt to the sails.” Several hours later, we somehow ended up with a computational beam-riding lightsail simulator. Oops. Gaussian Beams Are Cool Nyx uses a Gaussian beam to model the laser intensity distribution. def gaussian(r): return I0 * np.exp(-2 * r 2 / w0 2) Basically: The beam is strongest at the center. The farther away you go, the weaker it gets. Nature decided lasers should have exponential decay because apparently linear wasn’t dramatic enough. Tilting the Sails The sails can now rotate about the X and Y axes. def rotateX(vector, angle): x, y, z = vector return np.array([ x, y*np.cos(angle) - z*np.sin(angle), y*np.sin(angle) + z*np.cos(angle) ]) def rotateY(vector, angle): x, y, z = vector return np.array([ x*np.cos(angle) + z*np.sin(angle), y, -x*np.sin(angle) + z*np.cos(angle) ]) This worked surprisingly well. Unlike the visualization. Introducing: The Hemisphere™ Rectangle sails were getting lonely. So Nyx gained a new geometry: class SphereLightSail(): (Yes, it’s technically a hemisphere. Naming things is hard.) The hemisphere is discretized into tiny patches that each experience radiation pressure from the laser beam. Science! Radiation Pressure Time Every tiny patch gets hit by photons. The force magnitude is calculated using: fmag = (2 * I / c) * (cosTheta**2) * dA where: I is beam intensity, c is the speed of light, cosTheta accounts for sail orientation, dA is the patch area. Translation: Tiny packets of light aggressively boop the sail. Torque Has Entered The Chat Turns out forces acting away from the center like to cause problems. tau = np.cross(position, F) Nyx now computes total torque acting on the sail. This means we can begin asking questions like: Which geometries are stable? instead of: Why is Matplotlib gaslighting me? Visualization! Nyx can now visualize sail geometries using 3D plots. scatter = ax.scatter( self.xPoints, self.yPoints, self.zPoints, c=self.intensities, cmap=‘plasma’, s=30 ) With a colorbar: fig.colorbar( scatter, ax=ax, label=‘Beam Intensity (W/m^2)’ ) And even a force vector: ax.quiver( 0, 0, 0, Force[0], Force[1], Force[2], color=‘red’, length=2, normalize=True ) It looks surprisingly professional. Until you rotate it to 90°. The Great 90° Incident At one point, Nyx decided that rotating things by 90° was optional. Several debugging sessions later: “It’s probably fine.” Nyx is now operating under the internationally recognized engineering principle of: If the physics works, Future Me can fix the plotting (ik guys, ELITE mindset). What Nyx V2 Can Do Nyx V2 ├── Gaussian beam model ✓ ├── Rectangle sail geometry ✓ ├── Hemisphere sail geometry ✓ ├── Sail tilting ✓ ├── Radiation pressure forces ✓ ├── Torque calculations ✓ ├── Intensity heatmaps ✓ └── Force vector visualization ✓ What’s Next? We’re moving beyond random shapes. Future geometries need to answer one question: Could someone actually use this as a lightsail? Possible candidates: □ Paraboloids □ Hyperboloids □ Other beam-riding geometries from literature Party hats are currently under review. Final Thoughts Nyx V2 was the phase where the project stopped feeling like a collection of scripts and started feeling like an actual research tool. Also, I now know far more about Matplotlib’s quirks than any human"}, {"post_id": 7524, "ts": "2026-06-12T15:48:47Z", "hours": 2.8322, "text": "#Devlog 001 — The Beginning of Nyx (I call the light sails Nyx, because why not) Started building the computational simulator for my project on passive beam-riding stability of interstellar lightsails. What I implemented: -A Gaussian laser beam model to simulate how beam intensity changes from the center outward. -A rectangular lightsail simulator divided into tiny surface patches. -Calculations for net force and net torque acting on the sail. -Support for changing the sail’s position relative to the beam. -Support for x-axis and y-axis tilts, allowing the sail to change orientation. -Validation tests showing that centered sails produce near-zero torque and that results converge with increasing resolution. -The beginnings of a 3D geometry engine, including a hemispherical lightsail generator using spherical coordinates. -3D visualization of the hemispherical sail to verify that the geometry was generated correctly. (Am currently working on the the force and torque calculation for the spherical sails) (The test cases are for tilted says, the first one is not tilted at all and the last one is tilted 90 degrees)"}]...
|
Title: an EPIC Light Sail Simulation by @SpaceEvee Title: an EPIC Light Sail Simulation by @SpaceEvee | Stardance
Devlogs:
#Devlog 001 — The Beginning of Nyx (I call the light sails Nyx, because why not) Started building the computational simulator for my project on passive beam-riding stability of interstellar lightsails. What I implemented: -A Gaussian laser beam model to simulate how beam intensity changes from the center outward. -A rectangular lightsail simulator divided into tiny surface patches. -Calculations for net force and net torque acting on the sail. -Support for changing the sail’s position relative to the beam. -Support for x-axis and y-axis tilts, allowing the sail to change orientation. -Validation tests showing that centered sails produce near-zero torque and that results converge with increasing resolution. -The beginnings of a 3D geometry engine, including a hemispherical lightsail generator using spherical coordinates. -3D visualization of the hemispherical sail to verify that the geometry was generated correctly. (Am currently working on the the force and torque calculation for the spherical sails) (The test cases are for tilted says, the first one is not tilted at all and the last one is tilted 90 degrees)
Nyx Devlog #2: The Curved Sail Arc Status: Nyx V2 Complete Mood: Sleep-deprived aerospace engineer Bug Count: We don’t talk about the 90° bug. So… what happened? This dev cycle started with a simple goal: “Let’s add some tilt to the sails.” Several hours later, we somehow ended up with a computational beam-riding lightsail simulator. Oops. Gaussian Beams Are Cool Nyx uses a Gaussian beam to model the laser intensity distribution. def gaussian(r): return I0 * np.exp(-2 * r 2 / w0 2) Basically: The beam is strongest at the center. The farther away you go, the weaker it gets. Nature decided lasers should have exponential decay because apparently linear wasn’t dramatic enough. Tilting the Sails The sails can now rotate about the X and Y axes. def rotateX(vector, angle): x, y, z = vector return np.array([ x, y*np.cos(angle) - z*np.sin(angle), y*np.sin(angle) + z*np.cos(angle) ]) def rotateY(vector, angle): x, y, z = vector return np.array([ x*np.cos(angle) + z*np.sin(angle), y, -x*np.sin(angle) + z*np.cos(angle) ]) This worked surprisingly well. Unlike the visualization. Introducing: The Hemisphere™ Rectangle sails were getting lonely. So Nyx gained a new geometry: class SphereLightSail(): (Yes, it’s technically a hemisphere. Naming things is hard.) The hemisphere is discretized into tiny patches that each experience radiation pressure from the laser beam. Science! Radiation Pressure Time Every tiny patch gets hit by photons. The force magnitude is calculated using: fmag = (2 * I / c) * (cosTheta**2) * dA where: I is beam intensity, c is the speed of light, cosTheta accounts for sail orientation, dA is the patch area. Translation: Tiny packets of light aggressively boop the sail. Torque Has Entered The Chat Turns out forces acting away from the center like to cause problems. tau = np.cross(position, F) Nyx now computes total torque acting on the sail. This means we can begin asking questions like: Which geometries are stable? instead of: Why is Matplotlib gaslighting me? Visualization! Nyx can now visualize sail geometries using 3D plots. scatter = ax.scatter( self.xPoints, self.yPoints, self.zPoints, c=self.intensities, cmap=‘plasma’, s=30 ) With a colorbar: fig.colorbar( scatter, ax=ax, label=‘Beam Intensity (W/m^2)’ ) And even a force vector: ax.quiver( 0, 0, 0, Force[0], Force[1], Force[2], color=‘red’, length=2, normalize=True ) It looks surprisingly professional. Until you rotate it to 90°. The Great 90° Incident At one point, Nyx decided that rotating things by 90° was optional. Several debugging sessions later: “It’s probably fine.” Nyx is now operating under the internationally recognized engineering principle of: If the physics works, Future Me can fix the plotting (ik guys, ELITE mindset). What Nyx V2 Can Do Nyx V2 ├── Gaussian beam model ✓ ├── Rectangle sail geometry ✓ ├── Hemisphere sail geometry ✓ ├── Sail tilting ✓ ├── Radiation pressure forces ✓ ├── Torque calculations ✓ ├── Intensity heatmaps ✓ └── Force vector visualization ✓ What’s Next? We’re moving beyond random shapes. Future geometries need to answer one question: Could someone actually use this as a lightsail? Possible candidates: □ Paraboloids □ Hyperboloids □ Other beam-riding geometries from literature Party hats are currently under review. Final Thoughts Nyx V2 was the phase where the project stopped feeling like a collection of scripts and started feeling like an actual research tool. Also, I now know far more about Matplotlib’s quirks than any human
Devlog 3 - NYX HAS FRIED MY BRAN btw, if you havent seen my older devlogs, you are legally obligated to do so, and if not done, the police shall come for you so, after my last devlog, added a new sail geometry, fixed A LOT OF BUGS and made the code efficient (not really) and improved the physics calculation, to a more complex force calculation engine (its not an engine, idk why i said that). also, i realized paraboloids are pretty niffty as with some dingle dangle, we can have a circular sail without even making a new class! Features i added Paraboloid geometry, cleaned up the radiation pressure code, quivers for visualization and better force equation. the force equation is now F = fmag * (2*cosTheta*normal - beamDih) (this is embarrassing, but in my code, the beam direction variable is beamDih ) Whats Next? wanna improve the visualization local force vector rendering time evolution moving sail oscillation simulation ability to upload a .obj file as a sail (The image below is when i broke the code. i accidentally wrote =+ instead of += )
Devlog - 4 YO PEOPLE, i am BACK (ts so cringe. literally nobody cares). This devlog is about how almost lost my minds migrating my simulation’s rotation calculations into Quaternions , integrating RK4 and as always solving bugs, because Nyx is filled with bugs (Oh, you dont know what Nyx is? well it is my passive beam riding light sail simulation, for a research paper im working on) Euler Angles Started Tweaking Ok so before this, Nyx used normal Euler angle rotations using thetaX and thetaY for orientation. At first it worked fine, but after longer simulations stuff started tweaking hard The sphere and paraboloid would randomly start flattening into weird pancake/disc things (which i lowkey think might be cuz matplotlib library hates me idk) , rotations started looking cursed, and the orientation slowly became unstable over time. At first I thought matplotlib was just being goofy again, but nah, the actual orientation system itself was kinda cooked (most likely) . The problem was that Euler angles are not really built for stable continuous 3D rotational dynamics. Rotations started interfering with each other and the geometry would slowly drift into nonphysical states during longer simulations.Basically Nyx had reached the point where the old orientation system just wasn’t enough anymore :(. Quaternion Migration (The Pain of ’26 ) So yeah, this devlog was basically the “quaternion suffering” update I replaced the entire orientation system with quaternions. Instead of storing orientation as separate thetaX and thetaY values, Nyx now stores orientation as a quaternion state directly integrated through RK4.This was honestly one of the biggest upgrades to the simulator so far because now orientation itself is physically simulated instead of just being fake angle accumulation and stuff. The migration was WAY more painful than expected At first literally everything exploded: infinitiesNaNsbroken, normals-cursed, and sphere geometry intensity overflows. At one point the simulator straight up started generating inf values and the sphere looked like it got compressed by a hydraulic press .The biggest issue ended up being invalid normal vectors inside the sphere mesh generation. A single broken normal could completely destroy the intensity calculations and then infect the entire simulation state with NaNs.After fixing all that, Nyx now has stable quaternion orientation. quaternion vector rotation, quaternion RK4 integration, much more stable rotational dynamics, no more gimbal-lock-type weird ahh stuff . This was really hard for me to add lol now what ? so thats what took more than 10 hours. I think my boi Nyx is doing pretty good and will help me in great magnitude for my research paper. For now at least, i wanna make a sort of UI and replace ‘matplotlib’ with smth better cuz’ I am lowkey fed up. I would also like to add a feature of mass data collection, so that there is much data to study. – that’s it for me today, I hope YOU have a great day! (BTW, i have no idea why the markdown on this devlog is so weird, i can not seem to fix it lowkey)
DEVLOG - smth im bad at remembering numbers and its been sometime too WHATS UP LOVELY PEOPLE Another Nyx devlog it is! You dont know what Nyx is? Its my light sail simulation for a paper im working on! I did some code refining and yeah lots of boring stuff. Used the Stefan–Boltzmann equilibrium approximation to estimate local surface temperature. Added a temperature mapping system based on absorbed laser intensity (Absolutely obsolete btw ): ) Fixed the paraboloid sign issue so it curved in the intended direction. -Also tried using other libraries for rendering, but MatPlotLib is the best option right now other miscellaneous stuff I cant remember honestly (Next devlog will be more detailed trust)
DEVLOG 6 (and seven soon) Its been soooooooooooooooo long since my last devlog. I had my exams and well I couldn’t much and didn’t write my devlog last time. Oh you don’t know what Nyx? It is a light sail simulation I am working on for a paper I am writing (btw there are emojis now so cool stuff got added when I was gone) NEW ADDITIONS: Introduce a materials package (Material dataclass + presets: Graphene, Aluminium, SiliconCarbide) and an analysis package with plotting helpers and an Experiment helper. Update SimMain to accept a material for each sail type, pull reflectivity/absorptivity from the material, and record max/average temperature history. Fix numeric/geometry issues: correct sphere inertia, improve normal/rotation math for sphere and paraboloid, and ensure positions use rotated local coordinates. Add multiple debug/test scripts and enable analysis plotting at the end of simLoop to visualize force, position, velocity, acceleration, angular velocity and temperature histories. I did NOT copy-paste the commit here trust. If you think I did, you're wrong Well, thats it for now, Ill put more effort in the next devlog See YALL soon (no one cares, but I care )
NYX DEVLOG MUHEHEHEHHE (NO IDEA BOUT THE INDEX) sorry for being dead for so long. i was busy with irl stuff The Simulator is ALMOST done yay I made the GUI for yall (the program is not user friendly ) and now the simulated data can FINALLY be saved into .json and .csv and some boring physics shit heres the run down: Physics World frame inertia calculation. i CORRECTED THE INERTIA TENSOR TRANSFORMATION so that angular momentum and rotational dynamics use the inertia tensor in the world frame Rotational Dynamics used the rigid body rotational equation normalised the intermediate RK4 orientation states (so yeah lots of attitude control yk) paraboloid COM and hemisphere COM were straight wrong as i found out so they are fixed now respectively GUI added a workbench/gui for the whole program (I HATE this) and in the repo i added the Read Me after two gazillion years ill say Nyx (the simulator) is done and i can ship it FINALLY after so long and start working on the paper FINALLY. btw the BEANS SHALL PREVAIL some things the 3d geometry visualization doesnt work with the gui stack so ill have to fix that and the parameter sweep doesnt work any bit. these things ill have to do before the first ship and besides ill say the same is pretty good and completed
Mini Devlog :yoooo-chat-whats-up–are-yall-ready-for-another-weekly-journal–i-hope-so-kitty-dance-mb-sorry-for-b: I completed the parameter sweep and it works (still pretty glitchy tho) and added a 3d visualisation section to the program (prolly the most visually appealing thing ) GONNA SHIP NOW YAY
Ships:
This is the first ship of an interstellar light sail simulation for a research paper I am working on. The simulation models an idealised Gaussian laser beam with a fixed nominal propagation direction along +Z. The beam settings include peak intensity (I_0), waist (w_0), wavelength (\lambda), and lateral beam-centre offsets. The sail model estimates radiation-pressure force and torque over the discretised surface, then advances translational and rotational state. The workbench records time histories so configurations can be inspected and compared. A local radiative-equilibrium calculation estimates surface temperature from absorbed illumination and the configured emissivity. Few Notes: The simulation is not very optimised so it may take some time to function on lower end PCs I have added a video performing some functions of the software in the github ReadMe. (As in the ship of my last project, many people told me to have a video as they didn’t want to download the package itself.) If there the runner throws an exception or error pop up at the end, i.e. after running the program, the data can still be accessed (plots, .json, .csv, etc.)...
|
1793199074.8100688
|
1793285474.8100688
|
|
17309
|
Slay-OS by @Mokxsh_ | Stardance
|
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T09:46:27Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? SlayOS — a fake operating system that runs entirely in your browser. built from scratch with just HTML, CSS and vanilla JS. no frameworks, no libraries, nothing. it has draggable windows, a login screen that actually remembers you, a working terminal, notes, devlogs, a coin flip that can delete your apps if you lose, and a live ASCII camera that turns your webcam into real time text art. it got way bigger than i planned lol What was challenging? building everything without any frameworks was rough. window dragging, z-index stacking, terminal logic, localStorage persistence — all of it had to be figured out from scratch. there were so many moments where something would work and then completely break something else. the ASCII cam especially took a while to get feeling smooth and actually good looking What are you proud of? honestly the ASCII cam. it was totally unnecessary and i built it anyway and it looks so cool. also the login system — the fact that your PC name shows up in the terminal prompt is such a small thing but it makes the whole OS feel surprisingly real. proud that the whole thing runs on just three files too What should people know to test it? go to { https://mokxsh404.github.io/Slay-OS/} and first thing — try Roulette if you’re feeling brave 😭 allow camera permissions for the ASCII cam and switch between the color modes. open the terminal and type help . the whole thing is more fun to just click around and explore than to be told what to do", "repo": "https://github.com/Mokxsh404/Slay-OS", "demo": "https://mokxsh404.github.io/Slay-OS/"}]...
|
[{"post_id": 10519, "ts": "202 [{"post_id": 10519, "ts": "2026-06-17T08:29:06Z", "hours": 0.0, "text": "#Devlog 3: We are DONE. 🎉 SlayOS is finally finished. One of my favorites is the new ASCII Camera. It takes your normal webcam feed and converts it into live ASCII art using letters, numbers, and symbols like @, #, %, and more. It looks surprisingly cool and gives everything that old-school hacker terminal vibe. I also added multiple display modes, so you can switch between different ASCII styles and effects depending on how cursed you want your camera feed to look. Between the Apple-inspired UI, the Roulette app that can literally delete half your applications if you lose, and now a fully functional ASCII Camera, SlayyyOS has somehow become a real operating system! Gonna Ship It Soon!"}, {"post_id": 10495, "ts": "2026-06-17T07:33:29Z", "hours": 0.0, "text": "#Devlog 2: Slay-OS is getting dangerously close to being finished! Been adding some of the final features and probably the most ridiculous one so far is the Roulette. Here’s how it works: You spin it, and if you lose… SlayOS randomly deletes half of its own applications. That’s it. No mercy. If you win, absolutely nothing happens. Is it useful? Nope. Is it funny? Prolly. I’ve attached some screenshots below so you can see how it looks in action. At this point, most of the OS is done and I’m just polishing things up before release. It’s been really fun building this project from scratch and seeing it slowly turn into a real operating system. Let me know what you think of the Roulette feature. Would you risk your apps?"}, {"post_id": 8778, "ts": "2026-06-14T16:16:32Z", "hours": 3.5817, "text": "#Devlog 1: yo gng, this is the OS that I have started developing. I have named it SlayyyOS, i tried to give it a apple inspired theme as u may see in the image. drop ur thought about it in the comment section :)"}]...
|
Title: Slay-OS by @Mokxsh_ | Stardance
Devlogs:
# Title: Slay-OS by @Mokxsh_ | Stardance
Devlogs:
#Devlog 1: yo gng, this is the OS that I have started developing. I have named it SlayyyOS, i tried to give it a apple inspired theme as u may see in the image. drop ur thought about it in the comment section :)
#Devlog 2: Slay-OS is getting dangerously close to being finished! Been adding some of the final features and probably the most ridiculous one so far is the Roulette. Here’s how it works: You spin it, and if you lose… SlayOS randomly deletes half of its own applications. That’s it. No mercy. If you win, absolutely nothing happens. Is it useful? Nope. Is it funny? Prolly. I’ve attached some screenshots below so you can see how it looks in action. At this point, most of the OS is done and I’m just polishing things up before release. It’s been really fun building this project from scratch and seeing it slowly turn into a real operating system. Let me know what you think of the Roulette feature. Would you risk your apps?
#Devlog 3: We are DONE. 🎉 SlayOS is finally finished. One of my favorites is the new ASCII Camera. It takes your normal webcam feed and converts it into live ASCII art using letters, numbers, and symbols like @, #, %, and more. It looks surprisingly cool and gives everything that old-school hacker terminal vibe. I also added multiple display modes, so you can switch between different ASCII styles and effects depending on how cursed you want your camera feed to look. Between the Apple-inspired UI, the Roulette app that can literally delete half your applications if you lose, and now a fully functional ASCII Camera, SlayyyOS has somehow become a real operating system! Gonna Ship It Soon!
Ships:
What did you make? SlayOS — a fake operating system that runs entirely in your browser. built from scratch with just HTML, CSS and vanilla JS. no frameworks, no libraries, nothing. it has draggable windows, a login screen that actually remembers you, a working terminal, notes, devlogs, a coin flip that can delete your apps if you lose, and a live ASCII camera that turns your webcam into real time text art. it got way bigger than i planned lol What was challenging? building everything without any frameworks was rough. window dragging, z-index stacking, terminal logic, localStorage persistence — all of it had to be figured out from scratch. there were so many moments where something would work and then completely break something else. the ASCII cam especially took a while to get feeling smooth and actually good looking What are you proud of? honestly the ASCII cam. it was totally unnecessary and i built it anyway and it looks so cool. also the login system — the fact that your PC name shows up in the terminal prompt is such a small thing but it makes the whole OS feel surprisingly real. proud that the whole thing runs on just three files too What should people know to test it? go to { https://mokxsh404.github.io/Slay-OS/} and first thing — try Roulette if you’re feeling brave 😭 allow camera permissions for the ASCII cam and switch between the color modes. open the terminal and type help . the whole thing is more fun to just click around and explore than to be told what to do...
|
1792878591.5552878
|
1793742591.5552878
|
|
17316
|
Birdie by @MohdSadiqUmar | Stardance
|
MohdSadiqUmar
|
1
|
3.62
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T06:49:38Z", "hours": 2.0, "multiplier": 3.46, "payout": 5, "blessing": "neutral", "text": "I made Birdie, a fun slack bot that can: tell a joke, give a random catfact for you to think about, give you a random image of an animal you choose(limited library) To check if it is working you can type /birdie-ping. If you cant seem to remember the slash commands, just type /birdie-help and a help menu will be there.", "repo": "https://github.com/Zyrox-exe/Slack-Bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B8P5DRDB3"}]...
|
[{"post_id": 10589, "ts": "202 [{"post_id": 10589, "ts": "2026-06-17T12:28:03Z", "hours": 1.62, "text": "[Devlog #3]There are a lot of other bots who can give weather data, so why would you care about Birdie, Thats what you are thinking right? RIGHT??? Well…, well…, well…, Who knows the weather better than a DAMN BIRD?……(A weather API obv!) [If you think my pfp or Birdie is cute then help me get the Macbook air M5 or else……. the birdie will always be watching you] Here’s how it works: /birdie-weathertoday shows weather for the day in a city specified by the user. Open-Meteo weather and Geocoding APIs were used. The geocoding API first converts city names to Latitude and Longitude coordinates and then these are given to open meteo to fetch the weather data."}, {"post_id": 8536, "ts": "2026-06-14T06:09:26Z", "hours": 0.7142, "text": "[Devlog #2] Today I updated my bot to give a random image of the animal-name given as argument. It looks like this: /birdie-pixel [Animal Name] Currently supported animals are: dog cat panda fox koala bird birb(cute little birds) raccoon kangaroo red_panda whale It can currently just do these: /birdie-pixel: image of an animal along with a fact /birdie-joke: tell a joke /birdie-catfact: a random fact about cats /birdie-ping: to see if it is well and good /birdie-help: a simple help menu"}, {"post_id": 8297, "ts": "2026-06-13T19:49:05Z", "hours": 0.8794, "text": "[Birdie]Today I finally competed my Slack Bot Mission. I will be adding more things to it but I just wanted to put it up their today."}]...
|
Title: Birdie by @MohdSadiqUmar | Stardance
Devlo Title: Birdie by @MohdSadiqUmar | Stardance
Devlogs:
[Birdie]Today I finally competed my Slack Bot Mission. I will be adding more things to it but I just wanted to put it up their today.
[Devlog #2] Today I updated my bot to give a random image of the animal-name given as argument. It looks like this: /birdie-pixel [Animal Name] Currently supported animals are: dog cat panda fox koala bird birb(cute little birds) raccoon kangaroo red_panda whale It can currently just do these: /birdie-pixel: image of an animal along with a fact /birdie-joke: tell a joke /birdie-catfact: a random fact about cats /birdie-ping: to see if it is well and good /birdie-help: a simple help menu
[Devlog #3]There are a lot of other bots who can give weather data, so why would you care about Birdie, Thats what you are thinking right? RIGHT??? Well…, well…, well…, Who knows the weather better than a DAMN BIRD?……(A weather API obv!) [If you think my pfp or Birdie is cute then help me get the Macbook air M5 or else……. the birdie will always be watching you] Here’s how it works: /birdie-weathertoday shows weather for the day in a city specified by the user. Open-Meteo weather and Geocoding APIs were used. The geocoding API first converts city names to Latitude and Longitude coordinates and then these are given to open meteo to fetch the weather data.
Ships:
I made Birdie, a fun slack bot that can: tell a joke, give a random catfact for you to think about, give you a random image of an animal you choose(limited library) To check if it is working you can type /birdie-ping. If you cant seem to remember the slash commands, just type /birdie-help and a help menu will be there....
|
1793263796.6384892
|
1793350196.6384892
|
|
17318
|
RemOS (WebOS) by @pksmkwe26 | Stardance
|
pksmkwe26
|
1
|
3.0
|
18
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T09:12:14Z", "hours": 3.0, "multiplier": 5.99, "payout": 18, "blessing": "neutral", "text": "I made an WebOS (RemOS). I used shadcn_flutter package for ease UI library and Windows Function with the Snap-in Functionality As well, I’ve also used Flutter InAppWebView for the IFrame Support in Apps.", "repo": "https://github.com/kwe26/remos", "demo": "https://kwe26.github.io/remos/"}]...
|
[{"post_id": 9818, "ts": "2026 [{"post_id": 9818, "ts": "2026-06-16T08:13:06Z", "hours": 2.4719, "text": "Devlog #2 . I’ve added Startup Sound . Also Calculator App and Some WebView Apps such as Paint, Wikipedia and YouTube. . And an Top Bar just like in GNOME and such . And Also Clock Widget on Home Screen as well . Thanks"}, {"post_id": 7520, "ts": "2026-06-12T15:45:33Z", "hours": 0.5039, "text": "Devlog #1 RemOS an WebOS named after Rem from Re:Zero . . Using shadcn_flutter + Flutter for Window Widgets and it even supports Windows 11’s Snap-In like Feature. . Working on Other Elements Soon! . Thanks ;;3"}]...
|
Title: RemOS (WebOS) by @pksmkwe26 | Stardance
De Title: RemOS (WebOS) by @pksmkwe26 | Stardance
Devlogs:
Devlog #1 RemOS an WebOS named after Rem from Re:Zero . . Using shadcn_flutter + Flutter for Window Widgets and it even supports Windows 11’s Snap-In like Feature. . Working on Other Elements Soon! . Thanks ;;3
Devlog #2 . I’ve added Startup Sound . Also Calculator App and Some WebView Apps such as Paint, Wikipedia and YouTube. . And an Top Bar just like in GNOME and such . And Also Clock Widget on Home Screen as well . Thanks
Ships:
I made an WebOS (RemOS). I used shadcn_flutter package for ease UI library and Windows Function with the Snap-in Functionality As well, I’ve also used Flutter InAppWebView for the IFrame Support in Apps....
|
1793141363.94684
|
1793227763.94684
|
|
17319
|
SituationBoard by @nouxinf | Stardance
|
nouxinf
|
1
|
25.0
|
276
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T12:42:35Z", "hours": 25.0, "multiplier": 11.2, "payout": 276, "blessing": "neutral", "text": "I just finished making SituationBoard a browser new tab page with widgets that can be customised and arranged to your liking. Its a big QoL improvement because it means instead of having to go to several websites to get bits of info, you can see them all on one page you can bookmark or set as a new tab page in your browser. Current widgets included are: Cat picture Oil price Clock Weather XKCD comic It runs in express and some of the widgets use an external API that needs a backend route. Its designed to be contributed to by others, I wrote a guide in the README on how to add new widgets. There’s a light and dark mode too. Hope you enjoy it!", "repo": "https://github.com/nouxinf/situationboard", "demo": "https://situationboard.nouxinf.net/"}]...
|
[{"post_id": 70550, "ts": "202 [{"post_id": 70550, "ts": "2026-09-19T10:59:06Z", "hours": 0.6653, "text": "Devlog 8 of Situationboard In this devlog I put the website on my VPS at https://situationboard.nouxinf.net/ and wrote a README. The readme contains some info on the project, screenshots, and instructions on how to add a new widget to the site for contributors."}, {"post_id": 70233, "ts": "2026-09-18T19:18:21Z", "hours": 1.0689, "text": "Devlog 7 of Situationboard In this devlog I added a dark mode that saves your preferences but also loads them from your system settings. I made a bunch of CSS tweaks at the same time to make it look a bit nicer too."}, {"post_id": 70175, "ts": "2026-09-18T16:54:18Z", "hours": 1.1975, "text": "Devlog 6 of Situationboard In this devlog I added a MacOS style menu bar at the top for some buttons. The SB icon and the Situationboard spans just refresh the page, the attribution button opens a dialog with credits to open source libraries and images used (APIs are credited separately in the add widgets screen). The about screen also has info. Next up is just dark mode, some docs + readme then I’m ready to ship"}, {"post_id": 69245, "ts": "2026-09-16T17:33:32Z", "hours": 2.3942, "text": "Devlog 5 of Situationboard In this devlog I added an XKCD widget, which fetches the latest XKCD comic through a proxy on the backend, and you can navigate through comics with the previous, next, random and custom number buttons. You can also click on the image to zoom in on the comic and the caption. What I’m adding next is dark mode and an attribution screen to give credit to all sources used."}, {"post_id": 68165, "ts": "2026-09-14T17:09:37Z", "hours": 1.7006, "text": "Devlog 4 of Situationboard In this devlog I finished the weather widget. I added icons that I reused from an earlier stardance project, weatherstation that map to WMO codes, and it shows a forecast with min-max temperatures for the next 7 days. Next up I’ll do an xkcd widget and dark mode"}, {"post_id": 67217, "ts": "2026-09-13T08:29:05Z", "hours": 7.3411, "text": "Devlog 3 of Situationboard Things I added: A live time widget A description window for each widget that uses a markdown renderer A customisable weather widget (currently only shows temperature and location but will be updated with week-ahead forecast) Things I might add soon: dark mode xkcd widget?"}, {"post_id": 11390, "ts": "2026-06-18T17:15:06Z", "hours": 3.125, "text": "Devlog 2 of Situationboard Things I’ve worked on since the last devlog: A simple favicon - just “SB” in the Inter font that’s used across the site An Oil Price widget. It originally used data from oilpriceapi.com however I realised that they didn’t provide a permanent free tier, so I switched to the US government’s (of course) EIA (Energy Information Administration) which updates less frequently (half a week or so?). Loading animation for catpic widget from Wikimedia Commons Next up I’ll probably work on a description button in the Add Widgets dialog as it already has a widgets.json entry, its just unused."}, {"post_id": 9344, "ts": "2026-06-15T17:58:45Z", "hours": 7.1142, "text": "Devlog #1 of SituationBoard After finishing the hackpad project, I was trying to find new project ideas to do, so I asked my dad for a QoL improvement that could be made. He mentioned wanting a “portal” to have loads of different information widgets on one screen, as for a lot of things you need to go across different websites. Coincidentally, the Frictionless mission was running, whose “mission” you could say was exactly that - to make something that improves quality of life. The name “SituationBoard” is a play on those “monitor the situation” dashboards that government officials or OSINT people use. The data on here as you can probably see by the screenshot is probably not of as high importance [citation needed]. I decided to make this in express.js, and plain HTML to keep it minimal. The backend will handle most widgets that need APIs, as those wih API keys shouldn’t be sent on the frontend because the keys will be leaked. The first widget added is a random cat picture from a service called Cat-as-a-Service (cataas.com). This didn’t require the backend as cataas doesnt take credentials so it was a good first widget. Next up I’ll write more widgets like weather, prices of various commodities like oil and holiday calendars, and add more features, potentially styling the website up along the way."}]...
|
Title: SituationBoard by @nouxinf | Stardance
Dev Title: SituationBoard by @nouxinf | Stardance
Devlogs:
Devlog #1 of SituationBoard After finishing the hackpad project, I was trying to find new project ideas to do, so I asked my dad for a QoL improvement that could be made. He mentioned wanting a “portal” to have loads of different information widgets on one screen, as for a lot of things you need to go across different websites. Coincidentally, the Frictionless mission was running, whose “mission” you could say was exactly that - to make something that improves quality of life. The name “SituationBoard” is a play on those “monitor the situation” dashboards that government officials or OSINT people use. The data on here as you can probably see by the screenshot is probably not of as high importance [citation needed]. I decided to make this in express.js, and plain HTML to keep it minimal. The backend will handle most widgets that need APIs, as those wih API keys shouldn’t be sent on the frontend because the keys will be leaked. The first widget added is a random cat picture from a service called Cat-as-a-Service (cataas.com). This didn’t require the backend as cataas doesnt take credentials so it was a good first widget. Next up I’ll write more widgets like weather, prices of various commodities like oil and holiday calendars, and add more features, potentially styling the website up along the way.
Devlog 2 of Situationboard Things I’ve worked on since the last devlog: A simple favicon - just “SB” in the Inter font that’s used across the site An Oil Price widget. It originally used data from oilpriceapi.com however I realised that they didn’t provide a permanent free tier, so I switched to the US government’s (of course) EIA (Energy Information Administration) which updates less frequently (half a week or so?). Loading animation for catpic widget from Wikimedia Commons Next up I’ll probably work on a description button in the Add Widgets dialog as it already has a widgets.json entry, its just unused.
Devlog 3 of Situationboard Things I added: A live time widget A description window for each widget that uses a markdown renderer A customisable weather widget (currently only shows temperature and location but will be updated with week-ahead forecast) Things I might add soon: dark mode xkcd widget?
Devlog 4 of Situationboard In this devlog I finished the weather widget. I added icons that I reused from an earlier stardance project, weatherstation that map to WMO codes, and it shows a forecast with min-max temperatures for the next 7 days. Next up I’ll do an xkcd widget and dark mode
Devlog 5 of Situationboard In this devlog I added an XKCD widget, which fetches the latest XKCD comic through a proxy on the backend, and you can navigate through comics with the previous, next, random and custom number buttons. You can also click on the image to zoom in on the comic and the caption. What I’m adding next is dark mode and an attribution screen to give credit to all sources used.
Devlog 6 of Situationboard In this devlog I added a MacOS style menu bar at the top for some buttons. The SB icon and the Situationboard spans just refresh the page, the attribution button opens a dialog with credits to open source libraries and images used (APIs are credited separately in the add widgets screen). The about screen also has info. Next up is just dark mode, some docs + readme then I’m ready to ship
Devlog 7 of Situationboard In this devlog I added a dark mode that saves your preferences but also loads them from your system settings. I made a bunch of CSS tweaks at the same time to make it look a bit nicer too.
Devlog 8 of Situationboard In this devlog I put the website on my VPS at https://situationboard.nouxinf.net/ and wrote a README. The readme contains some info on the project, screenshots, and instructions on how to add a new widget to the site for contributors.
Ships:
I just finished making SituationBoard a browser new tab page with widgets that can be customised and arranged to your liking. Its a big QoL improvement because it means instead of having to go to several websites to get bits of info, you can see them all on one page you can bookmark or set as a new tab page in your browser. Current widgets included are: Cat picture Oil price Clock Weather XKCD comic It runs in express and some of the widgets use an external API that needs a backend route. Its designed to be contributed to by others, I wrote a guide in the README on how to add new widgets. There’s a light and dark mode too. Hope you enjoy it!...
|
1793148579.5631049
|
1793234979.5631049
|
|
17333
|
Frictionless by @NITHIN | Stardance
|
NITHIN
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T20:20:11Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "QuickBox What I made: QuickBox is a single-page web toolbox that bundles together several small everyday tools into one place. It includes a clipboard history manager, text formatting tools, a quick to-do list, a unit converter, a password generator, a snippet vault for saving reusable text, timestamp tools, and a QR code generator. What was challenging: Getting all the different tools to work smoothly together on one page without conflicts was tricky, especially making sure each tool saved its own data separately using local storage so nothing got mixed up. Building the unit converter to handle multiple categories like length, weight, time, data size, and temperature with correct formulas also took careful testing. What I am proud of: I am proud of how everything works together as one cohesive toolbox instead of separate scattered tools. The clipboard history and snippet vault in particular solve a real repetitive annoyance, since copying and reusing text normally takes several steps, and here it is reduced to a single click. How to test it: Open the quickbox.html file in any modern browser. No installation, login, or setup is required. All data is stored locally in the browser, so your clipboard history, to-do list, and snippets will be saved even after closing and reopening the page. Try saving some text to the clipboard history or snippet vault, then click on an item to copy it instantly. You can also try the text tools by pasting text and applying transformations, or generate a password and a QR code to see the results update immediately.", "repo": "https://github.com/Nithinfgs/frictionless", "demo": "https://astonishing-souffle-d55679.netlify.app/"}]...
|
[{"post_id": 8101, "ts": "2026 [{"post_id": 8101, "ts": "2026-06-13T14:58:37Z", "hours": 4.0, "text": "8:28 PMClaude responded: Reworked the UI with a bold neo-brutalist style (cream background, hard shadows, custom fonts) instead of the generic AI look.Reworked the UI with a bold neo-brutalist style (cream background, hard shadows, custom fonts) instead of the generic AI look. Added two new features: a Pomodoro-style Focus Timer and a Decision Picker tool."}, {"post_id": 7664, "ts": "2026-06-12T20:09:55Z", "hours": 2.0, "text": "Just finished"}, {"post_id": 7529, "ts": "2026-06-12T16:01:50Z", "hours": 0.0, "text": "Building the frontend foundation. Refactoring CSS, polishing the design system, and making the dashboard responsive across screen sizes."}]...
|
Title: Frictionless by @NITHIN | Stardance
Devlog Title: Frictionless by @NITHIN | Stardance
Devlogs:
Building the frontend foundation. Refactoring CSS, polishing the design system, and making the dashboard responsive across screen sizes.
Just finished
8:28 PMClaude responded: Reworked the UI with a bold neo-brutalist style (cream background, hard shadows, custom fonts) instead of the generic AI look.Reworked the UI with a bold neo-brutalist style (cream background, hard shadows, custom fonts) instead of the generic AI look. Added two new features: a Pomodoro-style Focus Timer and a Decision Picker tool.
Ships:
QuickBox What I made: QuickBox is a single-page web toolbox that bundles together several small everyday tools into one place. It includes a clipboard history manager, text formatting tools, a quick to-do list, a unit converter, a password generator, a snippet vault for saving reusable text, timestamp tools, and a QR code generator. What was challenging: Getting all the different tools to work smoothly together on one page without conflicts was tricky, especially making sure each tool saved its own data separately using local storage so nothing got mixed up. Building the unit converter to handle multiple categories like length, weight, time, data size, and temperature with correct formulas also took careful testing. What I am proud of: I am proud of how everything works together as one cohesive toolbox instead of separate scattered tools. The clipboard history and snippet vault in particular solve a real repetitive annoyance, since copying and reusing text normally takes several steps, and here it is reduced to a single click. How to test it: Open the quickbox.html file in any modern browser. No installation, login, or setup is required. All data is stored locally in the browser, so your clipboard history, to-do list, and snippets will be saved even after closing and reopening the page. Try saving some text to the clipboard history or snippet vault, then click on an item to copy it instantly. You can also try the text tools by pasting text and applying transformations, or generate a password and a QR code to see the results update immediately....
|
1792882140.0688329
|
1793746140.0688329
|
|
17334
|
Frictionless by @harshithn | Stardance
|
harshithn
|
1
|
11.11
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T20:55:03Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built recall, a local full-text search tool for macOS. It indexes your clipboard, browser history, Apple Notes, shell history, mail, Slack, and Discord into a single SQLite FTS5 database, then lets you search all of it with one CLI command or a small web UI. The problem: I kept losing 5 minutes bouncing between Slack search, Gmail search, browser history, and Notes whenever I tried to find something I knew I’d seen. recall kills that — one box, sub-second results, 100% local. No cloud, no account, no telemetry. What was challenging: macOS permissions (Apple Notes + Mail need Full Disk Access and fail silently without it). I added a recall doctor command that surfaces these failures with actionable hints. Thread-safety in SQLite when the HTTP server and indexer share a connection. The vanilla-JS web UI had to feel snappy without a framework — no React, no build step, just debounced fetch + DOM. What I’m proud of: the whole thing is ~2,500 lines of Python plus a 200-line vanilla-JS web UI. Zero external runtime dependencies. Anyone can read the whole thing in an hour and trust it with their data because the data never leaves the machine. To try it: git clone https://github.com/hnelabhotla-boop/Recall , run ./install.sh, then recall ui to open the search box.", "repo": "https://github.com/hnelabhotla-boop/Recall", "demo": "https://github.com/hnelabhotla-boop/Recall#readme"}]...
|
[{"post_id": 9387, "ts": "2026 [{"post_id": 9387, "ts": "2026-06-15T18:44:49Z", "hours": 4.2847, "text": "URL search results show the real page title now, not the raw link Before: https://news.ycombinator.com/item?id=12345 After: Show HN: I built X – Hacker News Cached locally so URLs only get fetched once New recall titles command to backfill the whole index No new dependencies"}, {"post_id": 9213, "ts": "2026-06-15T13:54:58Z", "hours": 3.3175, "text": "Fixed silent failure on Apple Notes (and Mail) indexing Root cause: macOS Full Disk Access not granted to the user’s terminal New recall setup command — click-by-step walkthrough Detects your terminal (Terminal, iTerm, Warp, VS Code) Opens the right System Settings pane Reminds you to quit+reopen the terminal (the #1 gotcha) recall doctor now points to recall setup instead of just saying “Full Disk Access required” Apple Notes indexer now logs a clear permission warning instead of failing silently README gets a new “macOS permissions (one-time, ~30 seconds)” section Triggered by reviewer feedback: “I couldn’t get indexing notes to work”"}, {"post_id": 8996, "ts": "2026-06-15T00:09:49Z", "hours": 0.5086, "text": "Fixed the issue regarding the try project button"}, {"post_id": 8909, "ts": "2026-06-14T20:33:18Z", "hours": 0.8881, "text": "New recall doctor subcommand that runs a full setup check Verifies Python, SQLite FTS5, pbpaste, osascript, index DB Checks every data source — clipboard, browsers, notes, mail, chat Surfaces permission-gated failures (e.g. Apple Notes needs Full Disk Access) Found 7 issues on my own machine that the indexer was silently skipping Use it whenever something feels off: recall doctor"}, {"post_id": 7538, "ts": "2026-06-12T16:17:55Z", "hours": 1.8083, "text": "Built recall, a local full-text search tool for macOS. One hotkey searches your clipboard, browser history, Notes, shell, mail, and chat apps at once. No cloud, no account everything stays on your Sub-2-second searches across 1,600+ items on first run."}]...
|
Title: Frictionless by @harshithn | Stardance
Dev Title: Frictionless by @harshithn | Stardance
Devlogs:
Built recall, a local full-text search tool for macOS. One hotkey searches your clipboard, browser history, Notes, shell, mail, and chat apps at once. No cloud, no account everything stays on your Sub-2-second searches across 1,600+ items on first run.
New recall doctor subcommand that runs a full setup check Verifies Python, SQLite FTS5, pbpaste, osascript, index DB Checks every data source — clipboard, browsers, notes, mail, chat Surfaces permission-gated failures (e.g. Apple Notes needs Full Disk Access) Found 7 issues on my own machine that the indexer was silently skipping Use it whenever something feels off: recall doctor
Fixed the issue regarding the try project button
Fixed silent failure on Apple Notes (and Mail) indexing Root cause: macOS Full Disk Access not granted to the user’s terminal New recall setup command — click-by-step walkthrough Detects your terminal (Terminal, iTerm, Warp, VS Code) Opens the right System Settings pane Reminds you to quit+reopen the terminal (the #1 gotcha) recall doctor now points to recall setup instead of just saying “Full Disk Access required” Apple Notes indexer now logs a clear permission warning instead of failing silently README gets a new “macOS permissions (one-time, ~30 seconds)” section Triggered by reviewer feedback: “I couldn’t get indexing notes to work”
URL search results show the real page title now, not the raw link Before: https://news.ycombinator.com/item?id=12345 After: Show HN: I built X – Hacker News Cached locally so URLs only get fetched once New recall titles command to backfill the whole index No new dependencies
Ships:
I built recall, a local full-text search tool for macOS. It indexes your clipboard, browser history, Apple Notes, shell history, mail, Slack, and Discord into a single SQLite FTS5 database, then lets you search all of it with one CLI command or a small web UI. The problem: I kept losing 5 minutes bouncing between Slack search, Gmail search, browser history, and Notes whenever I tried to find something I knew I’d seen. recall kills that — one box, sub-second results, 100% local. No cloud, no account, no telemetry. What was challenging: macOS permissions (Apple Notes + Mail need Full Disk Access and fail silently without it). I added a recall doctor command that surfaces these failures with actionable hints. Thread-safety in SQLite when the HTTP server and indexer share a connection. The vanilla-JS web UI had to feel snappy without a framework — no React, no build step, just debounced fetch + DOM. What I’m proud of: the whole thing is ~2,500 lines of Python plus a 200-line vanilla-JS web UI. Zero external runtime dependencies. Anyone can read the whole thing in an hour and trust it with their data because the data never leaves the machine. To try it: git clone https://github.com/hnelabhotla-boop/Recall , run ./install.sh, then recall ui to open the search box....
|
1793224595.46787
|
1793310995.46787
|
|
17345
|
Button Pusher by @Mottl | Stardance
|
Mottl
|
1
|
4.0
|
8
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T19:52:55Z", "hours": 4.0, "multiplier": 2.15, "payout": 8, "blessing": "neutral", "text": "This is a cool little demo that I made in React (specifically Vite), to learn React! You push the button, and… stuff happens. What happens? It’s on the site! Go check it out now!", "repo": "https://github.com/Mottlprograms/ButtonPresserDemo", "demo": "https://mottlprograms.github.io/ButtonPresserDemo/"}]...
|
[{"post_id": 12114, "ts": "202 [{"post_id": 12114, "ts": "2026-06-19T19:46:52Z", "hours": 1.2803, "text": "I am ready to ship! I have finished the demo (playable now!), I have learned a LOT about how to use React, and I have learned how to ship it with Github Pages (it was very annoying), and now I am ready to move onto greater things (like working on ClubHub)!"}, {"post_id": 11887, "ts": "2026-06-19T11:32:04Z", "hours": 2.5628, "text": "Now I get why everyone likes JSX based tools. I have INFINITE POWER now. ClubHub is gonna be a breeze!"}]...
|
Title: Button Pusher by @Mottl | Stardance
Devlog Title: Button Pusher by @Mottl | Stardance
Devlogs:
Now I get why everyone likes JSX based tools. I have INFINITE POWER now. ClubHub is gonna be a breeze!
I am ready to ship! I have finished the demo (playable now!), I have learned a LOT about how to use React, and I have learned how to ship it with Github Pages (it was very annoying), and now I am ready to move onto greater things (like working on ClubHub)!
Ships:
This is a cool little demo that I made in React (specifically Vite), to learn React! You push the button, and… stuff happens. What happens? It’s on the site! Go check it out now!...
|
1793141668.7099583
|
1793228068.7099583
|
|
17351
|
MediaPad by @lix | Stardance
|
lix
|
1
|
12.0
|
60
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T12:53:25Z", "hours": 12.0, "multiplier": 5.0, "payout": 60, "blessing": "neutral", "text": "What I made MediaPad is a Hackpad project that helps you control playing media on your computer. PCB was designed in KiCad 10 and case was designed in Blender instead of Fusion 360. What was challenging The most challenging thing was assembly. From the beginning, my original PCB was broken. I accidentally used a wrong symbol in schematics which had flipped pins. I didn’t know this, so I soldered everything and found out it didn’t work. I tried to troubleshoot it with multimeter and I found out I was receiving 0.5v so I tried to destroy some traces to find the cause, but I didn’t. At the end I ended up looking at the PCB editor and found out that I used wrong symbol. All I had to do was to unsolder everything, put it on a new PCB and solder those LEDs flipped. And it really worked! What I am proud of That everything works as intended. I am especially very proud of that even though the PCB was designed wrong, I could still make it work. How to try it Open mediapad’s GitHub page, download it, and send gerbers.zip file to PCB manufacturer and print all of those .stl files with the count written in README.md file. When you’ll solder everything and it will be prepared to flash firmware, download firmware the the correct amount of LEDs (more info in README.md) and hold Boot button on XIAO and plug in the USB-C cable. Then just drag the correct firmware into it and you’re done! Just don’t forget to also run the companion app!", "repo": "https://github.com/lixtheyt/mediapad", "demo": ""}]...
|
[{"post_id": 56817, "ts": "202 [{"post_id": 56817, "ts": "2026-08-28T18:59:56Z", "hours": 2.1553, "text": "mediapad is done! Yeah… Mediapad is finally done! Today I was putting the heat inserts into the bottom case and built it. I also drew some symbols onto the keycaps so I know which key is which. I was again playing with firmware a lot with Claude. I am finally happy with it. Tomorrow, I will update the whole GitHub, right now, there are already commited changes such as PCB, Case, firmware so that all is already latest, but I still need to update documentation so README, source files of companion app, etc… So yeah, that should be done tomorrow."}, {"post_id": 56265, "ts": "2026-08-27T23:26:17Z", "hours": 9.7886, "text": "Soldered, Editing a lot of stuff and new features in firmware. I soldered MediaPad. Someone added a wrong LED symbol to KiCad so my PCB was absolutely wrong, I soldered it wrong, and I thought, all was lost. But then I realized I just needed to flip the LEDs. But I had to put them on a new PCB, because I damaged the first one while troubleshooting why it isn’t working. I found it out after closer inspection of PCB plan. Funny is also that, that on Hackpad page under Approved Parts they say 20 of the LEDs. But I got only 16. So encoder has no LEDs! I had to compile a second firmware that is made only for 16 LEDs but also the original one with 20 LEDs. So now you can also build a one that doesn’t have encoder LEDs! Like I do!!! Everything now on GitHub page is correct! I even had to multiple time edit the CAD and .stl files, because in reality they weren’t really good and I used up all of my filament so I hope I won’t have to edit something again, otherwise I am cooked. Firmware has now better interface, so user is happy. Yeah, that’s all. But it was also a mess to do it. Well, check out the GitHub Repository. I will push changes tomorrow because it’s really late and this took 2days. I didn’t record a lot of things because they were happening in a small intervals and the troubleshooting and I just thought why to record it and I was also scared that staff could refuse that footage."}, {"post_id": 33530, "ts": "2026-07-23T15:53:09Z", "hours": 3.8444, "text": "I have finally finished my Mediapad and sent a submission for it! I’ve been also experimenting with a stand for the Mediapad via Claude MCP and tried to print it on my 3D printer, but it looks that for now we will not add a stand :D I’ve also done few changes to the case and PCB. Right now I am waiting until my submission passes through and it gets delivered to me so I can build it!"}, {"post_id": 33214, "ts": "2026-07-22T22:20:38Z", "hours": 7.6389, "text": "I had to completly redo the casing for my MediaPad because the old one wasn’t that good and also had issues with M3 screws where the dimensions were incorrect and it also wasn’t designed for heat inserts. This revision has correct dimensions for screws and heat inserts and also uses the latest layout of my PCB. I have also redesigned the layout of my PCB as mentioned where I removed one mounting hole because I found out that it’d be better to use it for the case holding+PCB around the Hackpad than somewhere in center holding primary the PCB and making pressure at the 3D printed case at center (could lead to bends)."}, {"post_id": 32626, "ts": "2026-07-21T22:17:19Z", "hours": 7.3836, "text": "I have created a case & firmware for my Mediapad. Becuase I am not really good at modeling, the case isn’t much but I think that it is my best work in Blender yet!"}, {"post_id": 31053, "ts": "2026-07-19T04:15:21Z", "hours": 6.15, "text": "I just finished making PCB & Schematics. I am right now preparing to continue making Case and Firmware… Not really looking forward to making the case because modeling is the biggest pain for me that has ever existed."}, {"post_id": 30905, "ts": "2026-07-18T21:41:45Z", "hours": 3.3006, "text": "I have just completed the basic tutorial for Hackpad but right after this I am going to begin to work on schematic for Spotify Board that will as the name may say… be for Spotify App control :)"}]...
|
Title: MediaPad by @lix | Stardance
Devlogs:
I ha Title: MediaPad by @lix | Stardance
Devlogs:
I have just completed the basic tutorial for Hackpad but right after this I am going to begin to work on schematic for Spotify Board that will as the name may say… be for Spotify App control :)
I just finished making PCB & Schematics. I am right now preparing to continue making Case and Firmware… Not really looking forward to making the case because modeling is the biggest pain for me that has ever existed.
I have created a case & firmware for my Mediapad. Becuase I am not really good at modeling, the case isn’t much but I think that it is my best work in Blender yet!
I had to completly redo the casing for my MediaPad because the old one wasn’t that good and also had issues with M3 screws where the dimensions were incorrect and it also wasn’t designed for heat inserts. This revision has correct dimensions for screws and heat inserts and also uses the latest layout of my PCB. I have also redesigned the layout of my PCB as mentioned where I removed one mounting hole because I found out that it’d be better to use it for the case holding+PCB around the Hackpad than somewhere in center holding primary the PCB and making pressure at the 3D printed case at center (could lead to bends).
I have finally finished my Mediapad and sent a submission for it! I’ve been also experimenting with a stand for the Mediapad via Claude MCP and tried to print it on my 3D printer, but it looks that for now we will not add a stand :D I’ve also done few changes to the case and PCB. Right now I am waiting until my submission passes through and it gets delivered to me so I can build it!
Soldered, Editing a lot of stuff and new features in firmware. I soldered MediaPad. Someone added a wrong LED symbol to KiCad so my PCB was absolutely wrong, I soldered it wrong, and I thought, all was lost. But then I realized I just needed to flip the LEDs. But I had to put them on a new PCB, because I damaged the first one while troubleshooting why it isn’t working. I found it out after closer inspection of PCB plan. Funny is also that, that on Hackpad page under Approved Parts they say 20 of the LEDs. But I got only 16. So encoder has no LEDs! I had to compile a second firmware that is made only for 16 LEDs but also the original one with 20 LEDs. So now you can also build a one that doesn’t have encoder LEDs! Like I do!!! Everything now on GitHub page is correct! I even had to multiple time edit the CAD and .stl files, because in reality they weren’t really good and I used up all of my filament so I hope I won’t have to edit something again, otherwise I am cooked. Firmware has now better interface, so user is happy. Yeah, that’s all. But it was also a mess to do it. Well, check out the GitHub Repository. I will push changes tomorrow because it’s really late and this took 2days. I didn’t record a lot of things because they were happening in a small intervals and the troubleshooting and I just thought why to record it and I was also scared that staff could refuse that footage.
mediapad is done! Yeah… Mediapad is finally done! Today I was putting the heat inserts into the bottom case and built it. I also drew some symbols onto the keycaps so I know which key is which. I was again playing with firmware a lot with Claude. I am finally happy with it. Tomorrow, I will update the whole GitHub, right now, there are already commited changes such as PCB, Case, firmware so that all is already latest, but I still need to update documentation so README, source files of companion app, etc… So yeah, that should be done tomorrow.
Ships:
What I made MediaPad is a Hackpad project that helps you control playing media on your computer. PCB was designed in KiCad 10 and case was designed in Blender instead of Fusion 360. What was challenging The most challenging thing was assembly. From the beginning, my original PCB was broken. I accidentally used a wrong symbol in schematics which had flipped pins. I didn’t know this, so I soldered everything and found out it didn’t work. I tried to troubleshoot it with multimeter and I found out I was receiving 0.5v so I tried to destroy some traces to find the cause, but I didn’t. At the end I ended up looking at the PCB editor and found out that I used wrong symbol. All I had to do was to unsolder everything, put it on a new PCB and solder those LEDs flipped. And it really worked! What I am proud of That everything works as intended. I am especially very proud of that even though the PCB was designed wrong, I could still make it work. How to try it Open mediapad’s GitHub page, download it, and send gerbers.zip file to PCB manufacturer and print all of those .stl files with the count written in README.md file. When you’ll solder everything and it will be prepared to flash firmware, download firmware the the correct amount of LEDs (more info in README.md) and hold Boot button on XIAO and plug in the USB-C cable. Then just drag the correct firmware into it and you’re done! Just don’t forget to also run the companion app!...
|
1793274733.1810355
|
1793361133.1810355
|
|
17359
|
Frictionless by @Mohamed_Ayadi | Stardance
|
Mohamed_Ayadi
|
1
|
13.0
|
134
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T19:38:25Z", "hours": 10.0, "multiplier": 13.37, "payout": 134, "blessing": "neutral", "text": "What did you make? I built Recovery Quest, a web application that transforms recovery and healthy habits into an RPG-style experience. The idea started with a simple observation: taking care of ourselves often feels invisible. You sleep well, eat better, stay active, and make healthier choices, yet it’s hard to see the impact of those small decisions from day to day. Without visible progress, motivation fades. Recovery Quest changes that. Users log information related to their sleep, nutrition, and exercise, and the system evaluates their overall recovery state. Instead of just displaying numbers, the app presents meaningful feedback through game-inspired progression systems. Healthy choices contribute to a sense of growth, turning recovery from an abstract concept into a journey users can actively follow. The goal is simple: make taking care of yourself feel rewarding instead of repetitive. What was challenging? The biggest challenge was designing a system that felt encouraging without oversimplifying recovery. Recovery isn’t determined by a single factor. Sleep, nutrition, and physical activity all influence how someone feels, and I had to think carefully about how these elements should work together to generate useful feedback. Another challenge was balancing the RPG elements. I didn’t want Recovery Quest to become just another game with health-themed decorations. The progression systems had to support the main purpose of the app: helping users understand and improve their recovery habits. Finding that balance between engagement and meaningful feedback required a lot of experimentation and refinement. What are you proud of? I’m proud that Recovery Quest makes something invisible feel visible. Recovery is difficult to measure in everyday life. Most people don’t notice the cumulative effect of sleeping better, eating more consistently, or exercising regularly until weeks later. Recovery Quest highlights those small victories. Users can see how their habits influence their recovery state and receive feedback that encourages them to continue building healthier routines. I’m also proud that I built the entire experience as a fully functional front-end application using HTML, CSS, and JavaScript, combining recovery tracking with engaging progression mechanics into one cohesive experience. Most of all, I’m proud of creating something that encourages people to take care of themselves through positive reinforcement rather than guilt or pressure. What should people know so they can test your project? To test Recovery Quest, simply explore the app by entering information related to your sleep, nutrition, and exercise habits. The system will evaluate your recovery state and provide feedback based on the choices you make. One important thing to note is that this version does not include a backend. If you log out, your data will be lost. Despite this limitation, the complete recovery experience can still be explored, allowing users to understand the core idea behind Recovery Quest: turning the journey toward better well-being into an adventure worth returning to.", "repo": "https://github.com/medayedi123/Recvoery-Quest", "demo": "https://recoveryquest.netlify.app/"}]...
|
[{"post_id": 10982, "ts": "202 [{"post_id": 10982, "ts": "2026-06-18T00:24:36Z", "hours": 2.0, "text": "Pat I ch Notes: The “I Fixed That Annoying Stuff” UpdateHey everyone! I just rolled out a new update based on the feedback you gave me. I tackled the biggest pain points today:Security Upgrade: No more hardcoded keys! Quality of Life: Training Tab: Lookin’ cleaner and more organized. Nav Hover: Fixed that weird hover glitch that followed you between tabs.Check it out and let me know if you find anything else."}, {"post_id": 9035, "ts": "2026-06-15T02:21:35Z", "hours": 1.0, "text": "Recovery Quest — Devlog #1: the night this started making sense Before Recovery Quest was Recovery Quest, it was just a mess on my screen at 1am. Idk how else to put it. Let me back up. The thought that wouldn’t leave me alone I was lying in bed, half scrolling, half thinking about nothing, when this question hit me: why does real life not have a UI? In games I always know exactly where I stand — health bar, stamina, XP, buffs, debuffs. In real life? Nothing. You wake up and wonder “am I tired or just overthinking it” with no number to check. You’re just guessing your own state all the time. That bugged me more than it should’ve. So I got up, opened my editor, and started typing with zero plan. The first version was straight up homework What I had after that session was, with love, extremely boring: a sleep input, a workout log, a nutrition counter. Nothing different from the five other apps I’d already downloaded and quit on. Next day I looked at it and realized I’d just rebuilt what I was trying to escape. Cool. Great use of a night. The dumb little rename that fixed everything I changed “sleep hours” to “recovery impact.” I changed “workout logged” to “training XP gained.” Same data, same numbers, just different words. But seeing “+40 training XP” instead of “workout logged” did something weird. It stopped feeling like filling a form and started feeling like leveling up a character. Who is also me. That tiny change became the seed for everything else. Once that clicked, I couldn’t stop After that night I started designing systems for my own life without meaning to. The dashboard became home base. Streaks became a combo system. Recovery score became a condition stat. None of it was planned, it just kept clicking into place. I kept things simple: vanilla HTML, CSS, JS, no backend, everything in local storage. I didn’t want infrastructure slowing down an idea I wasn’t even sure about. And I didn’t want another fitness tracker. There are too many, and most feel identical after week two. I wanted something else — not “what did you do today,” but “what happens if you keep doing this?” The feature that hit harder than expected Memory Map started as a throwaway idea — one photo per day on a timeline. But scrolling back through it later actually hit me. You can watch yourself change, not as stats, but as a person. I went back two weeks once and just stared at it. Claude was in the room for basically all of this I didn’t build this alone. That night I had a feeling and no idea how to turn it into code. So I talked it through with Claude like a senior dev sitting next to me at 1am asking, “okay, but how would this work?” It helped me figure out recovery scoring, XP scaling, and why my first streak logic kept breaking. Stuff I’d been stuck on just got untangled. I still wrote the code and made every decision about what this was. But that back-and-forth made me willing to try things I’d normally overthink out of. Why I kept going Every time I added something, I’d get that “wait… this is actually a system now” feeling. Rare enough that I kept chasing it. Recovery Quest was still rough and missing most of what it has now, but it already changed how I think about habits — not as a checklist, but as mechanics affecting other mechanics. Hard to go back once you see it that way. Devlog #1, done. More soon."}, {"post_id": 8078, "ts": "2026-06-13T14:18:24Z", "hours": 10.0, "text": "Recovery Quest — Devlog #1: the night this started making sense Before Recovery Quest was Recovery Quest, it was just a mess on my screen at 1am. Idk how else to put it. Let me back up. The thought that wouldn’t leave me alone I was lying in bed, half scrolling, half thinking about nothing, when this question hit me: why does real life not have a UI? In games I always know exactly where I stand — health bar, stamina, XP, buffs, debuffs. In real life? Nothing. You wake up and wonder “am I tired or just overthinking it” with no number to check. You’re just guessing your own state all the time. That bugged me more than it should’ve. So I got up, opened my editor, and started typing with zero plan. The first version was straight up homework What I had after that session was, with love, extremely boring: a sleep input, a workout log, a nutrition counter. Nothing different from the five other apps I’d already downloaded and quit on. Next day I looked at it and realized I’d just rebuilt what I was trying to escape. Cool. Great use of a night. The dumb little rename that fixed everything I changed “sleep hours” to “recovery impact.” I changed “workout logged” to “training XP gained.” Same data, same numbers, just different words. But seeing “+40 training XP” instead of “workout logged” did something weird. It stopped feeling like filling a form and started feeling like leveling up a character. Who is also me. That tiny change became the seed for everything else. Once that clicked, I couldn’t stop After that night I started designing systems for my own life without meaning to. The dashboard became home base. Streaks became a combo system. Recovery score became a condition stat. None of it was planned, it just kept clicking into place. I kept things simple: vanilla HTML, CSS, JS, no backend, everything in local storage. I didn’t want infrastructure slowing down an idea I wasn’t even sure about. And I didn’t want another fitness tracker. There are too many, and most feel identical after week two. I wanted something else — not “what did you do today,” but “what happens if you keep doing this?” The feature that hit harder than expected Memory Map started as a throwaway idea — one photo per day on a timeline. But scrolling back through it later actually hit me. You can watch yourself change, not as stats, but as a person. I went back two weeks once and just stared at it. Claude was in the room for basically all of this I didn’t build this alone. That night I had a feeling and no idea how to turn it into code. So I talked it through with Claude like a senior dev sitting next to me at 1am asking, “okay, but how would this work?” It helped me figure out recovery scoring, XP scaling, and why my first streak logic kept breaking. Stuff I’d been stuck on just got untangled. I still wrote the code and made every decision about what this was. But that back-and-forth made me willing to try things I’d normally overthink out of. Why I kept going Every time I added something, I’d get that “wait… this is actually a system now” feeling. Rare enough that I kept chasing it. Recovery Quest was still rough and missing most of what it has now, but it already changed how I think about habits — not as a checklist, but as mechanics affecting other mechanics. Hard to go back once you see it that way. Devlog #1, done. More soon."}]...
|
Title: Frictionless by @Mohamed_Ayadi | Stardance
Title: Frictionless by @Mohamed_Ayadi | Stardance
Devlogs:
Recovery Quest — Devlog #1: the night this started making sense Before Recovery Quest was Recovery Quest, it was just a mess on my screen at 1am. Idk how else to put it. Let me back up. The thought that wouldn’t leave me alone I was lying in bed, half scrolling, half thinking about nothing, when this question hit me: why does real life not have a UI? In games I always know exactly where I stand — health bar, stamina, XP, buffs, debuffs. In real life? Nothing. You wake up and wonder “am I tired or just overthinking it” with no number to check. You’re just guessing your own state all the time. That bugged me more than it should’ve. So I got up, opened my editor, and started typing with zero plan. The first version was straight up homework What I had after that session was, with love, extremely boring: a sleep input, a workout log, a nutrition counter. Nothing different from the five other apps I’d already downloaded and quit on. Next day I looked at it and realized I’d just rebuilt what I was trying to escape. Cool. Great use of a night. The dumb little rename that fixed everything I changed “sleep hours” to “recovery impact.” I changed “workout logged” to “training XP gained.” Same data, same numbers, just different words. But seeing “+40 training XP” instead of “workout logged” did something weird. It stopped feeling like filling a form and started feeling like leveling up a character. Who is also me. That tiny change became the seed for everything else. Once that clicked, I couldn’t stop After that night I started designing systems for my own life without meaning to. The dashboard became home base. Streaks became a combo system. Recovery score became a condition stat. None of it was planned, it just kept clicking into place. I kept things simple: vanilla HTML, CSS, JS, no backend, everything in local storage. I didn’t want infrastructure slowing down an idea I wasn’t even sure about. And I didn’t want another fitness tracker. There are too many, and most feel identical after week two. I wanted something else — not “what did you do today,” but “what happens if you keep doing this?” The feature that hit harder than expected Memory Map started as a throwaway idea — one photo per day on a timeline. But scrolling back through it later actually hit me. You can watch yourself change, not as stats, but as a person. I went back two weeks once and just stared at it. Claude was in the room for basically all of this I didn’t build this alone. That night I had a feeling and no idea how to turn it into code. So I talked it through with Claude like a senior dev sitting next to me at 1am asking, “okay, but how would this work?” It helped me figure out recovery scoring, XP scaling, and why my first streak logic kept breaking. Stuff I’d been stuck on just got untangled. I still wrote the code and made every decision about what this was. But that back-and-forth made me willing to try things I’d normally overthink out of. Why I kept going Every time I added something, I’d get that “wait… this is actually a system now” feeling. Rare enough that I kept chasing it. Recovery Quest was still rough and missing most of what it has now, but it already changed how I think about habits — not as a checklist, but as mechanics affecting other mechanics. Hard to go back once you see it that way. Devlog #1, done. More soon.
Recovery Quest — Devlog #1: the night this started making sense Before Recovery Quest was Recovery Quest, it was just a mess on my screen at 1am. Idk how else to put it. Let me back up. The thought that wouldn’t leave me alone I was lying in bed, half scrolling, half thinking about nothing, when this question hit me: why does real life not have a UI? In games I always know exactly where I stand — health bar, stamina, XP, buffs, debuffs. In real life? Nothing. You wake up and wonder “am I tired or just overthinking it” with no number to check. You’re just guessing your own state all the time. That bugged me more than it should’ve. So I got up, opened my editor, and started typing with zero plan. The first version was straight up homework What I had after that session was, with love, extremely boring: a sleep input, a workout log, a nutrition counter. Nothing different from the five other apps I’d already downloaded and quit on. Next day I looked at it and realized I’d just rebuilt what I was trying to escape. Cool. Great use of a night. The dumb little rename that fixed everything I changed “sleep hours” to “recovery impact.” I changed “workout logged” to “training XP gained.” Same data, same numbers, just different words. But seeing “+40 training XP” instead of “workout logged” did something weird. It stopped feeling like filling a form and started feeling like leveling up a character. Who is also me. That tiny change became the seed for everything else. Once that clicked, I couldn’t stop After that night I started designing systems for my own life without meaning to. The dashboard became home base. Streaks became a combo system. Recovery score became a condition stat. None of it was planned, it just kept clicking into place. I kept things simple: vanilla HTML, CSS, JS, no backend, everything in local storage. I didn’t want infrastructure slowing down an idea I wasn’t even sure about. And I didn’t want another fitness tracker. There are too many, and most feel identical after week two. I wanted something else — not “what did you do today,” but “what happens if you keep doing this?” The feature that hit harder than expected Memory Map started as a throwaway idea — one photo per day on a timeline. But scrolling back through it later actually hit me. You can watch yourself change, not as stats, but as a person. I went back two weeks once and just stared at it. Claude was in the room for basically all of this I didn’t build this alone. That night I had a feeling and no idea how to turn it into code. So I talked it through with Claude like a senior dev sitting next to me at 1am asking, “okay, but how would this work?” It helped me figure out recovery scoring, XP scaling, and why my first streak logic kept breaking. Stuff I’d been stuck on just got untangled. I still wrote the code and made every decision about what this was. But that back-and-forth made me willing to try things I’d normally overthink out of. Why I kept going Every time I added something, I’d get that “wait… this is actually a system now” feeling. Rare enough that I kept chasing it. Recovery Quest was still rough and missing most of what it has now, but it already changed how I think about habits — not as a checklist, but as mechanics affecting other mechanics. Hard to go back once you see it that way. Devlog #1, done. More soon.
Pat I ch Notes: The “I Fixed That Annoying Stuff” UpdateHey everyone! I just rolled out a new update based on the feedback you gave me. I tackled the biggest pain points today:Security Upgrade: No more hardcoded keys! Quality of Life: Training Tab: Lookin’ cleaner and more organized. Nav Hover: Fixed that weird hover glitch that followed you between tabs.Check it out and let me know if you find anything else.
Ships:
What did you make? I built Recovery Quest, a web application that transforms recovery and healthy habits into an RPG-style experience. The idea started with a simple observation: taking care of ourselves often feels invisible. You sleep well, eat better, stay active, and make healthier choices, yet it’s hard to see the impact of those small decisions from day to day. Without visible progress, motivation fades. Recovery Quest changes that. Users log information related to their sleep, nutrition, and exercise, and the system evaluates their overall recovery state. Instead of just displaying numbers, the app presents meaningful feedback through game-inspired progression systems. Healthy choices contribute to a sense of growth, turning recovery from an abstract concept into a journey users can actively follow. The goal is simple: make taking care of yourself feel rewarding instead of repetitive. What was challenging? The biggest challenge was designing a system that felt encouraging without oversimplifying recovery. Recovery isn’t determined by a single factor. Sleep, nutrition, and physical activity all influence how someone feels, and I had to think carefully about how these elements should work together to generate useful feedback. Another challenge was balancing the RPG elements. I didn’t want Recovery Quest to become just another game with health-themed decorations. The progression systems had to support the main purpose of the app: helping users understand and improve their recovery habits. Finding that balance between engagement and meaningful feedback required a lot of experimentation and refinement. What are you proud of? I’m proud that Recovery Quest makes something invisible feel visible. Recovery is difficult to measure in everyday life. Most people don’t notice the cumulative effect of sleeping better, eating more consistently, or exercising regularly until weeks later. Recovery Quest highlights those small victories. Users can see how their habits influence their recovery state and receive feedback that encourages them to continue building healthier routines. I’m also proud that I built the entire experience as a fully functional front-end application using HTML, CSS, and JavaScript, combining recovery tracking with engaging progression mechanics into one cohesive experience. Most of all, I’m proud of creating something that encourages people to take care of themselves through positive reinforcement rather than guilt or pressure. What should people know so they can test your project? To test Recovery Quest, simply explore the app by entering information related to your sleep, nutrition, and exercise habits. The system will evaluate your recovery state and provide feedback based on the choices you make. One important thing to note is that this version does not include a backend. If you log out, your data will be lost. Despite this limitation, the complete recovery experience can still be explored, allowing users to understand the core idea behind Recovery Quest: turning the journey toward better well-being into an adventure worth returning to....
|
1792878801.1486173
|
1793742801.1486173
|
|
17368
|
Tappy by @SirYanni | Stardance
|
SirYanni
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T04:18:19Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Tappy, an open-source NFC business card generator that lets you create a customizable digital business card and export everything needed to host it yourself. The 3 major quality-of-life improvements are: No subscription or platform lock-in One export instead of multiple manual steps No web development required One of the more challenging parts was getting the generated files, vCard, QR code and profile data to work together reliably while keeping the whole process client-side. I also spent time making the editor responsive and handling invalid input and edge cases. I’m especially proud that Tappy is a complete, usable workflow rather than just a generator: you can create a card, export it, host it yourself and connect the resulting URL to an NFC tag.", "repo": "https://github.com/siryanni/Tappy", "demo": "https://siryanni.github.io/Tappy/"}]...
|
[{"post_id": 58643, "ts": "202 [{"post_id": 58643, "ts": "2026-08-31T04:06:32Z", "hours": 0.7186, "text": "Final adjustments Today I did the last fixes for ship no1! While I am already excited to see what ya’ll have to say, I can promise there is way more to come."}, {"post_id": 53018, "ts": "2026-08-23T12:21:43Z", "hours": 0.3367, "text": "Welcome to the team! From now on, the Modern Corporate Styling comes with it’s own companion, Tappy dressed up real nice for all the occasions he might meet new people! Just select “Modern Corporate” when creating your custom HTML, and he’ll be there. I hope that he’ll watch many new connections form in his fresh attire!"}, {"post_id": 52707, "ts": "2026-08-23T00:22:06Z", "hours": 1.4828, "text": "Introducing: Tappy! The new mascot Today, I could proudly roll out Tappy, a new face for the Card-Editor. Integration took longer than expected, because getting it into the Export-HTML required encoding him into Base64 and then packaging that into the JS-File, but it all worked out! Disclaimer: Tappy the Fox was refined by AI. Sketches and prompting all done by me. PS.: Landing Page still to be redone!"}, {"post_id": 23715, "ts": "2026-07-06T20:26:18Z", "hours": 0.6581, "text": "Landing Page Today I made a quick Landing Page mockup (!!!) using AI. I will later on make it on my own, but I needed to check how I’ll design it and make it work with pages, and just don’t have enough time today to write the testing page by hand. Again, please excuse and i’ll change it later. Hope you like it though, as the design will probably stay pretty much the same."}, {"post_id": 22421, "ts": "2026-07-04T21:34:30Z", "hours": 0.9314, "text": "Internal changes While nothing has changed from the outside, I have moved the inline styling from HTML to it’s own css, which I should’ve done in the first place. I did it today (while on vacation), because I’m planning on doing a massive redesign of the Editor, which is just way easier with HTML,CSS and JS all on their own. Thanks for reading!"}, {"post_id": 8347, "ts": "2026-06-13T21:26:58Z", "hours": 0.5528, "text": "#Devlog 2 Did not manage to get done as much today, but I did add 2 new Designs. #Whats new: There are now to more Design: “Dark Hacker” and “Sunset Minimal”. Dark Hacker is supposed to give off a CLI-Kind of Vibe using a black/green color scheme, while Sunset Minimal is made considering HackClubs Design Language and colors. #Hope you enjoy it!"}, {"post_id": 7591, "ts": "2026-06-12T18:12:43Z", "hours": 1.4358, "text": "Tappy Devlog Quick update on what changed and what’s next for the project. What’s Done Cleaned up the repo: Removed my personal test card files so no private data is public. New landing page: Renamed editor.html to index.html . Now the editor loads instantly when you open the link. Live on GitHub Pages: The app is officially live and working at: https://siryanni.github.io/Tappy/ Fixed export bug: Updated script.js so the downloaded ZIP still contains a clean index.html for your NFC card, without messing up the editor. Next Steps Test the generated .vcf contact cards on different iOS and Android phones to make sure it saves perfectly everywhere. Add an option to inject custom CSS styles directly from the editor before exporting."}]...
|
Title: Tappy by @SirYanni | Stardance
Devlogs:
Ta Title: Tappy by @SirYanni | Stardance
Devlogs:
Tappy Devlog Quick update on what changed and what’s next for the project. What’s Done Cleaned up the repo: Removed my personal test card files so no private data is public. New landing page: Renamed editor.html to index.html . Now the editor loads instantly when you open the link. Live on GitHub Pages: The app is officially live and working at: https://siryanni.github.io/Tappy/ Fixed export bug: Updated script.js so the downloaded ZIP still contains a clean index.html for your NFC card, without messing up the editor. Next Steps Test the generated .vcf contact cards on different iOS and Android phones to make sure it saves perfectly everywhere. Add an option to inject custom CSS styles directly from the editor before exporting.
#Devlog 2 Did not manage to get done as much today, but I did add 2 new Designs. #Whats new: There are now to more Design: “Dark Hacker” and “Sunset Minimal”. Dark Hacker is supposed to give off a CLI-Kind of Vibe using a black/green color scheme, while Sunset Minimal is made considering HackClubs Design Language and colors. #Hope you enjoy it!
Internal changes While nothing has changed from the outside, I have moved the inline styling from HTML to it’s own css, which I should’ve done in the first place. I did it today (while on vacation), because I’m planning on doing a massive redesign of the Editor, which is just way easier with HTML,CSS and JS all on their own. Thanks for reading!
Landing Page Today I made a quick Landing Page mockup (!!!) using AI. I will later on make it on my own, but I needed to check how I’ll design it and make it work with pages, and just don’t have enough time today to write the testing page by hand. Again, please excuse and i’ll change it later. Hope you like it though, as the design will probably stay pretty much the same.
Introducing: Tappy! The new mascot Today, I could proudly roll out Tappy, a new face for the Card-Editor. Integration took longer than expected, because getting it into the Export-HTML required encoding him into Base64 and then packaging that into the JS-File, but it all worked out! Disclaimer: Tappy the Fox was refined by AI. Sketches and prompting all done by me. PS.: Landing Page still to be redone!
Welcome to the team! From now on, the Modern Corporate Styling comes with it’s own companion, Tappy dressed up real nice for all the occasions he might meet new people! Just select “Modern Corporate” when creating your custom HTML, and he’ll be there. I hope that he’ll watch many new connections form in his fresh attire!
Final adjustments Today I did the last fixes for ship no1! While I am already excited to see what ya’ll have to say, I can promise there is way more to come.
Ships:
I built Tappy, an open-source NFC business card generator that lets you create a customizable digital business card and export everything needed to host it yourself. The 3 major quality-of-life improvements are: No subscription or platform lock-in One export instead of multiple manual steps No web development required One of the more challenging parts was getting the generated files, vCard, QR code and profile data to work together reliably while keeping the whole process client-side. I also spent time making the editor responsive and handling invalid input and edge cases. I’m especially proud that Tappy is a complete, usable workflow rather than just a generator: you can create a card, export it, host it yourself and connect the resulting URL to an NFC tag....
|
1793249675.3320403
|
1793336075.3320403
|
|
17377
|
Vector the slack bot by @Aaryaman | Stardance
|
Aaryaman
|
1
|
5.0
|
75
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T11:53:10Z", "hours": 5.0, "multiplier": 14.33, "payout": 75, "blessing": "neutral", "text": "Vector is a multi purpose Slack bot for the Hack Club workspace. There are a total of 16 things that vector can do, one of them being @vector which triggers an AI chat powered by Meta’s llama 3.1 8b instant. I faced 3 challenges: a. Deploying to Nest, I had never used ssh before but the guide helped me. I was troubled by the stuff which wasn’t in the guide for example I didn’t know that I had to create the .config/systemd path myself, my mind was stuck on “cd ~/.confog” and moreover I had to install npm and git. b. THE REMINDERS FEATURE, this took the longest time because I faced so many bugs (which were my fault). The local reminders.json file wasn’t being updated which led to me receiving DMs from Vector every single minute. c. AI Chat, my initial prompt was so bad lol, the llm wasn’t using channel context properly, and to differentiate between thread context history and channel history. I am most proud of the reminders feature. I recommend trying /vector-help or just @vector to get started with the bot in it’s testing channel linked as the demo link.", "repo": "https://github.com/genix2600/Vector-slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BA980GU1Z"}]...
|
[{"post_id": 8635, "ts": "2026 [{"post_id": 8635, "ts": "2026-06-14T11:12:19Z", "hours": 1.3025, "text": "Devlog #4 (Day 3) Vector can talk now 🗣️🗣️ Added vector mentions, just @vector and say anything you like, it’s powered by groq and it also pulls the last 10 messages from the chat or thread for context. “Tries” to use real names instead of user ids but that is still under progress. Replies in threads 👍 and I wrote a proper README, edited package.json/package-lock.json as the names wasn’t updated there LIST OF ALL CURRENT COMMANDS: /vector-ping /vector-weather /vector-define /vector-remind /vector-reminders /vector-unremind /vector-apod /vector-earth /vector-github /vector-leetcode /vector-catfact /vector-joke /vector-hello /vector-about /vector-help @vector Total: 16 Now all i have to do is find a better weather api as someone told me that wttr.in isn’t that accurate and I also have to still make changes to the groq section, specifically the prompts and id formatting and how it reads the context"}, {"post_id": 8224, "ts": "2026-06-13T17:59:34Z", "hours": 2.1531, "text": "Devlog #3 (end of day 2) VECTOR HAS BEEN DEPLOYED 🎊 (nest application got approved) man deployment took quite some time, I ran into a few problems, I created the path for systemd which i assumed was already supposed to exist, i installed git, node, npm, etc… Added more meaningful slack commands: REMINDERS!!! a. reminders are stored in a JSON database and periodically checks for reminders that are due. When the scheduled time arrives, the bot shoots a dm to the user b. the time though has to be in UTC, working on that WEATHER! type ur city and boom DEFINE! defines any word you want minor changes: /vector-about: links to github repo and this project updated /vector-help of course there is APOD video support better command ui LIST OF ALL CURRENT COMMANDS: /vector-ping - Check if Vector is online /vector-weather - Get current weather information for a city /vector-define - Look up dictionary definitions /vector-remind “” YYYY-MM-DD HH:MM - Create a reminder (UTC) /vector-reminders - List your active reminders /vector-unremind - Cancel a reminder /vector-apod- NASA Astronomy Picture of the Day /vector-earth - Latest EPIC Earth image from NASA /vector-github - View GitHub profile information and recent repositories /vector-leetcode - Get today’s LeetCode Daily Challenge /vector-catfact - Random cat fact /vector-joke - Random joke /vector-hello - Say hello to Vector /vector-about`- Information about Vector, creator links, and project pages /vector-help - Display all available commands Total: 15"}, {"post_id": 7909, "ts": "2026-06-13T06:01:35Z", "hours": 1.0475, "text": "Devlog #2 (Day 2) Vector has officially been used by other humans in the slack workspace, yay Since the last devlog, I have added: /vector-apod /vector-earth /vector-github /vector-leetcode I also built Slack Block Kit messages with images, allowing Vector to render images directly in chat instead of just showing a URL. Had to debug the /vector-earth command a LOT but realized that my GET request url was wrong 😭 Current command list: /vector-ping /vector-hello /vector-catfact /vector-joke /vector-apod /vector-earth /vector-github /vector-leetcode /vector-help I still need to host it on Nest though"}, {"post_id": 7611, "ts": "2026-06-12T18:35:20Z", "hours": 0.735, "text": "Devlog #1 Started work on Vector the Slack bot So far I’ve: followed the tutorial 😭 Added slash commands: /vector-ping /vector-catfact /vector-joke /vector-hello /vector-help Added global error handling Today was Day 1 of building this bot. I have 0 experience making slack bots but I’ve made a few discord bots before. It’s not much yet but I’ll take it."}]...
|
Title: Vector the slack bot by @Aaryaman | Stardan Title: Vector the slack bot by @Aaryaman | Stardance
Devlogs:
Devlog #1 Started work on Vector the Slack bot So far I’ve: followed the tutorial 😭 Added slash commands: /vector-ping /vector-catfact /vector-joke /vector-hello /vector-help Added global error handling Today was Day 1 of building this bot. I have 0 experience making slack bots but I’ve made a few discord bots before. It’s not much yet but I’ll take it.
Devlog #2 (Day 2) Vector has officially been used by other humans in the slack workspace, yay Since the last devlog, I have added: /vector-apod /vector-earth /vector-github /vector-leetcode I also built Slack Block Kit messages with images, allowing Vector to render images directly in chat instead of just showing a URL. Had to debug the /vector-earth command a LOT but realized that my GET request url was wrong 😭 Current command list: /vector-ping /vector-hello /vector-catfact /vector-joke /vector-apod /vector-earth /vector-github /vector-leetcode /vector-help I still need to host it on Nest though
Devlog #3 (end of day 2) VECTOR HAS BEEN DEPLOYED 🎊 (nest application got approved) man deployment took quite some time, I ran into a few problems, I created the path for systemd which i assumed was already supposed to exist, i installed git, node, npm, etc… Added more meaningful slack commands: REMINDERS!!! a. reminders are stored in a JSON database and periodically checks for reminders that are due. When the scheduled time arrives, the bot shoots a dm to the user b. the time though has to be in UTC, working on that WEATHER! type ur city and boom DEFINE! defines any word you want minor changes: /vector-about: links to github repo and this project updated /vector-help of course there is APOD video support better command ui LIST OF ALL CURRENT COMMANDS: /vector-ping - Check if Vector is online /vector-weather - Get current weather information for a city /vector-define - Look up dictionary definitions /vector-remind “” YYYY-MM-DD HH:MM - Create a reminder (UTC) /vector-reminders - List your active reminders /vector-unremind - Cancel a reminder /vector-apod- NASA Astronomy Picture of the Day /vector-earth - Latest EPIC Earth image from NASA /vector-github - View GitHub profile information and recent repositories /vector-leetcode - Get today’s LeetCode Daily Challenge /vector-catfact - Random cat fact /vector-joke - Random joke /vector-hello - Say hello to Vector /vector-about`- Information about Vector, creator links, and project pages /vector-help - Display all available commands Total: 15
Devlog #4 (Day 3) Vector can talk now 🗣️🗣️ Added vector mentions, just @vector and say anything you like, it’s powered by groq and it also pulls the last 10 messages from the chat or thread for context. “Tries” to use real names instead of user ids but that is still under progress. Replies in threads 👍 and I wrote a proper README, edited package.json/package-lock.json as the names wasn’t updated there LIST OF ALL CURRENT COMMANDS: /vector-ping /vector-weather /vector-define /vector-remind /vector-reminders /vector-unremind /vector-apod /vector-earth /vector-github /vector-leetcode /vector-catfact /vector-joke /vector-hello /vector-about /vector-help @vector Total: 16 Now all i have to do is find a better weather api as someone told me that wttr.in isn’t that accurate and I also have to still make changes to the groq section, specifically the prompts and id formatting and how it reads the context
Ships:
Vector is a multi purpose Slack bot for the Hack Club workspace. There are a total of 16 things that vector can do, one of them being @vector which triggers an AI chat powered by Meta’s llama 3.1 8b instant. I faced 3 challenges: a. Deploying to Nest, I had never used ssh before but the guide helped me. I was troubled by the stuff which wasn’t in the guide for example I didn’t know that I had to create the .config/systemd path myself, my mind was stuck on “cd ~/.confog” and moreover I had to install npm and git. b. THE REMINDERS FEATURE, this took the longest time because I faced so many bugs (which were my fault). The local reminders.json file wasn’t being updated which led to me receiving DMs from Vector every single minute. c. AI Chat, my initial prompt was so bad lol, the llm wasn’t using channel context properly, and to differentiate between thread context history and channel history. I am most proud of the reminders feature. I recommend trying /vector-help or just @vector to get started with the bot in it’s testing channel linked as the demo link....
|
1793202806.912761
|
1793289206.912761
|
|
17384
|
Physical HD2 stimm by @WilliDih123 | Stardance
|
WilliDih123
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T18:30:28Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a super cool stimm from helldivers 2 that actually stimms you in game. I couldn’t really get a sceenshot if it in action but I will get a screenshot of the stl. Just to add I used ai to write the code. Above all else though get ready to spread some liberty (Stimms are not adictive - study from permacure ).", "repo": "https://github.com/WilliD123/Helldivers-2-Stimm", "demo": ""}]...
|
[{"post_id": 8957, "ts": "2026 [{"post_id": 8957, "ts": "2026-06-14T22:12:23Z", "hours": 0.4361, "text": "Making a Stand"}, {"post_id": 8915, "ts": "2026-06-14T20:50:01Z", "hours": 0.9647, "text": "Soldering 2 wires, adding the code and testing"}, {"post_id": 8836, "ts": "2026-06-14T18:11:17Z", "hours": 0.5856, "text": "Adding the injector"}, {"post_id": 7953, "ts": "2026-06-13T08:37:59Z", "hours": 1.2408, "text": "Finishing the main body and electronics housing"}, {"post_id": 7746, "ts": "2026-06-12T22:48:13Z", "hours": 1.7367, "text": "Part One Of The Main Body"}]...
|
Title: Physical HD2 stimm by @WilliDih123 | Starda Title: Physical HD2 stimm by @WilliDih123 | Stardance
Devlogs:
Part One Of The Main Body
Finishing the main body and electronics housing
Adding the injector
Soldering 2 wires, adding the code and testing
Making a Stand
Ships:
I made a super cool stimm from helldivers 2 that actually stimms you in game. I couldn’t really get a sceenshot if it in action but I will get a screenshot of the stl. Just to add I used ai to write the code. Above all else though get ready to spread some liberty (Stimms are not adictive - study from permacure )....
|
1793127214.1389024
|
1793213614.1389024
|
|
17392
|
AeroStrike by @aamir_pa2009 | Stardance
|
aamir_pa2009
|
1
|
1.99
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T19:49:23Z", "hours": 0.0, "multiplier": 4.97, "payout": 2, "blessing": "neutral", "text": "I made a plane fighter game where you sink enemy NPC cruisers. What was challenging was learning how to integrate all the files into one file to make it run more smoothly and how to host the game. I plan on adding chat to the game and a multiplayer.", "repo": "https://github.com/AamirKPathan/AeroStrike", "demo": "https://aamir-pa2009.itch.io/aerostrike"}]...
|
[{"post_id": 9646, "ts": "2026 [{"post_id": 9646, "ts": "2026-06-16T01:44:06Z", "hours": 0.2581, "text": "Changelog - AeroStrike All notable changes to this project will be documented in this file. [1.2.0] - 2026-06-15 Added Scoring System : Implemented a comprehensive scoring system. +500 points for destroying enemy jets. +2000 points for sinking the enemy cruiser. +100 bonus points for every flare burst conserved at the end of a mission. HUD Updates : Added a real-time score display to the top-left HUD. End Screens : Victory and Game Over screens now display the final score. Disorientation Mechanics : Player : Rapid high-G turns (7 direction changes) now cause a 5-second stall and fire lockout with a “DISORIENTED” HUD warning. Missiles : Incoming missiles can now be disoriented by 4 sharp evasion turns when in close proximity, causing them to lose their lock. Changed Enemy Missile Visuals : Enemy missiles (from both jets and the cruiser) now match the geometry of friendly missiles but are colored red ( 0xff3333 ) for clear identification. Combat Balance : Enemy jets and the cruiser now have a 10-second cooldown between homing missile launches. Friendly carrier defense missiles now deal 0 damage but continue to track and explode on targets for visual atmosphere. Camera System : Refined the follow-camera to be closer and more dynamic, improving visibility and the sense of speed. Enemy AI : Fixed a bug where enemy aircraft were stationary; they now correctly patrol and engage in dogfights. Fixed Enemy Jet Orientation : Corrected the nose orientation of enemy jets so they face forward during flight. Spawn Logic : Adjusted enemy spawn distances and visibility for better engagement flow. Carrier Defense : Restored the carrier’s missile launch logic after it was temporarily removed. [1.1.0] - 2026-06-15 Added Flare System : Added a flare limit of 10 bursts per sortie. HUD Counter : Added a “FLARES” counter to the status panel. Refill Logic : Landing on the carrier now fully replenishes flares along with health and missiles. Fixed Enemy Missile Geometry : Updated enemy projectiles to use proper 3D missile models instead of simple spheres."}, {"post_id": 8821, "ts": "2026-06-14T17:41:00Z", "hours": 1.7283, "text": "Devlog – Major Update to AeroStrike Hey everyone! I just pushed a big update to AeroStrike, and I wanted to share what’s new, what I fixed, and what I learned while improving the project. ✨ What’s New • New Enemy Jets + AI I added simple enemy fighters that chase the player, turn toward you, and fire homing missiles. This helped me learn more about vector math, direction interpolation, and basic pursuit behavior. • Homing Missiles Enemy missiles now track the player smoothly instead of flying straight. They steer using direction lerping and have a warning indicator when they get close. • Flares (Countermeasures) You can now deploy flares to distract incoming missiles. Missiles will retarget flares if they get close enough. • Carrier HP + Bomb Damage The enemy cruiser now has a proper health system. Bombs deal damage, and the cruiser sinks when its HP reaches zero. • Radar System I added a 2D radar that shows: Enemy jets The enemy cruiser This taught me how to convert world coordinates into UI positions. • Landing + Rearming You can land on the carrier to repair and restock bombs. This added a fun gameplay loop and made the mission feel more complete. 🎮 Controls Fixes The Up/Down pitch controls were broken before — they now work properly. Pitching feels smoother and more responsive. 🎨 CSS Overhaul I completely reworked the UI styling: Cleaner HUD Minimal, modern look Consistent color theme Better spacing and readability Subtle glow effects for a “fighter jet” feel This makes the game look more polished and easier to read during gameplay."}, {"post_id": 7648, "ts": "2026-06-12T19:46:44Z", "hours": 0.3775, "text": "Finally Finished my First Game, One Large Leap For Me."}]...
|
Title: AeroStrike by @aamir_pa2009 | Stardance
De Title: AeroStrike by @aamir_pa2009 | Stardance
Devlogs:
Finally Finished my First Game, One Large Leap For Me.
Devlog – Major Update to AeroStrike Hey everyone! I just pushed a big update to AeroStrike, and I wanted to share what’s new, what I fixed, and what I learned while improving the project. ✨ What’s New • New Enemy Jets + AI I added simple enemy fighters that chase the player, turn toward you, and fire homing missiles. This helped me learn more about vector math, direction interpolation, and basic pursuit behavior. • Homing Missiles Enemy missiles now track the player smoothly instead of flying straight. They steer using direction lerping and have a warning indicator when they get close. • Flares (Countermeasures) You can now deploy flares to distract incoming missiles. Missiles will retarget flares if they get close enough. • Carrier HP + Bomb Damage The enemy cruiser now has a proper health system. Bombs deal damage, and the cruiser sinks when its HP reaches zero. • Radar System I added a 2D radar that shows: Enemy jets The enemy cruiser This taught me how to convert world coordinates into UI positions. • Landing + Rearming You can land on the carrier to repair and restock bombs. This added a fun gameplay loop and made the mission feel more complete. 🎮 Controls Fixes The Up/Down pitch controls were broken before — they now work properly. Pitching feels smoother and more responsive. 🎨 CSS Overhaul I completely reworked the UI styling: Cleaner HUD Minimal, modern look Consistent color theme Better spacing and readability Subtle glow effects for a “fighter jet” feel This makes the game look more polished and easier to read during gameplay.
Changelog - AeroStrike All notable changes to this project will be documented in this file. [1.2.0] - 2026-06-15 Added Scoring System : Implemented a comprehensive scoring system. +500 points for destroying enemy jets. +2000 points for sinking the enemy cruiser. +100 bonus points for every flare burst conserved at the end of a mission. HUD Updates : Added a real-time score display to the top-left HUD. End Screens : Victory and Game Over screens now display the final score. Disorientation Mechanics : Player : Rapid high-G turns (7 direction changes) now cause a 5-second stall and fire lockout with a “DISORIENTED” HUD warning. Missiles : Incoming missiles can now be disoriented by 4 sharp evasion turns when in close proximity, causing them to lose their lock. Changed Enemy Missile Visuals : Enemy missiles (from both jets and the cruiser) now match the geometry of friendly missiles but are colored red ( 0xff3333 ) for clear identification. Combat Balance : Enemy jets and the cruiser now have a 10-second cooldown between homing missile launches. Friendly carrier defense missiles now deal 0 damage but continue to track and explode on targets for visual atmosphere. Camera System : Refined the follow-camera to be closer and more dynamic, improving visibility and the sense of speed. Enemy AI : Fixed a bug where enemy aircraft were stationary; they now correctly patrol and engage in dogfights. Fixed Enemy Jet Orientation : Corrected the nose orientation of enemy jets so they face forward during flight. Spawn Logic : Adjusted enemy spawn distances and visibility for better engagement flow. Carrier Defense : Restored the carrier’s missile launch logic after it was temporarily removed. [1.1.0] - 2026-06-15 Added Flare System : Added a flare limit of 10 bursts per sortie. HUD Counter : Added a “FLARES” counter to the status panel. Refill Logic : Landing on the carrier now fully replenishes flares along with health and missiles. Fixed Enemy Missile Geometry : Updated enemy projectiles to use proper 3D missile models instead of simple spheres.
Ships:
I made a plane fighter game where you sink enemy NPC cruisers. What was challenging was learning how to integrate all the files into one file to make it run more smoothly and how to host the game. I plan on adding chat to the game and a multiplayer....
|
1793263844.5140486
|
1793350244.5140486
|
|
17412
|
NASA CONTROL SIM by @nishchaybhudia | Stardance
|
nishchaybhudia
|
1
|
11.0
|
182
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T13:53:55Z", "hours": 11.0, "multiplier": 16.59, "payout": 182, "blessing": "neutral", "text": "What I made I created a NASA style rocket simulator in Pygame with launch, orbit, and also mission selection. Players control a rocket, manage fuel and try to reach orbit. In orbit, they deploy satellites while avoiding debris and timing orbital windows. What was challenging … The hardest part was managing multiple game states without breaking transitions between them. Balancing the rocket physics so it feels realistic but still fun took a lot of tweaking. The angle maths for orbital windows and debris collision detection was also tricky. What I was proud of . I’m proud of the orbital gameplay because it adds timing and strategy beyond simple movement. The mission system changes difficulty in a meaningful way without changing the core game. The HUD, logs, and effects make the game feel complete and immersive. What people should know to test my project SPACE toggles the engine, R fixes engine failure, and D deploys satellites in orbit. The goal is to reach 80,000m and then deploy 3 satellites in green windows. Fuel, debris, and random failures can end a run early, so timing matters.", "repo": "https://github.com/Hidden-Ghost-123/NASA---CONTROL-DESK", "demo": "https://nbhudia.itch.io/nasa-rocket-mission-control"}]...
|
[{"post_id": 13838, "ts": "202 [{"post_id": 13838, "ts": "2026-06-22T17:57:07Z", "hours": 0.0, "text": "finshing off sharpening the UI . make changes to the corners of the screen and make the rocket launch smoother ."}, {"post_id": 8670, "ts": "2026-06-14T12:30:52Z", "hours": 1.0, "text": "Particle system: engine exhaust emits orange/yellow/red particles with lifetime, fade, and spread. Stage sep triggers a burst of white sparks. Screen shake: triggers on engine failure, stage sep, debris near miss, and collision. Magnitude + decay. Mission Select screen (new state before LAUNCH): STANDARD default settings, good starting point EXPRESS 70% fuel, fewer events, big time bonus DEBRIS STORM 9 debris pieces, more failures Mission name shown throughout HUD + logged on win. High score table: session based top 5 per mission. Shown on WIN screen; press H on menu to view all. Polished WIN screen: animated green scan lines + stars. FAIL screen: shows cause + survival time. Throttle bar added to HUD (shows ramp state). Rocket engine on indicator (green light on HUD). Debris proximity warning shown as distance readout. Orbital window “ping” animation when window opens."}, {"post_id": 8231, "ts": "2026-06-13T18:10:13Z", "hours": 0.0, "text": "• OrbitalWindow system: 3 rotating green arcs on the orbit ring. D key ONLY works when rocket is inside a window. Windows slowly drift at different speeds timing matters. A window goes grey and cooldown after each deployment. DebrisField: 5 pieces of orbiting space junk at varying radii/speeds (some retrograde). Collision = instant FAIL. Proximity warning: debris glows red + screen edge pulses when within 42px. Collision radius: 16px. Throttle upgraded: SPACE toggles, but engine now throttles UP gradually over 1 sec to add drama to ignition. Score breakdown: fuel bonus + time bonus + sat bonus, all shown separately on the WIN screen. FAIL now shows cause: collision vs fuel-out vs pad abort. Orbit panel (right-side): shows window status, debris count, and DEPLOY hint when inside a window. Max altitude cap removed: rocket keeps climbing during launch phase until fuel/orbit condition met. Random event rates tuned so failures feel fair, not cheap."}, {"post_id": 8126, "ts": "2026-06-13T15:53:35Z", "hours": 0.0, "text": "Full state machine: MENU , LAUNCH ,ORBIT , WIN / FAIL Menu screen with controls panel + mission briefing panel Animated bouncing rocket on menu with pulsing prompt Engine repair mechanic: press R after engine failure Fuel leak doesn’t insta kill; manageable drain Star field that alpha fades in as altitude climbs Rocket fins added, gravity turn tilt hinted HUD rewritten: Flight Computer panel and two progress bars (FUEL bar and ALTITUDE TO ORBIT bar during launch) Stage separation auto fires at 20 km with log message WIN / FAIL overlays with ENTER to restart ESC quits from anywhere Score calculation on win (fuel × 12 + time bonus) Satellite now drawn with solar panels Delta time physics: physics no longer frame rate dependent"}, {"post_id": 8077, "ts": "2026-06-13T14:17:08Z", "hours": 0.0, "text": "Features Added : Stage Separation System Automatic transition from Stage 1 to Stage 2 during ascent Stage specific performance changes Increased thrust and fuel capacity after separation Enhanced Orbital Behaviour Improved orbital movement calculations Orbit speed now varies based on spacecraft state Smoother transition from ascent to orbital operations Re entry Heat Framework Introduced atmospheric heating mechanics Heat accumulation and cooling systems Visual warning indicators for dangerous conditions"}, {"post_id": 8038, "ts": "2026-06-13T12:18:20Z", "hours": 1.0, "text": "focused on turning the simulator into a complete playable game with objectives, structure and also end conditions. new features added : Full mission win condition (deploy 3 satellites to succeed) Full mission fail condition (fuel depletion with no progress) Central Game controller system to manage all logic Clean separation between update and UI handling Global mission states: launch, orbit, win, fail Large scale integration of all previous systems into one loop"}, {"post_id": 7994, "ts": "2026-06-13T10:29:08Z", "hours": 1.0, "text": "introduced instability into the simulation, turning it from a controlled mission tool into a reactive system where things can go wrong. Features Added are : Random event system running during flight Engine failure state (thrust stops working) Fuel leak simulation (accelerated fuel loss) System recovery events that can restore functionality Expanded mission log integration for emergencies Status indicators reflecting system health in real time Events affecting both launch and orbit modes. i made the simulation non deterministic for the first time"}, {"post_id": 7971, "ts": "2026-06-13T09:14:19Z", "hours": 1.0, "text": "This was the first major shift in the simulators structure, moving from a single continuous launch system into a dual-mode mission environment. features added : Introduced Launch Mode … Orbit Mode switching (M key) Built a basic orbital map centered on earth Rocket now transitions from ascent simulation into orbital representation Added satellite deployment system (D key in orbit mode) Multiple satellites can now exist simultaneously in orbit Each satellite follows independent circular orbital motion around earth ( blue circle)"}, {"post_id": 7634, "ts": "2026-06-12T19:12:54Z", "hours": 1.0, "text": "focused on transforming the simulator from a basic rocket launch prototype into a proper mission control experience. features Added : Mission timer with NASA-style T+MM:SS formatting Dedicated Mission Control telemetry panel Mission event logging system Flight status tracking (On Pad, Ascent, High Ascent, Edge of Space, Space) Low fuel warning system Karman Line detection and milestone event logging Improved altitude and velocity scaling"}, {"post_id": 7584, "ts": "2026-06-12T17:59:55Z", "hours": 1.0, "text": "focused on making the simulator feel like an actual ascent through Earth’s atmosphere rather than a simple vertical movement game. Features Added : Dynamic sky that gradually transitions from blue atmosphere to the darkness of space. Basic atmospheric drag system that slows the rocket at lower altitudes. Altitude based environment changes. Space/Atmosphere status indicator in the telemetry panel. Improved flight behaviour through updated physics tuning."}, {"post_id": 7554, "ts": "2026-06-12T16:56:37Z", "hours": 0.0, "text": "I built the foundation of a NASA style mission simulator in Pygame. The focus was keeping everything simple but physically believable enough to feel like a real launch system. What i added : A controllable rocket object with basic physics Gravity pulling the rocket down constantly Thrust system controlled by toggling the engine (SPACE BAR) Fuel consumption that decreases while the engine is active Altitude and velocity tracking in real time A basic HUD showing mission telemetry (altitude, speed, fuel, engine state) Simple visual representation of a rocket with a flame animation Ground reference to give a sense of scale Result: You can now launch a rocket from the ground, control its thrust, and watch it respond to gravity and fuel constraints while tracking live telemetry like a simplified NASA test console."}]...
|
Title: NASA CONTROL SIM by @nishchaybhudia | Stard Title: NASA CONTROL SIM by @nishchaybhudia | Stardance
Devlogs:
I built the foundation of a NASA style mission simulator in Pygame. The focus was keeping everything simple but physically believable enough to feel like a real launch system. What i added : A controllable rocket object with basic physics Gravity pulling the rocket down constantly Thrust system controlled by toggling the engine (SPACE BAR) Fuel consumption that decreases while the engine is active Altitude and velocity tracking in real time A basic HUD showing mission telemetry (altitude, speed, fuel, engine state) Simple visual representation of a rocket with a flame animation Ground reference to give a sense of scale Result: You can now launch a rocket from the ground, control its thrust, and watch it respond to gravity and fuel constraints while tracking live telemetry like a simplified NASA test console.
focused on making the simulator feel like an actual ascent through Earth’s atmosphere rather than a simple vertical movement game. Features Added : Dynamic sky that gradually transitions from blue atmosphere to the darkness of space. Basic atmospheric drag system that slows the rocket at lower altitudes. Altitude based environment changes. Space/Atmosphere status indicator in the telemetry panel. Improved flight behaviour through updated physics tuning.
focused on transforming the simulator from a basic rocket launch prototype into a proper mission control experience. features Added : Mission timer with NASA-style T+MM:SS formatting Dedicated Mission Control telemetry panel Mission event logging system Flight status tracking (On Pad, Ascent, High Ascent, Edge of Space, Space) Low fuel warning system Karman Line detection and milestone event logging Improved altitude and velocity scaling
This was the first major shift in the simulators structure, moving from a single continuous launch system into a dual-mode mission environment. features added : Introduced Launch Mode … Orbit Mode switching (M key) Built a basic orbital map centered on earth Rocket now transitions from ascent simulation into orbital representation Added satellite deployment system (D key in orbit mode) Multiple satellites can now exist simultaneously in orbit Each satellite follows independent circular orbital motion around earth ( blue circle)
introduced instability into the simulation, turning it from a controlled mission tool into a reactive system where things can go wrong. Features Added are : Random event system running during flight Engine failure state (thrust stops working) Fuel leak simulation (accelerated fuel loss) System recovery events that can restore functionality Expanded mission log integration for emergencies Status indicators reflecting system health in real time Events affecting both launch and orbit modes. i made the simulation non deterministic for the first time
focused on turning the simulator into a complete playable game with objectives, structure and also end conditions. new features added : Full mission win condition (deploy 3 satellites to succeed) Full mission fail condition (fuel depletion with no progress) Central Game controller system to manage all logic Clean separation between update and UI handling Global mission states: launch, orbit, win, fail Large scale integration of all previous systems into one loop
Features Added : Stage Separation System Automatic transition from Stage 1 to Stage 2 during ascent Stage specific performance changes Increased thrust and fuel capacity after separation Enhanced Orbital Behaviour Improved orbital movement calculations Orbit speed now varies based on spacecraft state Smoother transition from ascent to orbital operations Re entry Heat Framework Introduced atmospheric heating mechanics Heat accumulation and cooling systems Visual warning indicators for dangerous conditions
Full state machine: MENU , LAUNCH ,ORBIT , WIN / FAIL Menu screen with controls panel + mission briefing panel Animated bouncing rocket on menu with pulsing prompt Engine repair mechanic: press R after engine failure Fuel leak doesn’t insta kill; manageable drain Star field that alpha fades in as altitude climbs Rocket fins added, gravity turn tilt hinted HUD rewritten: Flight Computer panel and two progress bars (FUEL bar and ALTITUDE TO ORBIT bar during launch) Stage separation auto fires at 20 km with log message WIN / FAIL overlays with ENTER to restart ESC quits from anywhere Score calculation on win (fuel × 12 + time bonus) Satellite now drawn with solar panels Delta time physics: physics no longer frame rate dependent
• OrbitalWindow system: 3 rotating green arcs on the orbit ring. D key ONLY works when rocket is inside a window. Windows slowly drift at different speeds timing matters. A window goes grey and cooldown after each deployment. DebrisField: 5 pieces of orbiting space junk at varying radii/speeds (some retrograde). Collision = instant FAIL. Proximity warning: debris glows red + screen edge pulses when within 42px. Collision radius: 16px. Throttle upgraded: SPACE toggles, but engine now throttles UP gradually over 1 sec to add drama to ignition. Score breakdown: fuel bonus + time bonus + sat bonus, all shown separately on the WIN screen. FAIL now shows cause: collision vs fuel-out vs pad abort. Orbit panel (right-side): shows window status, debris count, and DEPLOY hint when inside a window. Max altitude cap removed: rocket keeps climbing during launch phase until fuel/orbit condition met. Random event rates tuned so failures feel fair, not cheap.
Particle system: engine exhaust emits orange/yellow/red particles with lifetime, fade, and spread. Stage sep triggers a burst of white sparks. Screen shake: triggers on engine failure, stage sep, debris near miss, and collision. Magnitude + decay. Mission Select screen (new state before LAUNCH): STANDARD default settings, good starting point EXPRESS 70% fuel, fewer events, big time bonus DEBRIS STORM 9 debris pieces, more failures Mission name shown throughout HUD + logged on win. High score table: session based top 5 per mission. Shown on WIN screen; press H on menu to view all. Polished WIN screen: animated green scan lines + stars. FAIL screen: shows cause + survival time. Throttle bar added to HUD (shows ramp state). Rocket engine on indicator (green light on HUD). Debris proximity warning shown as distance readout. Orbital window “ping” animation when window opens.
finshing off sharpening the UI . make changes to the corners of the screen and make the rocket launch smoother .
Ships:
What I made I created a NASA style rocket simulator in Pygame with launch, orbit, and also mission selection. Players control a rocket, manage fuel and try to reach orbit. In orbit, they deploy satellites while avoiding debris and timing orbital windows. What was challenging … The hardest part was managing multiple game states without breaking transitions between them. Balancing the rocket physics so it feels realistic but still fun took a lot of tweaking. The angle maths for orbital windows and debris collision detection was also tricky. What I was proud of . I’m proud of the orbital gameplay because it adds timing and strategy beyond simple movement. The mission system changes difficulty in a meaningful way without changing the core game. The HUD, logs, and effects make the game feel complete and immersive. What people should know to test my project SPACE toggles the engine, R fixes engine failure, and D deploys satellites in orbit. The goal is to reach 80,000m and then deploy 3 satellites in green windows. Fuel, debris, and random failures can end a run early, so timing matters....
|
1792878804.4472704
|
1793742804.4472704
|
|
17416
|
LaunchPad by @Manenti | Stardance
|
Manenti
|
1
|
7.0
|
124
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T01:33:13Z", "hours": 7.0, "multiplier": 17.25, "payout": 124, "blessing": "neutral", "text": "I built LaunchPad, a quality-of-life web app that helps makers organize their projects and generate useful submission materials faster. The app lets users create a local profile, save project information, add links such as GitHub and demo URLs, select the type of project, and choose which resources they want to generate. From one saved project, LaunchPad can generate materials like a README template, a GitHub description, a DevLog, a submission checklist, an AI usage statement, and a project submission text. Users can also copy or download the generated resources directly from the project page. The most challenging part was connecting the whole front-end flow in a clean way. I had to work with React Router protected routes, localStorage persistence, form actions, dynamic project pages, and reusable generator functions. Another challenge was making the app feel simple and useful instead of overloaded, because the main goal was to remove friction from a repetitive workflow. I am most proud of being able to apply the front-end knowledge I have been studying recently and turn it into a complete, working project with a satisfying final result. This project helped me practice React, Vite, TailwindCSS, routing, local data storage, and UI organization in a real use case. I am also proud that the tool solves a problem I personally have when submitting projects: rewriting the same information across README files, devlogs, descriptions, and checklists. To test the project, open the live demo, create a simple local login, and then create a new project. Add a project name, description, type, technologies, GitHub link, demo link, challenges, and what you learned. After saving it, open the project from the dashboard and try generating, copying, and downloading the selected resources. All data is stored locally in the browser using localStorage, so no real account or backend is required.", "repo": "https://github.com/noname697/LaunchPad", "demo": "https://launch-3lpdjz4l2-arthur-manentis-projects.vercel.app"}]...
|
[{"post_id": 8433, "ts": "2026 [{"post_id": 8433, "ts": "2026-06-14T00:58:54Z", "hours": 1.5808, "text": "This update focused on the project detail flow. I created a dedicated page for each project, updated the routes so users can open a project directly from the dashboard, and added an “Open project” action to the project cards. I also polished the styling of the project page to keep the new flow consistent with the rest of the app. I made a few small improvements to the generators utility too, so it can handle project data more reliably when building formatted files like README, DevLog, checklist, and submission text."}, {"post_id": 8324, "ts": "2026-06-13T20:50:28Z", "hours": 1.2792, "text": "Since the last devlog, I focused on the generators layer of the project. I created a utility that turns a project’s data into formatted output files, including README, GitHub description, DevLog, checklist, AI usage statement, and submission text. I also added filename generation for each resource so the exported content is organized and easy to reuse. This gave the app its first real content-generation workflow instead of just storing project information."}, {"post_id": 8266, "ts": "2026-06-13T19:10:15Z", "hours": 2.8603, "text": "Since the last devlog, I moved the project from a basic routed app into a more complete project-management flow. I set up a lightweight MVC structure for projects, added localStorage-backed project persistence, and refactored shared UI into reusable components like Button and InputField. I also started importing a custom font to make the interface feel less generic. On the product side, I built the create-project screen with fields for project metadata, links, technologies, challenges, learnings, and generator selection, plus validation and save/cancel actions. I then expanded the dashboard into a real project overview that reads saved projects, handles the empty state, greets the logged-in user, and links into the new project flow. After that, I polished the styling of both the dashboard and the new project page so the app feels more consistent and usable"}, {"post_id": 7784, "ts": "2026-06-13T00:18:50Z", "hours": 0.66, "text": "Since the last update, I moved the project from a simple login prototype into a small routed app with actual navigation flow. I installed React Router, created public and protected routes, and wired the login so it now sends the user to the dashboard after saving their data locally. I also built a first provisional dashboard with a greeting, logout action, and a placeholder projects section. After that, I refined the dashboard styling and started polishing the overall presentation by importing a font and improving the visual structure."}, {"post_id": 7763, "ts": "2026-06-12T23:39:52Z", "hours": 0.8289, "text": "I started the project with Vite and React and installed Tailwind CSS to speed up the interface. I structured the application to display a login screen as the app’s entry point. I created the basis of the authentication flow with simple name and email validation. I added local persistence with localStorage to save user data in this prototype. I adjusted the form fields and then refined the page’s appearance with a more polished and responsive layout."}]...
|
Title: LaunchPad by @Manenti | Stardance
Devlogs: Title: LaunchPad by @Manenti | Stardance
Devlogs:
I started the project with Vite and React and installed Tailwind CSS to speed up the interface. I structured the application to display a login screen as the app’s entry point. I created the basis of the authentication flow with simple name and email validation. I added local persistence with localStorage to save user data in this prototype. I adjusted the form fields and then refined the page’s appearance with a more polished and responsive layout.
Since the last update, I moved the project from a simple login prototype into a small routed app with actual navigation flow. I installed React Router, created public and protected routes, and wired the login so it now sends the user to the dashboard after saving their data locally. I also built a first provisional dashboard with a greeting, logout action, and a placeholder projects section. After that, I refined the dashboard styling and started polishing the overall presentation by importing a font and improving the visual structure.
Since the last devlog, I moved the project from a basic routed app into a more complete project-management flow. I set up a lightweight MVC structure for projects, added localStorage-backed project persistence, and refactored shared UI into reusable components like Button and InputField. I also started importing a custom font to make the interface feel less generic. On the product side, I built the create-project screen with fields for project metadata, links, technologies, challenges, learnings, and generator selection, plus validation and save/cancel actions. I then expanded the dashboard into a real project overview that reads saved projects, handles the empty state, greets the logged-in user, and links into the new project flow. After that, I polished the styling of both the dashboard and the new project page so the app feels more consistent and usable
Since the last devlog, I focused on the generators layer of the project. I created a utility that turns a project’s data into formatted output files, including README, GitHub description, DevLog, checklist, AI usage statement, and submission text. I also added filename generation for each resource so the exported content is organized and easy to reuse. This gave the app its first real content-generation workflow instead of just storing project information.
This update focused on the project detail flow. I created a dedicated page for each project, updated the routes so users can open a project directly from the dashboard, and added an “Open project” action to the project cards. I also polished the styling of the project page to keep the new flow consistent with the rest of the app. I made a few small improvements to the generators utility too, so it can handle project data more reliably when building formatted files like README, DevLog, checklist, and submission text.
Ships:
I built LaunchPad, a quality-of-life web app that helps makers organize their projects and generate useful submission materials faster. The app lets users create a local profile, save project information, add links such as GitHub and demo URLs, select the type of project, and choose which resources they want to generate. From one saved project, LaunchPad can generate materials like a README template, a GitHub description, a DevLog, a submission checklist, an AI usage statement, and a project submission text. Users can also copy or download the generated resources directly from the project page. The most challenging part was connecting the whole front-end flow in a clean way. I had to work with React Router protected routes, localStorage persistence, form actions, dynamic project pages, and reusable generator functions. Another challenge was making the app feel simple and useful instead of overloaded, because the main goal was to remove friction from a repetitive workflow. I am most proud of being able to apply the front-end knowledge I have been studying recently and turn it into a complete, working project with a satisfying final result. This project helped me practice React, Vite, TailwindCSS, routing, local data storage, and UI organization in a real use case. I am also proud that the tool solves a problem I personally have when submitting projects: rewriting the same information across README files, devlogs, descriptions, and checklists. To test the project, open the live demo, create a simple local login, and then create a new project. Add a project name, description, type, technologies, GitHub link, demo link, challenges, and what you learned. After saving it, open the project from the dashboard and try generating, copying, and downloading the selected resources. All data is stored locally in the browser using localStorage, so no real account or backend is required....
|
1793253149.6112428
|
1793339549.6112428
|
|
17432
|
Sleepy OS by @sriyank | Stardance
|
sriyank
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T16:28:49Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a os that is personalized to me i chose a hobby that i like to do sleeping and based the theme of that, as you can see i have also used js for the logic behind the dragging of the windows and pictures thank you.", "repo": "https://github.com/SasukeUchiha12309876/Sleepy-OS", "demo": "https://sleepy-os.vercel.app/"}]...
|
[{"post_id": 8146, "ts": "2026 [{"post_id": 8146, "ts": "2026-06-13T16:15:35Z", "hours": 0.5328, "text": "i believe that i am done i dont think i will go all out for this project though i will slowly gget into the flow but for now i will submit what i habve the update i made today is a dragable window and closable windo of a picture"}, {"post_id": 7869, "ts": "2026-06-13T03:52:03Z", "hours": 0.9389, "text": "Now i made some good progress with a app and a taskbar"}, {"post_id": 7689, "ts": "2026-06-12T20:51:11Z", "hours": 0.4464, "text": "Right now i just finished on the background for the os now i am going to start on the taskbar"}]...
|
Title: Sleepy OS by @sriyank | Stardance
Devlogs: Title: Sleepy OS by @sriyank | Stardance
Devlogs:
Right now i just finished on the background for the os now i am going to start on the taskbar
Now i made some good progress with a app and a taskbar
i believe that i am done i dont think i will go all out for this project though i will slowly gget into the flow but for now i will submit what i habve the update i made today is a dragable window and closable windo of a picture
Ships:
I created a os that is personalized to me i chose a hobby that i like to do sleeping and based the theme of that, as you can see i have also used js for the logic behind the dragging of the windows and pictures thank you....
|
1793119892.291011
|
1793206292.291011
|
|
17433
|
PELF by @leila | Stardance
|
leila
|
1
|
5.84
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T19:01:04Z", "hours": 5.0, "multiplier": 3.6, "payout": 16, "blessing": "neutral", "text": "I made a CLI utility / file format that combines a Windows .exe and a Linux ELF into a single file that runs natively on both systems! Trudging through the Windows documentation and figuring out weird shell redirections shenanigans was kinda grueling, but I’m really proud of the approach I took and my <56 character script stub!", "repo": "https://github.com/dora-explora/pelf", "demo": "https://github.com/dora-explora/pelf/releases/latest"}]...
|
[{"post_id": 29950, "ts": "202 [{"post_id": 29950, "ts": "2026-07-17T04:26:02Z", "hours": 0.4667, "text": "OK SO it turns out i had two bugs that went unnoticed apparently, the windows version was writing the stub in a way that the linux shell couldnt read because for some STUPID reason, windows’ version of printf interperets ‘\\n’ as \\n\\r which of course sh couldn’t properly interpret so the windows version of the pelf tool just didnt work luckily if you tell printf the file is binary then it wont mess it up secondly, i was overwriting the output file without clearing it first so there was arbitrary data at the end of it when i was testing the windows bug since the stub operates off of a tail command that extracts the last N bytes of the file to use as the linux program, if the file has extra data at the end than the program wont be cut out properly and thus cant run, even though sometimes it was only 14 bytes off luckily i just fixed that by specifying that the file needs to be truncated to zero bytes upon opening and with that the two bugs are done! everything should (hopefully) be working now see below: me desperately recompiling the windows version as i have the output open in a hex editor"}, {"post_id": 28714, "ts": "2026-07-15T04:16:27Z", "hours": 0.3719, "text": "so uhh the only change i made is that the readme now specifies that you need write perms in the current directory and that took like a month or two :3"}, {"post_id": 7615, "ts": "2026-06-12T18:50:36Z", "hours": 0.4089, "text": "Finished up the README, compiled with optimizations, and uploaded the GitHub release so it’s now ready for shipping!"}, {"post_id": 7555, "ts": "2026-06-12T16:57:29Z", "hours": 4.265, "text": "I accidentally coded until 3AM and did the whole project… But it works! I need to test it some more and flesh out the README, but otherwise it’s mostly done! Still can’t believe I managed to fit that shell script under 60 bytes…"}]...
|
Title: PELF by @leila | Stardance
Devlogs:
I acci Title: PELF by @leila | Stardance
Devlogs:
I accidentally coded until 3AM and did the whole project… But it works! I need to test it some more and flesh out the README, but otherwise it’s mostly done! Still can’t believe I managed to fit that shell script under 60 bytes…
Finished up the README, compiled with optimizations, and uploaded the GitHub release so it’s now ready for shipping!
so uhh the only change i made is that the readme now specifies that you need write perms in the current directory and that took like a month or two :3
OK SO it turns out i had two bugs that went unnoticed apparently, the windows version was writing the stub in a way that the linux shell couldnt read because for some STUPID reason, windows’ version of printf interperets ‘\n’ as \n\r which of course sh couldn’t properly interpret so the windows version of the pelf tool just didnt work luckily if you tell printf the file is binary then it wont mess it up secondly, i was overwriting the output file without clearing it first so there was arbitrary data at the end of it when i was testing the windows bug since the stub operates off of a tail command that extracts the last N bytes of the file to use as the linux program, if the file has extra data at the end than the program wont be cut out properly and thus cant run, even though sometimes it was only 14 bytes off luckily i just fixed that by specifying that the file needs to be truncated to zero bytes upon opening and with that the two bugs are done! everything should (hopefully) be working now see below: me desperately recompiling the windows version as i have the output open in a hex editor
Ships:
I made a CLI utility / file format that combines a Windows .exe and a Linux ELF into a single file that runs natively on both systems! Trudging through the Windows documentation and figuring out weird shell redirections shenanigans was kinda grueling, but I’m really proud of the approach I took and my <56 character script stub!...
|
1793285444.5686698
|
1793371844.5686698
|
|
17437
|
Website! by @Rishi | Stardance
|
Rishi
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T21:00:12Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple website (very simple) experimenting simple features such as headers, gifs, and text coloration and size only having a frontend to allow me to grasp the basics to further utilize HTML, CSS, and Javascript on a future, unrelated project.", "repo": "https://github.com/lakkireddyrr-max/hackatime-project-website", "demo": "https://lakkireddyrr-max.github.io/hackatime-project-website/"}]...
|
[{"post_id": 7583, "ts": "2026 [{"post_id": 7583, "ts": "2026-06-12T17:53:58Z", "hours": 0.6031, "text": "I’ve been working on building a functional website using HTML and alter specific elements of the frontend to creatline a baseline page for a website. My initial focuses were getting this text and altering whether it was header text or body text and using for smaller body text. Using this text, I altered aspects of it such as color or alignment through using style=”” to alter the elements of text throughout this webpage, even altering the background color to a beige to further experiment. Along with text, I also implemented a gif into my webpage using a website link rather than file and altered its alignment. To continue this project, I will continue to develop this frontend and further learn HTML coding language to pair along with a backend using JavaScript, with VS code."}]...
|
Title: Website! by @Rishi | Stardance
Devlogs:
I’ Title: Website! by @Rishi | Stardance
Devlogs:
I’ve been working on building a functional website using HTML and alter specific elements of the frontend to creatline a baseline page for a website. My initial focuses were getting this text and altering whether it was header text or body text and using for smaller body text. Using this text, I altered aspects of it such as color or alignment through using style=”” to alter the elements of text throughout this webpage, even altering the background color to a beige to further experiment. Along with text, I also implemented a gif into my webpage using a website link rather than file and altered its alignment. To continue this project, I will continue to develop this frontend and further learn HTML coding language to pair along with a backend using JavaScript, with VS code.
Ships:
I made a simple website (very simple) experimenting simple features such as headers, gifs, and text coloration and size only having a frontend to allow me to grasp the basics to further utilize HTML, CSS, and Javascript on a future, unrelated project....
|
1793285559.7762673
|
1793371959.7762673
|
|
17459
|
catOS by @xerneas | Stardance
|
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-18T02:29:48Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "GatOS A personal operating system that runs in your browser and is, I will be honest, mostly about a cat. live: xerneas3318.github.io/GatOS code: github.com/xerneas3318/GatOS It is a little fake desktop. It has a top bar with a live clock, a background, and windows you can actually drag around, open, and close like a real OS. I built it from scratch over the last few weeks as my Stardance webOS project. What is on it welcome.exe : a short intro window (with a photo of my friend’s cat, obviously) dev.log : a notes-style reader with a sidebar of build entries, so you can read how the thing got made catnip : a full cookie-clicker game where the cookie is the cat. Tap the cat for treats, buy auto-petters and laser pointers and a “cat loaf mine” that earns treats while you are away. It saves your progress to your browser. Built with Plain HTML, CSS, and JavaScript. No framework, no build step. The whole color palette lives in one tiny tokens file thanks to CSS variables, so the entire theme changes from one place. Inter for the UI, Space Mono for the code and clock. What I learned Along the way I learned how to make an element draggable, how to keep windows stacking in the right order, how localStorage works, and how to split a project into a file structure a human can actually read instead of two giant cursed files. The cat, as always, remains. The cat is eternal. The cat now lives on the internet over HTTPS.", "repo": "https://github.com/xerneas3318/GatOS", "demo": "https://xerneas3318.github.io/GatOS/"}]...
|
[{"post_id": 29995, "ts": "202 [{"post_id": 29995, "ts": "2026-07-17T06:58:03Z", "hours": 4.4317, "text": "the files are files now opened this project after like a week away and genuinely could not find anything. one style.css , one script.js , both hundreds of lines of everything everywhere. i wrote every line of it and i still had to ctrl+f to find the clock. it was a junk drawer with a cat on top. so this whole session was cleaning. no new features, nothing shiny , just four hours of moving code around like a little file gremlin. what got split styles: one file for the top bar one for windows one for the desktop one per app same deal for the js, the clock, the dragging, the window stacking, the icons all live in their own files now. the two games moved into an apps/ folder so catnip stops rubbing up against the core window code (it’s a cat. it rubs on things.) the one smart thing the tokens file from last time made this way less painful than it deserved to be, since all the colors were already in one place, nothing broke visually while i shuffled everything. past me did one 1 smart thing and present me is grateful. weirdest part is opening a file and already knowing what’s in it before it loads. revolutionary technology.🤯 next time github pages: this thing needs a real url so it stops living exclusively on my laptop the cat remains. the cat is eternal. the cat’s code is just alphabetized now."}, {"post_id": 23853, "ts": "2026-07-07T01:21:34Z", "hours": 1.3867, "text": "NEW CAT MINI GAME first thing i did was get rid of the terminal look. it was cool for about a week, but staring at glowing teal on near-black was starting to feel like my OS was yelling at me. so i rebuilt the entire theme to look like a warm peach background, light grey panels, one orange accent doing all the heavy lifting. it’s calm now. it’s a website you could actually read at 2am without your retinas filing a complaint. did it the right way this time with CSS variables, so the whole palette lives in like eight lines at the top of the file. want a different accent? change one value. past me would have found-and-replaced forty hex codes and missed six of them. also swapped the font to Inter for that clean note-app feel, kept Space Mono around for code and the clock because some things are sacred. oh, and there’s a new app: catnip. it’s a cookie-clicker but the cookie is my friend’s cat. you tap the cat, treats go up, you buy auto-petters and laser pointers and eventually a “cat loaf mine” that prints treats while you’re not even looking. it saves your progress. i have lost dozens minutes of my life to it already and i wrote it. so the cat remains. the cat is eternal."}, {"post_id": 19491, "ts": "2026-06-30T20:24:20Z", "hours": 0.9378, "text": "the window moves now. you can grab welcome.exe by its title bar and fling it around the desktop, hit the little red dot to close it, and click xerneasOS up top to summon it back. it’s a real window now. it even has a title bar. spent a while wrestling with the drag math turns out you have to keep track of the cursor’s offset from the window when the drag starts. otherwise the window instantly teleports so its corner snaps to your mouse. not exactly the intended user experience. also did some housekeeping: ripped all the CSS into style.css and the JavaScript into script.js so my HTML isn’t one giant cursed wall of inline styles anymore. windows are now a reusable .window component, so making future apps should be way easier.oh, and there’s a live clock in the top bar that updates every second. new Date() my beloved. the cat remains. the cat is eternal. next time: a real wallpaper, maybe an actual second app, and slowly making this feel less like “one draggable window about a cat” and more like an operating system (that’s still about a cat)"}, {"post_id": 15979, "ts": "2026-06-25T23:01:38Z", "hours": 1.2875, "text": "today i learned the difference between margin and padding. profound stuff. life-changing, really. anyway none of that matters because i put a picture of my friend’s cat on my website and now it’s the best site ever made. just started webOS development! things i poked at: styled everything neon teal because i just can google fonts (VT323 my beloved) object-fit: cover so the cat doesn’t get crunched into a horror image border-radius so the cat has rounded corners now. very important. mission critical some might say next time: probably a wallpaper, a window, maybe a clock. or more cats. undecided."}]...
|
Title: catOS by @xerneas | Stardance
Devlogs:
tod Title: catOS by @xerneas | Stardance
Devlogs:
today i learned the difference between margin and padding. profound stuff. life-changing, really. anyway none of that matters because i put a picture of my friend’s cat on my website and now it’s the best site ever made. just started webOS development! things i poked at: styled everything neon teal because i just can google fonts (VT323 my beloved) object-fit: cover so the cat doesn’t get crunched into a horror image border-radius so the cat has rounded corners now. very important. mission critical some might say next time: probably a wallpaper, a window, maybe a clock. or more cats. undecided.
the window moves now. you can grab welcome.exe by its title bar and fling it around the desktop, hit the little red dot to close it, and click xerneasOS up top to summon it back. it’s a real window now. it even has a title bar. spent a while wrestling with the drag math turns out you have to keep track of the cursor’s offset from the window when the drag starts. otherwise the window instantly teleports so its corner snaps to your mouse. not exactly the intended user experience. also did some housekeeping: ripped all the CSS into style.css and the JavaScript into script.js so my HTML isn’t one giant cursed wall of inline styles anymore. windows are now a reusable .window component, so making future apps should be way easier.oh, and there’s a live clock in the top bar that updates every second. new Date() my beloved. the cat remains. the cat is eternal. next time: a real wallpaper, maybe an actual second app, and slowly making this feel less like “one draggable window about a cat” and more like an operating system (that’s still about a cat)
NEW CAT MINI GAME first thing i did was get rid of the terminal look. it was cool for about a week, but staring at glowing teal on near-black was starting to feel like my OS was yelling at me. so i rebuilt the entire theme to look like a warm peach background, light grey panels, one orange accent doing all the heavy lifting. it’s calm now. it’s a website you could actually read at 2am without your retinas filing a complaint. did it the right way this time with CSS variables, so the whole palette lives in like eight lines at the top of the file. want a different accent? change one value. past me would have found-and-replaced forty hex codes and missed six of them. also swapped the font to Inter for that clean note-app feel, kept Space Mono around for code and the clock because some things are sacred. oh, and there’s a new app: catnip. it’s a cookie-clicker but the cookie is my friend’s cat. you tap the cat, treats go up, you buy auto-petters and laser pointers and eventually a “cat loaf mine” that prints treats while you’re not even looking. it saves your progress. i have lost dozens minutes of my life to it already and i wrote it. so the cat remains. the cat is eternal.
the files are files now opened this project after like a week away and genuinely could not find anything. one style.css , one script.js , both hundreds of lines of everything everywhere. i wrote every line of it and i still had to ctrl+f to find the clock. it was a junk drawer with a cat on top. so this whole session was cleaning. no new features, nothing shiny , just four hours of moving code around like a little file gremlin. what got split styles: one file for the top bar one for windows one for the desktop one per app same deal for the js, the clock, the dragging, the window stacking, the icons all live in their own files now. the two games moved into an apps/ folder so catnip stops rubbing up against the core window code (it’s a cat. it rubs on things.) the one smart thing the tokens file from last time made this way less painful than it deserved to be, since all the colors were already in one place, nothing broke visually while i shuffled everything. past me did one 1 smart thing and present me is grateful. weirdest part is opening a file and already knowing what’s in it before it loads. revolutionary technology.🤯 next time github pages: this thing needs a real url so it stops living exclusively on my laptop the cat remains. the cat is eternal. the cat’s code is just alphabetized now.
Ships:
GatOS A personal operating system that runs in your browser and is, I will be honest, mostly about a cat. live: xerneas3318.github.io/GatOS code: github.com/xerneas3318/GatOS It is a little fake desktop. It has a top bar with a live clock, a background, and windows you can actually drag around, open, and close like a real OS. I built it from scratch over the last few weeks as my Stardance webOS project. What is on it welcome.exe : a short intro window (with a photo of my friend’s cat, obviously) dev.log : a notes-style reader with a sidebar of build entries, so you can read how the thing got made catnip : a full cookie-clicker game where the cookie is the cat. Tap the cat for treats, buy auto-petters and laser pointers and a “cat loaf mine” that earns treats while you are away. It saves your progress to your browser. Built with Plain HTML, CSS, and JavaScript. No framework, no build step. The whole color palette lives in one tiny tokens file thanks to CSS variables, so the entire theme changes from one place. Inter for the UI, Space Mono for the code and clock. What I learned Along the way I learned how to make an element draggable, how to keep windows stacking in the right order, how localStorage works, and how to split a project into a file structure a human can actually read instead of two giant cursed files. The cat, as always, remains. The cat is eternal. The cat now lives on the internet over HTTPS....
|
1792878641.9420984
|
1793742641.9420984
|
|
17460
|
David's Website Part 2 by @davidv3767 | Starda David's Website Part 2 by @davidv3767 | Stardance...
|
davidv3767
|
1
|
4.0
|
11
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-31T16:08:47Z", "hours": 4.0, "multiplier": 2.94, "payout": 11, "blessing": "neutral", "text": "I made updates to my website to make it more me! Specifically, I added the math hub, along with a few styling updates to the website. Overall, this functions as a place to get to know me! Hope you enjoy it… also you should complete the challenges (or else… nothing, but please do them for me).", "repo": "https://github.com/davidv3767/portfolio", "demo": "https://davidv3767.github.io/portfolio/index.html"}]...
|
[{"post_id": 38261, "ts": "202 [{"post_id": 38261, "ts": "2026-07-31T15:51:05Z", "hours": 0.3067, "text": "Devlog #5: Just Did the ReadMe What I Did: The ReadMe… ok I’m done! Having some problems, so this version won’t be up for a bit but should be up shortly."}, {"post_id": 29528, "ts": "2026-07-16T14:55:30Z", "hours": 0.6444, "text": "Devlog #4: It Is Done… For Now What I Did: I basically added one more tab yapping about calculators, and then ran out of ideas! So, I AM DONE! If you have any feedback, let me know. (And yes, I am sure there is something I can add, just help me brainstorm!) Github Commit(s): https://github.com/davidv3767/portfolio/commit/6d0881d0b79f643ad743cbb6f94bf98fab8c9584 Next Up: Wait… I have to update the ReadMe! Be right back!"}, {"post_id": 26230, "ts": "2026-07-10T21:55:41Z", "hours": 0.9458, "text": "Devlog #3: Try Out My Little Challenge What I Did: I created a small challenge with some small riddles (along with hints, of course) and multiple pages for you raters to try and solve my challenge! If you do, make sure to type the security key somewhere! Github Commit(s): https://github.com/davidv3767/portfolio/commit/3bb2d6406381e010e63c8724120324b1f967c78f Next Up: In my next session, I will continue coding the wonderful hub!"}, {"post_id": 23591, "ts": "2026-07-06T17:13:04Z", "hours": 1.1678, "text": "Devlog #2: The Rise of the Hub What I Did: I created the main page with a little warm-up, and laid the foundations to my little math hunt I plan to make! I also edited the main website pages to make changes, including fixing the links to blend in with the text! Github Commit(s): https://github.com/davidv3767/portfolio/commit/b2b1ade62fd3d18bbac3da03cf2c2f3e601632aa Next Up: In my next session, I will continue coding the wonderful hub!"}, {"post_id": 23094, "ts": "2026-07-05T20:42:22Z", "hours": 0.5542, "text": "Devlog #1: Unlocking the Hub What I Did: After some edits to previous pages, I created the math hub button needed to create the start of my beautiful math hub! Github Commit(s): https://github.com/davidv3767/portfolio/commit/e003d03746309ec5d91b26e06931d9e147a9bb4a Next Up: In my next session, I will start coding the wonderful hub!"}]...
|
Title: David's Website Part 2 by @davidv3767 | Title: David's Website Part 2 by @davidv3767 | Stardance
Devlogs:
Devlog #1: Unlocking the Hub What I Did: After some edits to previous pages, I created the math hub button needed to create the start of my beautiful math hub! Github Commit(s): https://github.com/davidv3767/portfolio/commit/e003d03746309ec5d91b26e06931d9e147a9bb4a Next Up: In my next session, I will start coding the wonderful hub!
Devlog #2: The Rise of the Hub What I Did: I created the main page with a little warm-up, and laid the foundations to my little math hunt I plan to make! I also edited the main website pages to make changes, including fixing the links to blend in with the text! Github Commit(s): https://github.com/davidv3767/portfolio/commit/b2b1ade62fd3d18bbac3da03cf2c2f3e601632aa Next Up: In my next session, I will continue coding the wonderful hub!
Devlog #3: Try Out My Little Challenge What I Did: I created a small challenge with some small riddles (along with hints, of course) and multiple pages for you raters to try and solve my challenge! If you do, make sure to type the security key somewhere! Github Commit(s): https://github.com/davidv3767/portfolio/commit/3bb2d6406381e010e63c8724120324b1f967c78f Next Up: In my next session, I will continue coding the wonderful hub!
Devlog #4: It Is Done… For Now What I Did: I basically added one more tab yapping about calculators, and then ran out of ideas! So, I AM DONE! If you have any feedback, let me know. (And yes, I am sure there is something I can add, just help me brainstorm!) Github Commit(s): https://github.com/davidv3767/portfolio/commit/6d0881d0b79f643ad743cbb6f94bf98fab8c9584 Next Up: Wait… I have to update the ReadMe! Be right back!
Devlog #5: Just Did the ReadMe What I Did: The ReadMe… ok I’m done! Having some problems, so this version won’t be up for a bit but should be up shortly.
Ships:
I made updates to my website to make it more me! Specifically, I added the math hub, along with a few styling updates to the website. Overall, this functions as a place to get to know me! Hope you enjoy it… also you should complete the challenges (or else… nothing, but please do them for me)....
|
1793138290.7859123
|
1793224690.7859123
|
|
17474
|
flex-ai by @utilisateur_richard | Stardance
|
utilisateur_richard
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T15:27:00Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made an LLM agregator that is supposed to have a smart selection (but because i don’t have the models, i cannot train anything on them) due to the cost of the API, I don’t have enough fundings to continue it I think it was a good training in for the frontend and even if i can’t continue it, i zm proud of what I have done ! some text might be in french, some api might work (I have found some free API) and the plan aren’t real (if you try to create an account with a paid plan, an error will appear)", "repo": "https://github.com/utilisateursrichard/flex.ai", "demo": "https://flex-ai.duckdns.org/"}]...
|
[{"post_id": 26612, "ts": "202 [{"post_id": 26612, "ts": "2026-07-11T15:19:49Z", "hours": 4.7381, "text": "Today is the day when the flex.ai project is discontinuated because of the API pricing that are too high and the fact that without any user-base, the project can’t continue feel free to use the code if you want"}, {"post_id": 7732, "ts": "2026-06-12T22:04:19Z", "hours": 0.925, "text": "Log: flex.ai is officially deployed to the internet! Ran into a classic cloud networking headache during the setup. Every time I launched the Caddy Docker container, the logs showed a connection timeout while trying to provision the SSL certificate. At first, I was convinced my subnet security rules were the issue. But after digging through OCI’s notoriously confusing interface, I finally found the real culprit: a hidden option to “Connect public subnet to internet.” It turns out the subnet wasn’t properly routed to the internet gateway. Once that was enabled, everything clicked instantly. Let’s Encrypt passed, Caddy secured the domain, and the API is now fully live over HTTPS."}, {"post_id": 7637, "ts": "2026-06-12T19:15:45Z", "hours": 0.6914, "text": "beginning of the project ! for now i just created the auth functionality (I tried my best to make it as secure as possible) for now, I didn’t started the LLM part but I will soon ! (for now it is in french but I will make all the translation when I will publish the project on my servers)"}]...
|
Title: flex-ai by @utilisateur_richard | Stardance Title: flex-ai by @utilisateur_richard | Stardance
Devlogs:
beginning of the project ! for now i just created the auth functionality (I tried my best to make it as secure as possible) for now, I didn’t started the LLM part but I will soon ! (for now it is in french but I will make all the translation when I will publish the project on my servers)
Log: flex.ai is officially deployed to the internet! Ran into a classic cloud networking headache during the setup. Every time I launched the Caddy Docker container, the logs showed a connection timeout while trying to provision the SSL certificate. At first, I was convinced my subnet security rules were the issue. But after digging through OCI’s notoriously confusing interface, I finally found the real culprit: a hidden option to “Connect public subnet to internet.” It turns out the subnet wasn’t properly routed to the internet gateway. Once that was enabled, everything clicked instantly. Let’s Encrypt passed, Caddy secured the domain, and the API is now fully live over HTTPS.
Today is the day when the flex.ai project is discontinuated because of the API pricing that are too high and the fact that without any user-base, the project can’t continue feel free to use the code if you want
Ships:
I have made an LLM agregator that is supposed to have a smart selection (but because i don’t have the models, i cannot train anything on them) due to the cost of the API, I don’t have enough fundings to continue it I think it was a good training in for the frontend and even if i can’t continue it, i zm proud of what I have done ! some text might be in french, some api might work (I have found some free API) and the plan aren’t real (if you try to create an account with a paid plan, an error will appear)...
|
1793274701.9675179
|
1793361101.9675179
|
|
17477
|
Minecraft Shader by @Eraxty | Stardance
|
Eraxty
|
1
|
3.92
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T09:14:10Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made minecraft shader but its rendered through ascii yes it hurts my brain but im proud of it", "repo": "", "demo": ""}]...
|
[{"post_id": 19062, "ts": "202 [{"post_id": 19062, "ts": "2026-06-30T08:03:39Z", "hours": 0.5061, "text": "Hi guys im really sorry but plz dont rate my project i dont want it rated here i switched to mocando"}, {"post_id": 8823, "ts": "2026-06-14T17:45:39Z", "hours": 0.4181, "text": "fix"}, {"post_id": 7969, "ts": "2026-06-13T09:13:03Z", "hours": 1.0794, "text": "making night bright and actually completing the shader"}, {"post_id": 7630, "ts": "2026-06-12T19:07:34Z", "hours": 0.2925, "text": "Colored ascii"}, {"post_id": 7610, "ts": "2026-06-12T18:34:00Z", "hours": 1.2044, "text": "Making ascii less dense"}]...
|
Title: Minecraft Shader by @Eraxty | Stardance
De Title: Minecraft Shader by @Eraxty | Stardance
Devlogs:
Making ascii less dense
Colored ascii
making night bright and actually completing the shader
fix
Hi guys im really sorry but plz dont rate my project i dont want it rated here i switched to mocando
Ships:
I made minecraft shader but its rendered through ascii yes it hurts my brain but im proud of it...
|
1793138208.8726594
|
1793224608.8726594
|
|
17500
|
BudgetBuddy by @vatsamalakar | Stardance
|
vatsamalakar
|
1
|
4.0
|
8
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-15T16:37:41Z", "hours": 4.0, "multiplier": 2.11, "payout": 8, "blessing": "neutral", "text": "It all started on a random afternoon when I watched my 20-year-old sister staring at her bank account with a look of pure dread. Despite being an adult and managing her own life, she was completely overwhelmed by the daunting task of setting up a proper budget. It is a common struggle for young adults navigating their first real-world expenses, but seeing her hit that wall of frustration was the spark I needed to take action. Naturally, as her brother, I couldn’t just sit back and watch her pull her hair out over spreadsheets and mental math. There is an unspoken sibling duty to step in when you have the skills to help, and I knew I wanted to channel my energy into solving this problem for her. I wanted to replace her financial anxiety with a sense of control, turning a tedious, stressful chore into something she could handle without breaking a sweat. That protective instinct was the exact moment “Budget Buddy” was born. I set out to build an app that stripped away all the intimidating jargon and endless setup processes that usually come with personal finance tools. The goal was simple: design a clean, intuitive space where anyone—especially someone feeling as lost as my sister did—could instantly find their financial footing. The beauty of Budget Buddy lies in its sheer simplicity and ease of use. Users do not need a degree in finance or hours of free time to get their lives in order; all you have to do is input your income. Whether it is a bi-weekly paycheck, a side hustle payout, or a quick cash gift, you just type the amount into the app and let the system take over. Once your income is logged, Budget Buddy’s smart system automatically budgets everything out for you. It instantly divides your funds into practical categories, telling you exactly how much to save, how much to put toward bills, and what you have left over for personal guilt-free spending. There are no manual calculations or complex formulas to worry about, making the entire process completely hands-off. I deliberately avoided the cluttered dashboards and exhausting pie charts that make other budgeting apps feel like homework. Budget Buddy is designed to feel like a helpful friend rather than a strict accountant, guiding you through your finances with an encouraging, friendly interface. By keeping the user experience light and straightforward, the app ensures that managing money never feels like a punishment. Since introducing the app to my sister, her relationship with money has completely transformed. She went from being utterly frustrated by her finances to confidently knowing where every single dollar is going, proving that a little bit of sibling teamwork can go a long way. Seeing her stress melt away has been incredibly rewarding, and it proved that this tool actually works for real-world, everyday scenarios. Now, Budget Buddy is ready to help other people reclaim their peace of mind just like she did. If you are tired of dreading payday or feeling overwhelmed by your bank account, this app is designed to make your life a whole lot easier. Let Budget Buddy take care of the math so you can focus on enjoying your hard-earned money.", "repo": "https://github.com/vatsamalakar/BudgetBuddy", "demo": "https://budget-buddy-alpha-three.vercel.app/"}]...
|
[{"post_id": 23563, "ts": "202 [{"post_id": 23563, "ts": "2026-07-06T16:31:22Z", "hours": 3.7575, "text": "Budget Buddy is a simple web app that helps users track their money. Users can register, log in, and add income or expense transactions. The dashboard shows total income, total expenses, and the remaining balance. Users can also view a transaction history to see all of their spending and income entries. The reports page shows spending by category using charts. This project is useful for learning basic budgeting, Flask web development, user login, and simple deployment with Vercel."}]...
|
Title: BudgetBuddy by @vatsamalakar | Stardance
D Title: BudgetBuddy by @vatsamalakar | Stardance
Devlogs:
Budget Buddy is a simple web app that helps users track their money. Users can register, log in, and add income or expense transactions. The dashboard shows total income, total expenses, and the remaining balance. Users can also view a transaction history to see all of their spending and income entries. The reports page shows spending by category using charts. This project is useful for learning basic budgeting, Flask web development, user login, and simple deployment with Vercel.
Ships:
It all started on a random afternoon when I watched my 20-year-old sister staring at her bank account with a look of pure dread. Despite being an adult and managing her own life, she was completely overwhelmed by the daunting task of setting up a proper budget. It is a common struggle for young adults navigating their first real-world expenses, but seeing her hit that wall of frustration was the spark I needed to take action. Naturally, as her brother, I couldn’t just sit back and watch her pull her hair out over spreadsheets and mental math. There is an unspoken sibling duty to step in when you have the skills to help, and I knew I wanted to channel my energy into solving this problem for her. I wanted to replace her financial anxiety with a sense of control, turning a tedious, stressful chore into something she could handle without breaking a sweat. That protective instinct was the exact moment “Budget Buddy” was born. I set out to build an app that stripped away all the intimidating jargon and endless setup processes that usually come with personal finance tools. The goal was simple: design a clean, intuitive space where anyone—especially someone feeling as lost as my sister did—could instantly find their financial footing. The beauty of Budget Buddy lies in its sheer simplicity and ease of use. Users do not need a degree in finance or hours of free time to get their lives in order; all you have to do is input your income. Whether it is a bi-weekly paycheck, a side hustle payout, or a quick cash gift, you just type the amount into the app and let the system take over. Once your income is logged, Budget Buddy’s smart system automatically budgets everything out for you. It instantly divides your funds into practical categories, telling you exactly how much to save, how much to put toward bills, and what you have left over for personal guilt-free spending. There are no manual calculations or complex formulas to worry about, making the entire process completely hands-off. I deliberately avoided the cluttered dashboards and exhausting pie charts that make other budgeting apps feel like homework. Budget Buddy is designed to feel like a helpful friend rather than a strict accountant, guiding you through your finances with an encouraging, friendly interface. By keeping the user experience light and straightforward, the app ensures that managing money never feels like a punishment. Since introducing the app to my sister, her relationship with money has completely transformed. She went from being utterly frustrated by her finances to confidently knowing where every single dollar is going, proving that a little bit of sibling teamwork can go a long way. Seeing her stress melt away has been incredibly rewarding, and it proved that this tool actually works for real-world, everyday scenarios. Now, Budget Buddy is ready to help other people reclaim their peace of mind just like she did. If you are tired of dreading payday or feeling overwhelmed by your bank account, this app is designed to make your life a whole lot easier. Let Budget Buddy take care of the math so you can focus on enjoying your hard-earned money....
|
1792882127.7311347
|
1793746127.7311347
|
|
17502
|
ScaffoldOS by @Lycotope | Stardance
|
Lycotope
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T05:20:23Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finished the guide and Created ScaffoldOS, a simplistic non-colorful, but stylized webOS that can run in the browser. I enjoyed creating the clock App using HTML elements Try the project for a couple minutes. (There’s only two features rn, shouldn’t take long)", "repo": "https://github.com/Rowley-Jefferson/myWebOS", "demo": "https://rowley-jefferson.github.io/ScaffoldOS/"}]...
|
[{"post_id": 19781, "ts": "202 [{"post_id": 19781, "ts": "2026-07-01T05:14:11Z", "hours": 1.1036, "text": "Fixed the clock hands to match with the actual time and added some finishing touches"}, {"post_id": 18890, "ts": "2026-06-30T02:46:43Z", "hours": 1.2886, "text": "finished the clock Window"}, {"post_id": 18800, "ts": "2026-06-30T00:37:26Z", "hours": 0.8606, "text": "Updated the Ui to look better and aded functionality to the notes app"}, {"post_id": 18765, "ts": "2026-06-29T23:24:55Z", "hours": 12.2142, "text": "I finished the guide, but i forgot to create any devlogs. I’ll try to improve the UI of the webOS and add some features or games."}]...
|
Title: ScaffoldOS by @Lycotope | Stardance
Devlog Title: ScaffoldOS by @Lycotope | Stardance
Devlogs:
I finished the guide, but i forgot to create any devlogs. I’ll try to improve the UI of the webOS and add some features or games.
Updated the Ui to look better and aded functionality to the notes app
finished the clock Window
Fixed the clock hands to match with the actual time and added some finishing touches
Ships:
Finished the guide and Created ScaffoldOS, a simplistic non-colorful, but stylized webOS that can run in the browser. I enjoyed creating the clock App using HTML elements Try the project for a couple minutes. (There’s only two features rn, shouldn’t take long)...
|
1793123559.911931
|
1793209959.911931
|
|
17512
|
NASA Dashboard by @rwbambrough | Stardance
|
rwbambrough
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-19T22:44:01Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Fully done! Full list of features: Uses real Keplerian orbital mechanics to calculate asteroid positions (solves Kepler’s equation with Newton-Raphson iteration) Fetches live near-Earth object data from NASA’s API Looks up real orbital elements for each asteroid from JPL’s Small-Body Database Falls back to generated mock asteroid data if the API or database lookup fails Works on both desktop and web (browser) builds, using different networking methods for each Continuously updates each asteroid’s position over time based on orbital mechanics Calculates real-time asteroid velocity using the vis-viva equation Renders a rotating 3D-style Earth made of thousands of points Draws orbital paths for asteroids as ellipses Color-codes asteroids by threat level based on speed Shows an animated targeting reticle on the selected asteroid Lets you click on asteroids to select/lock onto them Optional on-screen label showing each asteroid’s name and speed Buttons to speed up or slow down time (also controllable with A/D keys) Pause and play buttons for the simulation Toggle button to show/hide orbit lines Toggle button to show/hide quick info labels Scrolling console log showing system messages, some randomized and some real events Randomly fluctuating radar, optical, and comms “integrity” percentages Displays system uptime Detail panel showing selected asteroid’s name, speed, orbital radius, tilt, size, mean anomaly, depth, and danger level Button to export selected asteroid’s data to a text file Button to delete all saved telemetry report files Automatically creates a folder for storing telemetry reports Background ambient sound loops Click sound effect on button presses Sound effects fail gracefully (silently) if audio files are missing Detects whether it’s running on web or desktop and adjusts fonts and networking accordingly Async-based main loop for compatibility with web export Thanks for reading! This has been a pretty hard project so check it out. It wouldnt build itself using itch.io or any other services so you will have to use github to download it sorry.", "repo": "https://github.com/realreed/NASA-Dashboard-Project", "demo": "https://youtu.be/aI1Y5j97pjo"}]...
|
[{"post_id": 24317, "ts": "202 [{"post_id": 24317, "ts": "2026-07-07T20:27:19Z", "hours": 0.9481, "text": "I finished this project, ill be shipping it soon. I added more realistic orbital physics and did some code fixing. Thanks for the support!"}, {"post_id": 13945, "ts": "2026-06-22T21:50:59Z", "hours": 0.9083, "text": "NEW THINGS!! During this session, I added two additional things, The first thing I added was a pause and play button to the simulation. This was a fairly easy addition, as I use a quantitative value called “time_speed” to determine the speed of the simulation. The pause button sets this value to 0, and the play button also functions as a reset button, setting the value to 1 The next thing I added was a quick info option. Instead of having to click on every dot individually to see its name and speed, I added a quick info button seen on the bottom right corner to allow for easier access to velocity and name data. When clicked, two labels are shown, the velocity and the name of the asteroid right next to them shown in the picture TODO Wireframe mesh for the globe, Audio on and off button and finally, real kelperian orbital mechanics. I am not looking forward to that one lol You can find my work and try it for yourself at my github (realreed) Thanks for reading! Give a like if you liked this please!"}, {"post_id": 13852, "ts": "2026-06-22T18:14:19Z", "hours": 1.2172, "text": "I added two things today I added a telemetry data folder And I added a small display window. Heres a little about them The telemetry data is the data listed on the top right when you click on one of the NEOs It lists 8 things, the NEO name, speed, radius, tilt, size, angle, depth, and danger rating. To make this data downloadable, I added a button underneath the telemetry data, before the main loop that runs the software, the OS verifies that the folder inside the project path named “TELEMETRY_DATA” exists, if it doesnt, it creates the folder. This is to ensure the download process goes smoothly. Then, when the button is clicked, it removes any unsafe characters like dashes, commas, and blank spaces to ensure the file is able to be made. The filename consist of the safename of the neo with a report.txt at the end. The txt file is written and in the dashboard console, a message is displayed saying if the data was exported succesfully or not. The TXT file is then stored in TELEMETRY_DATA For the display window, I added a additional rectangle when you click onto the NEOs in the top right. Inside the rectangle, the dot is replicated but its position is set inside of the rectangle and the dot’s size is multiplied by 6 to fit the rectangle. In the future, I think I will make the display window look better, since right now it looks pretty bad. All and all, this was quite a productive session! You can find the full code on my github."}, {"post_id": 13368, "ts": "2026-06-21T22:00:23Z", "hours": 2.2906, "text": "Today I added a background hum, static writing noises and a click sound effect to my NEO Dashboard! Here is my current product I have been working on this project for quite a while, but I havent posted any devlogs. I didnt realize i had to write them or log my hours lol. You can find all my work on this project on my github. I will be writing more devlogs! Stay tuned!"}]...
|
Title: NASA Dashboard by @rwbambrough | Stardance
Title: NASA Dashboard by @rwbambrough | Stardance
Devlogs:
Today I added a background hum, static writing noises and a click sound effect to my NEO Dashboard! Here is my current product I have been working on this project for quite a while, but I havent posted any devlogs. I didnt realize i had to write them or log my hours lol. You can find all my work on this project on my github. I will be writing more devlogs! Stay tuned!
I added two things today I added a telemetry data folder And I added a small display window. Heres a little about them The telemetry data is the data listed on the top right when you click on one of the NEOs It lists 8 things, the NEO name, speed, radius, tilt, size, angle, depth, and danger rating. To make this data downloadable, I added a button underneath the telemetry data, before the main loop that runs the software, the OS verifies that the folder inside the project path named “TELEMETRY_DATA” exists, if it doesnt, it creates the folder. This is to ensure the download process goes smoothly. Then, when the button is clicked, it removes any unsafe characters like dashes, commas, and blank spaces to ensure the file is able to be made. The filename consist of the safename of the neo with a report.txt at the end. The txt file is written and in the dashboard console, a message is displayed saying if the data was exported succesfully or not. The TXT file is then stored in TELEMETRY_DATA For the display window, I added a additional rectangle when you click onto the NEOs in the top right. Inside the rectangle, the dot is replicated but its position is set inside of the rectangle and the dot’s size is multiplied by 6 to fit the rectangle. In the future, I think I will make the display window look better, since right now it looks pretty bad. All and all, this was quite a productive session! You can find the full code on my github.
NEW THINGS!! During this session, I added two additional things, The first thing I added was a pause and play button to the simulation. This was a fairly easy addition, as I use a quantitative value called “time_speed” to determine the speed of the simulation. The pause button sets this value to 0, and the play button also functions as a reset button, setting the value to 1 The next thing I added was a quick info option. Instead of having to click on every dot individually to see its name and speed, I added a quick info button seen on the bottom right corner to allow for easier access to velocity and name data. When clicked, two labels are shown, the velocity and the name of the asteroid right next to them shown in the picture TODO Wireframe mesh for the globe, Audio on and off button and finally, real kelperian orbital mechanics. I am not looking forward to that one lol You can find my work and try it for yourself at my github (realreed) Thanks for reading! Give a like if you liked this please!
I finished this project, ill be shipping it soon. I added more realistic orbital physics and did some code fixing. Thanks for the support!
Ships:
Fully done! Full list of features: Uses real Keplerian orbital mechanics to calculate asteroid positions (solves Kepler’s equation with Newton-Raphson iteration) Fetches live near-Earth object data from NASA’s API Looks up real orbital elements for each asteroid from JPL’s Small-Body Database Falls back to generated mock asteroid data if the API or database lookup fails Works on both desktop and web (browser) builds, using different networking methods for each Continuously updates each asteroid’s position over time based on orbital mechanics Calculates real-time asteroid velocity using the vis-viva equation Renders a rotating 3D-style Earth made of thousands of points Draws orbital paths for asteroids as ellipses Color-codes asteroids by threat level based on speed Shows an animated targeting reticle on the selected asteroid Lets you click on asteroids to select/lock onto them Optional on-screen label showing each asteroid’s name and speed Buttons to speed up or slow down time (also controllable with A/D keys) Pause and play buttons for the simulation Toggle button to show/hide orbit lines Toggle button to show/hide quick info labels Scrolling console log showing system messages, some randomized and some real events Randomly fluctuating radar, optical, and comms “integrity” percentages Displays system uptime Detail panel showing selected asteroid’s name, speed, orbital radius, tilt, size, mean anomaly, depth, and danger level Button to export selected asteroid’s data to a text file Button to delete all saved telemetry report files Automatically creates a folder for storing telemetry reports Background ambient sound loops Click sound effect on button presses Sound effects fail gracefully (silently) if audio files are missing Detects whether it’s running on web or desktop and adjusts fonts and networking accordingly Async-based main loop for compatibility with web export Thanks for reading! This has been a pretty hard project so check it out. It wouldnt build itself using itch.io or any other services so you will have to use github to download it sorry....
|
1793260321.0894015
|
1793346721.0894015
|
|
17537
|
The Gitboard 2.0 by @aamir_pa2009 | Stardance
|
aamir_pa2009
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T22:35:14Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a 8 key 2x4 Matrix wired keypad that is preprogrammed with commonly used git phrases to make my programming easier, this was my first time using Fusion 360 and KiCAD. Please tell me if you have any improvements. Thanks!", "repo": "https://github.com/AamirKPathan/TheGitboard2.0", "demo": ""}]...
|
[{"post_id": 9435, "ts": "2026 [{"post_id": 9435, "ts": "2026-06-15T19:55:37Z", "hours": 1.8803, "text": "I Finally Finished my Hackpad, GITBOARD2.0 with pre programmed git messages, just waiting on approval now."}]...
|
Title: The Gitboard 2.0 by @aamir_pa2009 | Stardan Title: The Gitboard 2.0 by @aamir_pa2009 | Stardance
Devlogs:
I Finally Finished my Hackpad, GITBOARD2.0 with pre programmed git messages, just waiting on approval now.
Ships:
I made a 8 key 2x4 Matrix wired keypad that is preprogrammed with commonly used git phrases to make my programming easier, this was my first time using Fusion 360 and KiCAD. Please tell me if you have any improvements. Thanks!...
|
1793127206.3359704
|
1793213606.3359704
|
|
17561
|
MeshieTalkie - MeshCore walkie talkie by @Toma_Kuc MeshieTalkie - MeshCore walkie talkie by @Toma_Kuchta | Stardance...
|
Toma_Kuchta
|
1
|
13.32
|
151
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T14:22:19Z", "hours": 13.0, "multiplier": 12.77, "payout": 151, "blessing": "neutral", "text": "Like a walkie talkie but it’s Mesh Core! And that makes it super low power. I don’t love that my code is pretty messy but it works. Also it could be implemented pull based to decrease the standby power.", "repo": "https://github.com/Tomas-Kuchta-FPV/MeshieTalkie", "demo": "https://youtube.com/shorts/Stu_gar8RVU"}]...
|
[{"post_id": 16372, "ts": "202 [{"post_id": 16372, "ts": "2026-06-26T17:20:50Z", "hours": 0.3214, "text": "After getting rejected my ship I had uploaded my video to youtube instead of slack."}, {"post_id": 15647, "ts": "2026-06-25T13:24:23Z", "hours": 2.0053, "text": "Buttoning up the code. But it’s still pretty messy. And managed to implement MeshCore for it! BC I have copy pasted a lot of function blocks the chode is glued together with a duck tape So after getting the ptt -> STT -> TTS working I have though on how to implement the MC functionality. SO I’ve began with getting familiar with the meshcore library by running the included sample sketch which should send a message to the first contact. I ran that and didn’t see anything, after that I made sure that my other device was on top and it worked! After that I’ve let ChatGPT to do implement a sample code that will let me communicate via the terminal. And it no workie, fixed it and it works great! Then implemented to the main codebase with copilot. The prompt was the intended function along with a few more things like automatically playing tts file."}, {"post_id": 15096, "ts": "2026-06-24T15:07:57Z", "hours": 5.4189, "text": "Allright so this log is about research and MVP (minimal viable product) So I stared playing with onyx-om python library and there are also some examples for python. I’ve played with them a bit and it seems that whisper is the king for STT and as for TTS I’m going for piper. I have modified the STT code from simpler and less acurate model for whisper which is way better and I don’t mind the lag. And after that I’ve played with different things like other models and TTS. After that I managed to get implemented this workflow. You press t it starts recording, after release it transcribes it, and with tts piper it converts back to speach. This is meant to prove me the thesis. So the main core is mostly done, although the code is very messy."}, {"post_id": 8653, "ts": "2026-06-14T11:37:31Z", "hours": 5.1761, "text": "Alright I’ve started researching available tools and started defining the code. I won’t bore you with all the decisions, but because of modularity I’ve ended up with a wrapper library called Sherpa NX, which seems to do STT and TTS. For the first prototype I will be using STT whisper tiny and for the TTS I’ll do piper"}]...
|
Title: MeshieTalkie - MeshCore walkie talkie by @T Title: MeshieTalkie - MeshCore walkie talkie by @Toma_Kuchta | Stardance
Devlogs:
Alright I’ve started researching available tools and started defining the code. I won’t bore you with all the decisions, but because of modularity I’ve ended up with a wrapper library called Sherpa NX, which seems to do STT and TTS. For the first prototype I will be using STT whisper tiny and for the TTS I’ll do piper
Allright so this log is about research and MVP (minimal viable product) So I stared playing with onyx-om python library and there are also some examples for python. I’ve played with them a bit and it seems that whisper is the king for STT and as for TTS I’m going for piper. I have modified the STT code from simpler and less acurate model for whisper which is way better and I don’t mind the lag. And after that I’ve played with different things like other models and TTS. After that I managed to get implemented this workflow. You press t it starts recording, after release it transcribes it, and with tts piper it converts back to speach. This is meant to prove me the thesis. So the main core is mostly done, although the code is very messy.
Buttoning up the code. But it’s still pretty messy. And managed to implement MeshCore for it! BC I have copy pasted a lot of function blocks the chode is glued together with a duck tape So after getting the ptt -> STT -> TTS working I have though on how to implement the MC functionality. SO I’ve began with getting familiar with the meshcore library by running the included sample sketch which should send a message to the first contact. I ran that and didn’t see anything, after that I made sure that my other device was on top and it worked! After that I’ve let ChatGPT to do implement a sample code that will let me communicate via the terminal. And it no workie, fixed it and it works great! Then implemented to the main codebase with copilot. The prompt was the intended function along with a few more things like automatically playing tts file.
After getting rejected my ship I had uploaded my video to youtube instead of slack.
Ships:
Like a walkie talkie but it’s Mesh Core! And that makes it super low power. I don’t love that my code is pretty messy but it works. Also it could be implemented pull based to decrease the standby power....
|
1793224458.9418106
|
1793310858.9418106
|
|
17593
|
VisionLense by @Abhinav_kawai | Stardance
|
Abhinav_kawai
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T13:11:06Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So.. I made a py app (Vision Lense) so its simple very.. simple oppen it and show something in cammera and scan it |But wait add api first use groq api. And the model that i used in code may dont work. Its no more i guess i wil change it later.| And thats all it tells u whats in the scene", "repo": "https://github.com/abhinav355/vision-lense-groq-apillma4-", "demo": "https://stardance.hackclub.com/projects/17593"}]...
|
[{"post_id": 16318, "ts": "202 [{"post_id": 16318, "ts": "2026-06-26T15:31:33Z", "hours": 0.6975, "text": "—v2—new version (its like old one but little changes have been made) now the the bug is fixed actualy it was py3.14 problem not a code problem More data output now basicly i just changed the promt and fixed some problem ( model=“meta-llama/llama-4-scout-17b-16e-instruct”) u can use older one too can find product if u show product with ur tongue out now find products from stored data try using it get a better cammera for better data (not like mine😭😭)"}, {"post_id": 7691, "ts": "2026-06-12T21:00:30Z", "hours": 5.8775, "text": "yoo this is Vision Lense it scans things with camera and u know u can use it with groq api llma4 and its free and easy to get (i mean realy easy) and i was wondering like is it worth my 4 hours. I mean i am learning so it took me time"}]...
|
Title: VisionLense by @Abhinav_kawai | Stardance
Title: VisionLense by @Abhinav_kawai | Stardance
Devlogs:
yoo this is Vision Lense it scans things with camera and u know u can use it with groq api llma4 and its free and easy to get (i mean realy easy) and i was wondering like is it worth my 4 hours. I mean i am learning so it took me time
—v2—new version (its like old one but little changes have been made) now the the bug is fixed actualy it was py3.14 problem not a code problem More data output now basicly i just changed the promt and fixed some problem ( model=“meta-llama/llama-4-scout-17b-16e-instruct”) u can use older one too can find product if u show product with ur tongue out now find products from stored data try using it get a better cammera for better data (not like mine😭😭)
Ships:
So.. I made a py app (Vision Lense) so its simple very.. simple oppen it and show something in cammera and scan it |But wait add api first use groq api. And the model that i used in code may dont work. Its no more i guess i wil change it later.| And thats all it tells u whats in the scene...
|
1793267551.121283
|
1793353951.121283
|
|
17609
|
ayaan-malik-portfolio by @amalik_ellahi | Stardanc ayaan-malik-portfolio by @amalik_ellahi | Stardance...
|
amalik_ellahi
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T15:48:47Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built a personal portfolio website with a dark, shadowy design. Includes about me, skills, projects, and contact sections. Making the dark theme look polished while keeping text readable. Balancing contrast, spacing, and shadow effects. A cohesive dark aesthetic with smooth visual details. A cohesive dark aesthetic with smooth visual details. A modern, easy-to-use layout. To test it out, Open in a browser and check desktop/mobile responsiveness. Verify links, project cards, and contact actions. Ensure text remains readable on the dark background.", "repo": "https://github.com/amalikellahi-dot/ayaan-malik-portfolio", "demo": "https://amalikellahi-dot.github.io/ayaan-malik-portfolio/"}]...
|
[{"post_id": 11348, "ts": "202 [{"post_id": 11348, "ts": "2026-06-18T15:40:47Z", "hours": 0.2153, "text": "Worked on my Ayaan Malik personal portfolio website. I’m building a dark, game-inspired “status window” style portfolio that introduces who I am, my interests, and my personal brand in a more unique way. Today I focused on the homepage layout, navigation, images, visual theme, and overall polish so the site feels less like a basic template and more like something that actually represents me. I also worked on making the design cleaner, more organized, and ready to eventually deploy through GitHub Pages."}]...
|
Title: ayaan-malik-portfolio by @amalik_ellahi | S Title: ayaan-malik-portfolio by @amalik_ellahi | Stardance
Devlogs:
Worked on my Ayaan Malik personal portfolio website. I’m building a dark, game-inspired “status window” style portfolio that introduces who I am, my interests, and my personal brand in a more unique way. Today I focused on the homepage layout, navigation, images, visual theme, and overall polish so the site feels less like a basic template and more like something that actually represents me. I also worked on making the design cleaner, more organized, and ready to eventually deploy through GitHub Pages.
Ships:
Built a personal portfolio website with a dark, shadowy design. Includes about me, skills, projects, and contact sections. Making the dark theme look polished while keeping text readable. Balancing contrast, spacing, and shadow effects. A cohesive dark aesthetic with smooth visual details. A cohesive dark aesthetic with smooth visual details. A modern, easy-to-use layout. To test it out, Open in a browser and check desktop/mobile responsiveness. Verify links, project cards, and contact actions. Ensure text remains readable on the dark background....
|
1793278301.6877532
|
1793364701.6877532
|
|
17614
|
Productivity Extension by @amalik_ellahi | Stardan Productivity Extension by @amalik_ellahi | Stardance...
|
amalik_ellahi
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T19:05:24Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A Chrome extension that blocks YouTube/TikTok/Instagram/Reddit for 15 minutes so you actually focus on LeetCode. Getting the Chrome extension blocking rules to work right with Manifest V3. The UI looks clean and the timer saves if you close Chrome mid-session. Clone the repo, go to chrome://extensions, enable Developer mode, load the chrome-extension folder unpacked. Try the demo at https://amalikellahi-dot.github.io/ayaan-malik-extension/", "repo": "https://github.com/amalikellahi-dot/ayaan-malik-extension", "demo": "https://amalikellahi-dot.github.io/ayaan-malik-extension/"}]...
|
[{"post_id": 9059, "ts": "2026 [{"post_id": 9059, "ts": "2026-06-15T03:52:08Z", "hours": 0.7839, "text": "Built a quick 15‑minute focus timer + Chrome blocker to stop me from getting lost on YouTube/TikTok/Instagram/Reddit while I grind LeetCode. It’s an MVP so I kept it short and simple — gonna add custom times, whitelists, and scheduling later."}]...
|
Title: Productivity Extension by @amalik_ellahi | Title: Productivity Extension by @amalik_ellahi | Stardance
Devlogs:
Built a quick 15‑minute focus timer + Chrome blocker to stop me from getting lost on YouTube/TikTok/Instagram/Reddit while I grind LeetCode. It’s an MVP so I kept it short and simple — gonna add custom times, whitelists, and scheduling later.
Ships:
A Chrome extension that blocks YouTube/TikTok/Instagram/Reddit for 15 minutes so you actually focus on LeetCode. Getting the Chrome extension blocking rules to work right with Manifest V3. The UI looks clean and the timer saves if you close Chrome mid-session. Clone the repo, go to chrome://extensions, enable Developer mode, load the chrome-extension folder unpacked. Try the demo at https://amalikellahi-dot.github.io/ayaan-malik-extension/...
|
1793123619.4121535
|
1793210019.4121535
|
|
17616
|
Rayan's macropad by @RayanR | Stardance
|
RayanR
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T03:54:10Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Macropad that has 4 keypad switches and i made it to start PCB and CAD designing. I am proud to say this is my first designed PCB and ot truly feels like an acomplishment.", "repo": "https://github.com/Rayanrathi/Rayan-s-macropad", "demo": ""}]...
|
[{"post_id": 11084, "ts": "202 [{"post_id": 11084, "ts": "2026-06-18T03:52:05Z", "hours": 0.2819, "text": "I worked on my final moments in submission for hackpad"}]...
|
Title: Rayan's macropad by @RayanR | Stardance Title: Rayan's macropad by @RayanR | Stardance
Devlogs:
I worked on my final moments in submission for hackpad
Ships:
I made a Macropad that has 4 keypad switches and i made it to start PCB and CAD designing. I am proud to say this is my first designed PCB and ot truly feels like an acomplishment....
|
1793127368.1526248
|
1793213768.1526248
|
|
17639
|
Minecraft Challenge Mod by @timon | Stardance
|
timon
|
1
|
13.0
|
174
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T18:11:10Z", "hours": 13.0, "multiplier": 13.04, "payout": 174, "blessing": "neutral", "text": "I made a Minecraft Challenges Mod with Fabric. You have multiple challegnes such as shared damage among your friends, ice track udner you and more. Additionally you can add a randomizer to your challenge which makes it that every block drop is different from the original one. Try it out with /challenges", "repo": "https://github.com/Facticee/challenges-mod", "demo": "https://modrinth.com/mod/challenge-mod"}]...
|
[{"post_id": 9353, "ts": "2026 [{"post_id": 9353, "ts": "2026-06-15T18:09:27Z", "hours": 2.0, "text": "I finished the Mod! There were a few bugs left, where whe nyou would rejoin, the randomizer wouldnt work but i could fix it pretty easily."}, {"post_id": 8148, "ts": "2026-06-13T16:15:55Z", "hours": 2.0, "text": "I added two new challenges. one is pretty simple. Every time you jump you get a random item dropped to you. mixin into jumpFromGround, grab a random item from the registry and spawn it. (might also have been easier with just giving it to the player but it works for now. i will go into testing later if one has bugs) the second one is the ice trail. you can sneak to toggle it on and off and a 3x3 platform of ice spawns under you wherever you walk. The ice will only replace air blocks and not existing blocks / blockentities. getting the sneak toggle to work was annoying as to mixin into a sneak method didnt work because i couldnt find the right class. ended up using client.options.keyShift.isDown in a client tick event."}, {"post_id": 8027, "ts": "2026-06-13T12:00:35Z", "hours": 2.0, "text": "The first challegne “shared life” is done. The core mechanic is when a player takes damage, everyone else gets the same amount. sounds simple, but it took me quiet a bit to get that right. the method i needed to use is called hurtServer in 26.x, not hurt like every tutorial says (cause of old yarn mappings like alr said in last devlog). @Inject (method = [“hurtServer”], at = [At(“TAIL”)]) private fun onHurtServer(level: ServerLevel, source: DamageSource, amount: Float, cir: CallbackInfoReturnable) { if (!cir.returnValue) return if (ChallengeState.activeChallenge !is SharedLifeChallenge) return val entity = this as? ServerPlayer ?: return if (source.directEntity == null && source.entity == null) return SharedLifeChallenge.onPlayerHurt(entity, amount) } the directEntity == null check is to prevent an infinite loop. When we deal damage to the other players, that would trigger the mixin again. Generic damage (the kind I use to pass the damage to other players) has no entity source so we can filter it out that way."}, {"post_id": 7726, "ts": "2026-06-12T21:53:39Z", "hours": 5.0, "text": "I have been building a challenges mod for minecraft 26.x and the idea is pretty simple. You type /challenges, a menu opens, you pick a challenge and it changes the gameplay. First challenge I am working on is shared life, where damage shared with every player. Getting it running was honestly kind of a pain. 26.x doesnt need yarn mappings anymore since mojang ships unobfuscated now. Which sounds great until you realize nearly every of the classes isnt the same as yarn mappings and nothing matches the (now outdated) tutorials. For example: hurt() is now hurtServer(), GuiGraphics is GuiGraphicsExtractor. I used AI to help look stuff up which sped things up a lot but even that was not always right. I am finished with the Menu and I started with the challenge code."}]...
|
Title: Minecraft Challenge Mod by @timon | Stardan Title: Minecraft Challenge Mod by @timon | Stardance
Devlogs:
I have been building a challenges mod for minecraft 26.x and the idea is pretty simple. You type /challenges, a menu opens, you pick a challenge and it changes the gameplay. First challenge I am working on is shared life, where damage shared with every player. Getting it running was honestly kind of a pain. 26.x doesnt need yarn mappings anymore since mojang ships unobfuscated now. Which sounds great until you realize nearly every of the classes isnt the same as yarn mappings and nothing matches the (now outdated) tutorials. For example: hurt() is now hurtServer(), GuiGraphics is GuiGraphicsExtractor. I used AI to help look stuff up which sped things up a lot but even that was not always right. I am finished with the Menu and I started with the challenge code.
The first challegne “shared life” is done. The core mechanic is when a player takes damage, everyone else gets the same amount. sounds simple, but it took me quiet a bit to get that right. the method i needed to use is called hurtServer in 26.x, not hurt like every tutorial says (cause of old yarn mappings like alr said in last devlog). @Inject (method = [“hurtServer”], at = [At(“TAIL”)]) private fun onHurtServer(level: ServerLevel, source: DamageSource, amount: Float, cir: CallbackInfoReturnable) { if (!cir.returnValue) return if (ChallengeState.activeChallenge !is SharedLifeChallenge) return val entity = this as? ServerPlayer ?: return if (source.directEntity == null && source.entity == null) return SharedLifeChallenge.onPlayerHurt(entity, amount) } the directEntity == null check is to prevent an infinite loop. When we deal damage to the other players, that would trigger the mixin again. Generic damage (the kind I use to pass the damage to other players) has no entity source so we can filter it out that way.
I added two new challenges. one is pretty simple. Every time you jump you get a random item dropped to you. mixin into jumpFromGround, grab a random item from the registry and spawn it. (might also have been easier with just giving it to the player but it works for now. i will go into testing later if one has bugs) the second one is the ice trail. you can sneak to toggle it on and off and a 3x3 platform of ice spawns under you wherever you walk. The ice will only replace air blocks and not existing blocks / blockentities. getting the sneak toggle to work was annoying as to mixin into a sneak method didnt work because i couldnt find the right class. ended up using client.options.keyShift.isDown in a client tick event.
I finished the Mod! There were a few bugs left, where whe nyou would rejoin, the randomizer wouldnt work but i could fix it pretty easily.
Ships:
I made a Minecraft Challenges Mod with Fabric. You have multiple challegnes such as shared damage among your friends, ice track udner you and more. Additionally you can add a randomizer to your challenge which makes it that every block drop is different from the original one. Try it out with /challenges...
|
1792882056.8581257
|
1793746056.8581257
|
|
17644
|
🐈Cat lover Slack bot by @mygulash | Stardance
|
mygulash
|
1
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T19:23:18Z", "hours": 1.0, "multiplier": 2.98, "payout": 2, "blessing": "neutral", "text": "My first ever project with Hack Club!✨ For my first project i chose creating a slack bot. My slack bot really really loves cats and it shows🐈He will gladly send you cat fun facts, images and even memes! After few hours of work i finally finished the code and could deploy it with nest so it runs 24/7. (The hackatime timer says it took me like 50 minutes even though i worked on it for like 4 hours… lol) For a beginner it was quite challenging to understand stuff like permissions and redirect URLs but Im happy to announce that its ready to ship! :D If you´re interested in this cat loving slack bot you can learn more about it in the read.me: https://github.com/Mygulash/LiborTheSlackBot/blob/main/README.md I hope that the cat memes, images and fun facts will make your day better :)🐈 Have a lovely day and pet your cat!✨", "repo": "https://github.com/Mygulash/LiborTheSlackBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B9Y31KHST"}]...
|
[{"post_id": 8060, "ts": "2026 [{"post_id": 8060, "ts": "2026-06-13T13:39:19Z", "hours": 0.7325, "text": "Finished the code for my Catloving Slack bot and now i´m waiting for my nest to get approved so i can host it ✨"}]...
|
Title: 🐈Cat lover Slack bot by @mygulash | Stardan Title: 🐈Cat lover Slack bot by @mygulash | Stardance
Devlogs:
Finished the code for my Catloving Slack bot and now i´m waiting for my nest to get approved so i can host it ✨
Ships:
My first ever project with Hack Club!✨ For my first project i chose creating a slack bot. My slack bot really really loves cats and it shows🐈He will gladly send you cat fun facts, images and even memes! After few hours of work i finally finished the code and could deploy it with nest so it runs 24/7. (The hackatime timer says it took me like 50 minutes even though i worked on it for like 4 hours… lol) For a beginner it was quite challenging to understand stuff like permissions and redirect URLs but Im happy to announce that its ready to ship! :D If you´re interested in this cat loving slack bot you can learn more about it in the read.me: https://github.com/Mygulash/LiborTheSlackBot/blob/main/README.md I hope that the cat memes, images and fun facts will make your day better :)🐈 Have a lovely day and pet your cat!✨...
|
1793202721.9125004
|
1793289121.9125004
|
|
17645
|
Draw Your Planet by @pujita_sunkara | Stardance
|
pujita_sunkara
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T03:11:40Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Draw Your Planet is a small space-themed drawing game where users can create their own planet. You can draw freely on the canvas, clear your drawing, and use a glow effect to make the planet look cooler. The project was built with HTML, CSS, JavaScript, and Python. One challenge was getting the drawing feature to work smoothly and making sure the glow effect looked good. I learned more about working with user input and designing interactive projects. In the future, I would like to add more colors, brush options, and a way to save drawings.", "repo": "https://github.com/pujitasunkara-jpg/web-os", "demo": "https://pujitasunkara-jpg.github.io/web-os/"}]...
|
[{"post_id": 8332, "ts": "2026 [{"post_id": 8332, "ts": "2026-06-13T21:01:34Z", "hours": 0.5981, "text": "I made a small interactive game where you can draw your own planet. You can sketch freely, clear the screen, and use a glow effect. It’s a fun space-project built using HTML and Python."}]...
|
Title: Draw Your Planet by @pujita_sunkara | Stard Title: Draw Your Planet by @pujita_sunkara | Stardance
Devlogs:
I made a small interactive game where you can draw your own planet. You can sketch freely, clear the screen, and use a glow effect. It’s a fun space-project built using HTML and Python.
Ships:
Draw Your Planet is a small space-themed drawing game where users can create their own planet. You can draw freely on the canvas, clear your drawing, and use a glow effect to make the planet look cooler. The project was built with HTML, CSS, JavaScript, and Python. One challenge was getting the drawing feature to work smoothly and making sure the glow effect looked good. I learned more about working with user input and designing interactive projects. In the future, I would like to add more colors, brush options, and a way to save drawings....
|
1793245949.5646887
|
1793332349.5646887
|