|
22985
|
NexusAI by @Greg_ios | Stardance
|
Greg_ios
|
1
|
8.0
|
86
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T16:37:21Z", "hours": 8.0, "multiplier": 11.21, "payout": 86, "blessing": "neutral", "text": "A local desktop AI assistant for Windows with direct system control capabilities. NexusAI isn’t limited to answering questions — it can interact with the operating system through a growing collection of built-in tools.", "repo": "https://github.com/travletothefurureprogramming/NexusAI/", "demo": "https://localnexusai.carrd.co/"}]...
|
[{"post_id": 15621, "ts": "202 [{"post_id": 15621, "ts": "2026-06-25T12:32:25Z", "hours": 0.4425, "text": "Feature: Updated system prompt for better AI behavior Why: The assistant sometimes produced inconsistent or low-quality responses How: Refined instructions and constraints in the base prompt to improve response structure Result: More stable and relevant outputs from NexusAI"}, {"post_id": 14994, "ts": "2026-06-24T11:24:52Z", "hours": 0.6019, "text": "Feature: Added memory system + upgraded model to Qwen3:4B Why: NexusAI couldn’t retain context between sessions and responses lacked depth How: Implemented memory tool integration and swapped model backend Result: Improved contextual awareness and more coherent conversations"}, {"post_id": 14982, "ts": "2026-06-24T10:20:30Z", "hours": 0.275, "text": "Add Memory Class. Next step use this class and make tools for it."}, {"post_id": 14518, "ts": "2026-06-23T17:38:25Z", "hours": 0.6539, "text": "Add YouTube and GitHub search functionalities to Tools class and update AI operating rules"}, {"post_id": 14376, "ts": "2026-06-23T14:17:37Z", "hours": 0.4783, "text": "Add process management functionalities to Tools class. From now the Nexus AI can help with process management"}, {"post_id": 14323, "ts": "2026-06-23T12:39:04Z", "hours": 0.8031, "text": "Add File Management tools so the AI assistant can help with these requests."}, {"post_id": 13856, "ts": "2026-06-22T18:18:44Z", "hours": 0.6892, "text": "Create a modern and clean UI"}, {"post_id": 13788, "ts": "2026-06-22T16:27:34Z", "hours": 1.2397, "text": "Add web search functionality to Tools class and enhance AI response handling in the API. Change model to a faster one(qwen2.5:3b-instruct) and make a basic Web Inferacnce."}, {"post_id": 13139, "ts": "2026-06-21T14:19:43Z", "hours": 0.5736, "text": "Add shutdown, restart, and log out functionalities to Tools class and make AI model history management so the NexusAI can remember previous messages"}, {"post_id": 13121, "ts": "2026-06-21T13:41:50Z", "hours": 0.6014, "text": "Add functionality to open system applications: Calculator, Notepad, File Explorer, Task Manager, and Command Prompt"}, {"post_id": 13084, "ts": "2026-06-21T12:40:15Z", "hours": 0.3381, "text": "Add URL opening and screenshot functionality to Tools class. From now NexusAI can use tools with args."}, {"post_id": 13079, "ts": "2026-06-21T12:19:13Z", "hours": 0.5178, "text": "Add more tools on the Nexus AI: Available tools: - open_chrome: It opens the Chrome - get_cpu: Return the percent of CPU usage - get_ram: Return the percent of RAM uage - get_disk_io_counters: Return the disk IO counters of the pc in write per second and read per second - get_disk_usage: Return the disk usage - get_network_usage: Return the network IO counters of the pc in sent per second and recv per second"}, {"post_id": 12543, "ts": "2026-06-20T14:23:39Z", "hours": 0.3875, "text": "Add AI on the backend"}, {"post_id": 12524, "ts": "2026-06-20T13:27:11Z", "hours": 0.3153, "text": "Create endpoints using Flask. And structure the AI logic."}]...
|
Title: NexusAI by @Greg_ios | Stardance
Devlogs:
Title: NexusAI by @Greg_ios | Stardance
Devlogs:
Create endpoints using Flask. And structure the AI logic.
Add AI on the backend
Add more tools on the Nexus AI: Available tools: - open_chrome: It opens the Chrome - get_cpu: Return the percent of CPU usage - get_ram: Return the percent of RAM uage - get_disk_io_counters: Return the disk IO counters of the pc in write per second and read per second - get_disk_usage: Return the disk usage - get_network_usage: Return the network IO counters of the pc in sent per second and recv per second
Add URL opening and screenshot functionality to Tools class. From now NexusAI can use tools with args.
Add functionality to open system applications: Calculator, Notepad, File Explorer, Task Manager, and Command Prompt
Add shutdown, restart, and log out functionalities to Tools class and make AI model history management so the NexusAI can remember previous messages
Add web search functionality to Tools class and enhance AI response handling in the API. Change model to a faster one(qwen2.5:3b-instruct) and make a basic Web Inferacnce.
Create a modern and clean UI
Add File Management tools so the AI assistant can help with these requests.
Add process management functionalities to Tools class. From now the Nexus AI can help with process management
Add YouTube and GitHub search functionalities to Tools class and update AI operating rules
Add Memory Class. Next step use this class and make tools for it.
Feature: Added memory system + upgraded model to Qwen3:4B Why: NexusAI couldn’t retain context between sessions and responses lacked depth How: Implemented memory tool integration and swapped model backend Result: Improved contextual awareness and more coherent conversations
Feature: Updated system prompt for better AI behavior Why: The assistant sometimes produced inconsistent or low-quality responses How: Refined instructions and constraints in the base prompt to improve response structure Result: More stable and relevant outputs from NexusAI
Ships:
A local desktop AI assistant for Windows with direct system control capabilities. NexusAI isn’t limited to answering questions — it can interact with the operating system through a growing collection of built-in tools....
|
1793483303.2311044
|
1793569703.2311044
|
|
34652
|
Abby-cadabra.org by @Abracadabra3 | Stardance
|
Abracadabra3
|
1
|
10.32
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-09T00:21:45Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my personal website advertising my kids magic show I am preparing! This is my first time using HTML and CSS, so I am proud of accomplishing that because it was difficult. To try out my project, visit the website! Notice the favicon and the centered text boxes with rounded corners and padding.", "repo": "https://github.com/abracadabra3/abby-cadabra", "demo": "https://abracadabra3.github.io/abby-cadabra/"}]...
|
[{"post_id": 47816, "ts": "202 [{"post_id": 47816, "ts": "2026-08-16T00:53:15Z", "hours": 5.3206, "text": "Well, I forgot to devlog, so here’s an update of all that I have changed. Added a page explaining The Four, which I will now link to from my Ace of Sharks stickers Added a portfolio page of all my combat robots Added mobile and desktop optimization Add navbar to all pages Add custom 404 page I will continue to update these pages and I only have a draft of each of these, so hopefully I will remember to devlog more frequently :)"}, {"post_id": 43621, "ts": "2026-08-09T00:17:32Z", "hours": 1.7169, "text": "Ready to ship! Since the last devlog I: Change price layout to a table Added a section for add-ons Moved balloon animals into add-ons and the Gospel presentation into the kids show section Added a favicon to make the site feel more professional and polished"}, {"post_id": 28512, "ts": "2026-07-14T20:18:59Z", "hours": 3.0778, "text": "It doesn’t feel like I spent three hours on this project. I think I’m mostly finished with the first version of my website! This is my first time using html and css, so I was learning that as well. This is a website for a kids magic show. I don’t know all the information yet, but most of it is on there. Color theme is pastel pink, purple, and blue."}]...
|
Title: Abby-cadabra.org by @Abracadabra3 | Stardan Title: Abby-cadabra.org by @Abracadabra3 | Stardance
Devlogs:
It doesn’t feel like I spent three hours on this project. I think I’m mostly finished with the first version of my website! This is my first time using html and css, so I was learning that as well. This is a website for a kids magic show. I don’t know all the information yet, but most of it is on there. Color theme is pastel pink, purple, and blue.
Ready to ship! Since the last devlog I: Change price layout to a table Added a section for add-ons Moved balloon animals into add-ons and the Gospel presentation into the kids show section Added a favicon to make the site feel more professional and polished
Well, I forgot to devlog, so here’s an update of all that I have changed. Added a page explaining The Four, which I will now link to from my Ace of Sharks stickers Added a portfolio page of all my combat robots Added mobile and desktop optimization Add navbar to all pages Add custom 404 page I will continue to update these pages and I only have a draft of each of these, so hopefully I will remember to devlog more frequently :)
Ships:
This is my personal website advertising my kids magic show I am preparing! This is my first time using HTML and CSS, so I am proud of accomplishing that because it was difficult. To try out my project, visit the website! Notice the favicon and the centered text boxes with rounded corners and padding....
|
1793483304.525869
|
1793569704.525869
|
|
7925
|
OpenMythos by @nish24 | Stardance
|
nish24
|
1
|
54.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T15:23:36Z", "hours": 54.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "OpenMythos is a cybersecurity-focused LLM It’s trained specifically on: ArXiv cs.CR (Cryptography & Security) research papers Real CVE vulnerability data with detailed descriptions What did we build? Full SFT + RLVR training pipeline on H100 GPUs (via Modal) Custom datasets: filtered ArXiv papers + CVE vulnerability data Deployed on Hugging Face Spaces What was challenging? Scraping and filtering high-quality dataset Getting RLVR to actually improve security reasoning. Running stable distributed training on Modal with DeepSpeed Making the model actually useful for real vuln analysis, not just theory What are we proud of? Model genuinely understands CVEs and can reason about attack surfaces Clean SFT → RLVR pipeline that others can replicate 9,000+ users in the first week with zero marketing budget Benchmark results on CyberGym and cybench How to test it? Hugging Face Space: https://huggingface.co/spaces/build-small-hackathon/OpenMythos Try prompts like: “Analyze this code for security vulnerabilities: [paste your code]” “Review this API endpoint for security issues: [paste code]” It works best for: ✅ Code security review ✅ CVE explanation & mitigation ✅ Attack surface analysis ✅ Security research questions", "repo": "https://github.com/KingNish24/OpenMythosDemo", "demo": "https://huggingface.co/spaces/build-small-hackathon/OpenMythos"}]...
|
[{"post_id": 18400, "ts": "202 [{"post_id": 18400, "ts": "2026-06-29T15:17:35Z", "hours": 0.2858, "text": "Hit 9,000+ users on OpenMythos last week OpenMythos is a cybersecurity-focused LLM trained on ArXiv cs.CR papers and real CVE data. If you’ve tried it: → Share your feedback → Found a vuln in your project using it? We’d love to hear Want to stress-test your own project’s security? Give it a shot 👇 https://huggingface.co/spaces/build-small-hackathon/OpenMythos"}, {"post_id": 18274, "ts": "2026-06-29T11:21:45Z", "hours": 46.4808, "text": "Hey everyone! OpenMythos benchmarks are finally here. Sorry it took about a week to post these. The delay was mainly because SWE-bench results weren’t matching up with Qwen 3.6 27B official numbers. Turns out Qwen used a different eval harness and also refined/filtered the benchmark problems, even there prev 3.5 (72.4 in SWE Verified ) version benchmark score is not matching with the numbers published in 3.6 (75 in SWE Verified). Anyway, here are the results across SWE-bench Pro, CyberGym, and cybench. OpenMythos holds up pretty well for a small cybersecurity-focused model! But it has capability to do better. So, will train it further. Demo: https://huggingface.co/spaces/build-small-hackathon/OpenMythos Model: https://huggingface.co/build-small-hackathon/OpenMythos"}, {"post_id": 4019, "ts": "2026-06-07T05:53:03Z", "hours": 4.6978, "text": "Devlog 2 of OpenMythos Dataset Progress: 45k rows of dataset completed. Generation got stuck after 37k due to a bug from upstream provider. Resolved the issue now back on track."}, {"post_id": 2794, "ts": "2026-06-05T16:40:04Z", "hours": 2.7564, "text": "Generating dataset for OpenMythos"}]...
|
Title: OpenMythos by @nish24 | Stardance
Devlogs: Title: OpenMythos by @nish24 | Stardance
Devlogs:
Generating dataset for OpenMythos
Devlog 2 of OpenMythos Dataset Progress: 45k rows of dataset completed. Generation got stuck after 37k due to a bug from upstream provider. Resolved the issue now back on track.
Hey everyone! OpenMythos benchmarks are finally here. Sorry it took about a week to post these. The delay was mainly because SWE-bench results weren’t matching up with Qwen 3.6 27B official numbers. Turns out Qwen used a different eval harness and also refined/filtered the benchmark problems, even there prev 3.5 (72.4 in SWE Verified ) version benchmark score is not matching with the numbers published in 3.6 (75 in SWE Verified). Anyway, here are the results across SWE-bench Pro, CyberGym, and cybench. OpenMythos holds up pretty well for a small cybersecurity-focused model! But it has capability to do better. So, will train it further. Demo: https://huggingface.co/spaces/build-small-hackathon/OpenMythos Model: https://huggingface.co/build-small-hackathon/OpenMythos
Hit 9,000+ users on OpenMythos last week OpenMythos is a cybersecurity-focused LLM trained on ArXiv cs.CR papers and real CVE data. If you’ve tried it: → Share your feedback → Found a vuln in your project using it? We’d love to hear Want to stress-test your own project’s security? Give it a shot 👇 https://huggingface.co/spaces/build-small-hackathon/OpenMythos
Ships:
OpenMythos is a cybersecurity-focused LLM It’s trained specifically on: ArXiv cs.CR (Cryptography & Security) research papers Real CVE vulnerability data with detailed descriptions What did we build? Full SFT + RLVR training pipeline on H100 GPUs (via Modal) Custom datasets: filtered ArXiv papers + CVE vulnerability data Deployed on Hugging Face Spaces What was challenging? Scraping and filtering high-quality dataset Getting RLVR to actually improve security reasoning. Running stable distributed training on Modal with DeepSpeed Making the model actually useful for real vuln analysis, not just theory What are we proud of? Model genuinely understands CVEs and can reason about attack surfaces Clean SFT → RLVR pipeline that others can replicate 9,000+ users in the first week with zero marketing budget Benchmark results on CyberGym and cybench How to test it? Hugging Face Space: https://huggingface.co/spaces/build-small-hackathon/OpenMythos Try prompts like: “Analyze this code for security vulnerabilities: [paste your code]” “Review this API endpoint for security issues: [paste code]” It works best for: ✅ Code security review ✅ CVE explanation & mitigation ✅ Attack surface analysis ✅ Security research questions...
|
1793483305.698689
|
1793569705.698689
|
|
31702
|
Code editor! by @jow544445 | Stardance
|
jow544445
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T02:28:07Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A minimal yet powerful browser-based text editor built with HTML, CSS, and JavaScript. Format your text with various styling options directly in your web browser. DEMO!!!", "repo": "https://github.com/jow5445/code-editor", "demo": "https://jow5445.github.io/code-editor"}]...
|
[{"post_id": 23878, "ts": "202 [{"post_id": 23878, "ts": "2026-07-07T02:25:57Z", "hours": 1.0461, "text": "A minimal yet powerful browser-based text editor built with HTML, CSS, and JavaScript. Format your text with various styling options directly in your web browser. DEMO!!!"}]...
|
Title: Code editor! by @jow544445 | Stardance
Dev Title: Code editor! by @jow544445 | Stardance
Devlogs:
A minimal yet powerful browser-based text editor built with HTML, CSS, and JavaScript. Format your text with various styling options directly in your web browser. DEMO!!!
Ships:
A minimal yet powerful browser-based text editor built with HTML, CSS, and JavaScript. Format your text with various styling options directly in your web browser. DEMO!!!...
|
1793483311.9984431
|
1793569711.9984431
|
|
32472
|
Chomps Dev Hub by @MrChompDev | Stardance
|
MrChompDev
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-09T04:36:05Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I made: An ocean-themed dev portfolio with a full underwater Three.js scene, a “Daily Chomp” newspaper that pulls in my YouTube/GitHub/Itch.io content, and Discord webhook support. What was challenging: Getting the fish, kelp, bubbles, light rays, and caustics all working together in Three.js without murdering performance. What I’m proud of: The cohesive ocean aesthetic — wavy dividers, glass cards, newspaper with “printed with ocean ink” — and The Daily Chomp news section turning into something actually fun. How to test: It’s live on Vercel, just visit the URL. Loading the cards and news takes a bit since they fetch live from Itch.io, YouTube, and GitHub — fallback data fills in if feeds fail.", "repo": "https://github.com/MrChompDev/mrchomps-dev-hub", "demo": "https://mr-chomp-s-dev-hub.vercel.app/"}]...
|
[{"post_id": 25128, "ts": "202 [{"post_id": 25128, "ts": "2026-07-09T04:25:38Z", "hours": 0.5936, "text": "I just finished my full personal website. I has all things I want using tailwind.css vit and typescript and three.js"}]...
|
Title: Chomps Dev Hub by @MrChompDev | Stardance
Title: Chomps Dev Hub by @MrChompDev | Stardance
Devlogs:
I just finished my full personal website. I has all things I want using tailwind.css vit and typescript and three.js
Ships:
What I made: An ocean-themed dev portfolio with a full underwater Three.js scene, a “Daily Chomp” newspaper that pulls in my YouTube/GitHub/Itch.io content, and Discord webhook support. What was challenging: Getting the fish, kelp, bubbles, light rays, and caustics all working together in Three.js without murdering performance. What I’m proud of: The cohesive ocean aesthetic — wavy dividers, glass cards, newspaper with “printed with ocean ink” — and The Daily Chomp news section turning into something actually fun. How to test: It’s live on Vercel, just visit the URL. Loading the cards and news takes a bit since they fetch live from Itch.io, YouTube, and GitHub — fallback data fills in if feeds fail....
|
1793483313.8497899
|
1793569713.8497899
|
|
29632
|
KeplerView by @ahaanrawat | Stardance
|
ahaanrawat
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T16:09:53Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a satellite tracking web app called KeplerView. With this web app, you have the ability to visualize API data given from Celestrak.", "repo": "https://github.com/ahaanrawat/kepler-view", "demo": "https://ahaanrawat.github.io/kepler-view/"}]...
|
[{"post_id": 21959, "ts": "202 [{"post_id": 21959, "ts": "2026-07-04T05:08:52Z", "hours": 8.1617, "text": "I’ve added more satellites."}, {"post_id": 21023, "ts": "2026-07-02T19:48:29Z", "hours": 7.8264, "text": "(KeplerView satellite tracking written in Javascript three.js) I’ve just completed the basics, calling an APIs for real world satellite positions, and adding an orbit view to look around. The visuals are not the best, and I’ve just started last night. (Note that the white dot represents the real world position of the ISS, and the yellow dot represents the position of the Tiangong CSS). Both are real space stations orbiting Earth right now. (And it’s all live using the Celestrak API)"}]...
|
Title: KeplerView by @ahaanrawat | Stardance
Devl Title: KeplerView by @ahaanrawat | Stardance
Devlogs:
(KeplerView satellite tracking written in Javascript three.js) I’ve just completed the basics, calling an APIs for real world satellite positions, and adding an orbit view to look around. The visuals are not the best, and I’ve just started last night. (Note that the white dot represents the real world position of the ISS, and the yellow dot represents the position of the Tiangong CSS). Both are real space stations orbiting Earth right now. (And it’s all live using the Celestrak API)
I’ve added more satellites.
Ships:
I created a satellite tracking web app called KeplerView. With this web app, you have the ability to visualize API data given from Celestrak....
|
1793483316.0440333
|
1793569716.0440333
|
|
30288
|
Legacy iOS Hub by @thenasaplusit | Stardance
|
thenasaplusit
|
1
|
7.0
|
17
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T21:10:31Z", "hours": 7.0, "multiplier": 2.56, "payout": 17, "blessing": "neutral", "text": "Well, that’s all the functionality I could think of now, folks! While I’m still miffed I couldn’t add any form of IPA installation (whether direct or via a download) due to GitHub Pages TLS being too new, I still think this will turn out to be a very helpful project for many. Not to mention it looks damn good with that JetBrains Mono font.", "repo": "https://github.com/Hacker-Anirudh/Legacy-iOS-Hub", "demo": "https://ios.sudothelinuxwizard.com"}]...
|
[{"post_id": 23736, "ts": "202 [{"post_id": 23736, "ts": "2026-07-06T21:08:34Z", "hours": 0.8297, "text": "It’s finally done!!!! To round it off, I added a short-ish list of my recommended “must-have” tweaks."}, {"post_id": 23565, "ts": "2026-07-06T16:32:06Z", "hours": 2.0828, "text": "My god, this was a mess… Basically, I tried to add a IPA downloader, but Git LFS was weird with links and didn’t work, so I removed LFS and the IPA. That completely broke the repo so I needed to jankily purge everything. So no, I don’t have much to show for the 2h, but I do have something, a huge QoL improvement: a back button!"}, {"post_id": 22101, "ts": "2026-07-04T11:37:59Z", "hours": 0.7539, "text": "I added a survey! Apparently you can just use a Google Form as your backend so you don’t need to make your own infrastructure (see my code)."}, {"post_id": 21647, "ts": "2026-07-03T18:24:30Z", "hours": 0.3417, "text": "So, I fixed the sizing issue (which was one line in the , makes you wonder why it isn’t on by default), removed the AI slop, and then, funnily enough, I had AI add all the ~160 needed thumbnails to make sure the wallpaper pages don’t slow to a crawl upon loading (I am NOT doing that by hand, sorry)"}, {"post_id": 21624, "ts": "2026-07-03T17:43:56Z", "hours": 0.3375, "text": "I deployed it, I thought I was pretty much done, but it’s all kinds of broken when actually deploying on mobile… Not to mention my AI assistant apparently decided to add random nonsense I never asked it to that broke legacy compatibility, so now I must fix all these annoying issues…"}, {"post_id": 21601, "ts": "2026-07-03T17:16:14Z", "hours": 2.2833, "text": "I haven’t tested it on an iOS device yet, but it’s turning out pretty well!"}]...
|
Title: Legacy iOS Hub by @thenasaplusit | Stardanc Title: Legacy iOS Hub by @thenasaplusit | Stardance
Devlogs:
I haven’t tested it on an iOS device yet, but it’s turning out pretty well!
I deployed it, I thought I was pretty much done, but it’s all kinds of broken when actually deploying on mobile… Not to mention my AI assistant apparently decided to add random nonsense I never asked it to that broke legacy compatibility, so now I must fix all these annoying issues…
So, I fixed the sizing issue (which was one line in the , makes you wonder why it isn’t on by default), removed the AI slop, and then, funnily enough, I had AI add all the ~160 needed thumbnails to make sure the wallpaper pages don’t slow to a crawl upon loading (I am NOT doing that by hand, sorry)
I added a survey! Apparently you can just use a Google Form as your backend so you don’t need to make your own infrastructure (see my code).
My god, this was a mess… Basically, I tried to add a IPA downloader, but Git LFS was weird with links and didn’t work, so I removed LFS and the IPA. That completely broke the repo so I needed to jankily purge everything. So no, I don’t have much to show for the 2h, but I do have something, a huge QoL improvement: a back button!
It’s finally done!!!! To round it off, I added a short-ish list of my recommended “must-have” tweaks.
Ships:
Well, that’s all the functionality I could think of now, folks! While I’m still miffed I couldn’t add any form of IPA installation (whether direct or via a download) due to GitHub Pages TLS being too new, I still think this will turn out to be a very helpful project for many. Not to mention it looks damn good with that JetBrains Mono font....
|
1793483317.9429843
|
1793569717.9429843
|
|
8187
|
Macropad by @zsm1 | Stardance
|
zsm1
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T22:47:09Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I made I designed and built a custom mechanical macropad from the ground up using KiCad, Fusion 360, and custom firmware. The macropad features: 3×3 mechanical key matrix Rotary encoder for volume or other controls OLED display for status information 20 addressable RGB LEDs for underglow lighting Seeed Studio XIAO RP2040 microcontroller Custom PCB and enclosure The project combines electronics design, PCB layout, CAD modeling, and embedded programming into a single project! What I am most proud of I am proud that every major part of the device was custom designed rather than assembled from an existing kit. Seeing the schematic, PCB, enclosure, and firmware come together into a complete product was the most rewarding part of the project. This required me to learn electronic schematic design, PCB routing, CAD modeling, firmware development, aswell as designing for manufacturing (3d printing). Testing Currently this is only designed, not built yet. This post is for approval of the parts. However, it still represents a milestone of having fully designed all the aspects of this macropad! For now, there is no demo video available but the github contains renderings, firmware, and pcb schematics; everything you need to build it yourself.", "repo": "https://github.com/ZSmaster1/macropad", "demo": ""}]...
|
[{"post_id": 5935, "ts": "2026 [{"post_id": 5935, "ts": "2026-06-09T22:22:35Z", "hours": 0.6625, "text": "Completed the hackpad guide! I was going to use QMK but KMK seemed easier to use initally since I dont actually have the physical macropad yet. I also compiled everything onto a github repository for submission. https://github.com/ZSmaster1/macropad"}, {"post_id": 5292, "ts": "2026-06-09T00:44:40Z", "hours": 1.465, "text": "Finished designing the enclosure for the macropad in Fusion 360. To make sure everything fit correctly, I exported the PCB directly from KiCad and imported it into the CAD assembly as a reference. This made it much easier to design around the actual hardware instead of guessing dimensions, as well as aligning the gap on the bottom for the underglow effect. I found models for the switches, rotary encoder, OLED display, and Seeed Studio XIAO on GrabCAD, which ended up saving a lot of time. Having the real component geometry available meant I could check clearances, mounting positions, and connector access. I can finally see the macropad come together! The electronics, PCB, and enclosure all exist together in one assembly, now I just have to write the firmware which I am leaning towards using QMK due to its customization. Any feedback is appreciated!"}, {"post_id": 3940, "ts": "2026-06-07T02:08:51Z", "hours": 1.9939, "text": "Finished the PCB layout and made some final schematic updates. While making the PCB I realized I didn’t have any decoupling capacitors, and since I’m using 20 addressable LEDs, changing them all at once might cause voltage drops and other unexpected issues so I added one 100nf capacitor per 2 LEDs. The PCB layout took longer than expected. I had to learn about vias, ground planes, and different constraints. Routing everything on the 2 layer board took a while and a lot of trace reroutes. Looking at the 3d model of the PCB I can see the macropad slowly coming together. The next step is to design the case around the PCB in Fusion 360."}, {"post_id": 3690, "ts": "2026-06-06T18:53:16Z", "hours": 1.7578, "text": "Finished designing the full macropad schematic in KiCad. The design includes a 3×3 key matrix, a Seeed Studio XIAO microcontroller, rotary encoder, OLED display, and a chain of addressable RGB LEDs for underglow. A surprising amount of time went into learning KiCad itself. Organizing the schematic onto the sheet took longer than expected since I had to learn about nets, labels, power flags, etc. Furthermore I also had to learn about symbols, footprints and the ERC. Next is the PCB where I’ll route the traces and define the physical layout of the board."}]...
|
Title: Macropad by @zsm1 | Stardance
Devlogs:
Fin Title: Macropad by @zsm1 | Stardance
Devlogs:
Finished designing the full macropad schematic in KiCad. The design includes a 3×3 key matrix, a Seeed Studio XIAO microcontroller, rotary encoder, OLED display, and a chain of addressable RGB LEDs for underglow. A surprising amount of time went into learning KiCad itself. Organizing the schematic onto the sheet took longer than expected since I had to learn about nets, labels, power flags, etc. Furthermore I also had to learn about symbols, footprints and the ERC. Next is the PCB where I’ll route the traces and define the physical layout of the board.
Finished the PCB layout and made some final schematic updates. While making the PCB I realized I didn’t have any decoupling capacitors, and since I’m using 20 addressable LEDs, changing them all at once might cause voltage drops and other unexpected issues so I added one 100nf capacitor per 2 LEDs. The PCB layout took longer than expected. I had to learn about vias, ground planes, and different constraints. Routing everything on the 2 layer board took a while and a lot of trace reroutes. Looking at the 3d model of the PCB I can see the macropad slowly coming together. The next step is to design the case around the PCB in Fusion 360.
Finished designing the enclosure for the macropad in Fusion 360. To make sure everything fit correctly, I exported the PCB directly from KiCad and imported it into the CAD assembly as a reference. This made it much easier to design around the actual hardware instead of guessing dimensions, as well as aligning the gap on the bottom for the underglow effect. I found models for the switches, rotary encoder, OLED display, and Seeed Studio XIAO on GrabCAD, which ended up saving a lot of time. Having the real component geometry available meant I could check clearances, mounting positions, and connector access. I can finally see the macropad come together! The electronics, PCB, and enclosure all exist together in one assembly, now I just have to write the firmware which I am leaning towards using QMK due to its customization. Any feedback is appreciated!
Completed the hackpad guide! I was going to use QMK but KMK seemed easier to use initally since I dont actually have the physical macropad yet. I also compiled everything onto a github repository for submission. https://github.com/ZSmaster1/macropad
Ships:
What I made I designed and built a custom mechanical macropad from the ground up using KiCad, Fusion 360, and custom firmware. The macropad features: 3×3 mechanical key matrix Rotary encoder for volume or other controls OLED display for status information 20 addressable RGB LEDs for underglow lighting Seeed Studio XIAO RP2040 microcontroller Custom PCB and enclosure The project combines electronics design, PCB layout, CAD modeling, and embedded programming into a single project! What I am most proud of I am proud that every major part of the device was custom designed rather than assembled from an existing kit. Seeing the schematic, PCB, enclosure, and firmware come together into a complete product was the most rewarding part of the project. This required me to learn electronic schematic design, PCB routing, CAD modeling, firmware development, aswell as designing for manufacturing (3d printing). Testing Currently this is only designed, not built yet. This post is for approval of the parts. However, it still represents a milestone of having fully designed all the aspects of this macropad! For now, there is no demo video available but the github contains renderings, firmware, and pcb schematics; everything you need to build it yourself....
|
1793483320.1000974
|
1793569720.1000974
|
|
22729
|
PiMusic by @Studented | Stardance
|
Studented
|
1
|
3.3
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T01:00:08Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "fixed bugs (that I can see right now) ready for deployment (read past devlog to see work done and the github)", "repo": "https://github.com/Studented0/PiMusic", "demo": "https://pi-music-jade.vercel.app"}]...
|
[{"post_id": 18920, "ts": "202 [{"post_id": 18920, "ts": "2026-06-30T03:08:40Z", "hours": 0.2975, "text": "Did some bugfixes, mostly involved with NETWORK_BUFFER errors. only a temp solution for now"}, {"post_id": 12262, "ts": "2026-06-20T00:57:33Z", "hours": 2.6944, "text": "Added lyric matching and search/playlist tools. basically fully standalone from spotify now (I use it without ever touching the Spotify app)"}]...
|
Title: PiMusic by @Studented | Stardance
Devlogs: Title: PiMusic by @Studented | Stardance
Devlogs:
Added lyric matching and search/playlist tools. basically fully standalone from spotify now (I use it without ever touching the Spotify app)
Did some bugfixes, mostly involved with NETWORK_BUFFER errors. only a temp solution for now
Ships:
fixed bugs (that I can see right now) ready for deployment (read past devlog to see work done and the github)...
|
1793483325.910431
|
1793569725.910431
|
|
26904
|
Serene Seasons Gen Fix by @Fiskerz | Stardance
|
Fiskerz
|
2
|
13.0
|
93
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T12:17:04Z", "hours": 10.0, "multiplier": 6.94, "payout": 71, "blessing": "neutral", "text": "What the hell am I looking at? If you’re asking that, well I am here to explain that. This is a Minecraft mod that aims to fix one known issue for the 1.21.x versions of the game. Technical overview The vanilla issue has already been covered by a mod named WorldGenFeatureFix, but if you install the serene seasons mod and try loading a few dozen chunks the server is likely to crash, even with the fixing mod present. This is beacause serene seasons skip the fixed chunk of code and go straight for the vanilla broken one. If you want a bit more detail on this issue, be sure to check out the github repo. What does this ship even add? As you might have noticed, this is a second ship of the mod. The main reason why I even extended on the original is beacause the issue has been reported even outside neoforge, the mod loader I originally made the mod for. Thus this ship adds support for Forge and Fabric loader, covering a slightly larger section of people Where can I get this mod? I have published all of the new versions of the mod to CurseForge and Modrinth , so you choose where you want to obtain it. How can I try this out for myself? Well this is the only part of this project that takes a bit of a toll on it. You see, because the mod fixes such a specific and rather rare issue there is not a very reliable and most importantly simple way to fully test it. I really, really wanted to make a comparison video to be able to show it to you atleast on the video, but guess what? Now that I want the server to crash it doesn’t :| No jokes, but I spent almost 6 hours just trying to catch that crash and it just refused to. So sorry, but you will have to test it the old way . The old way to test Make a world, or set-up a minecraft server for any of the compatible versions (most common crashes occur on Neoforge) and install the mod, alongside: Serene seasons (and its dependencies), WorldGenFeatureFix and to make the crash more likely to happen, add any world generation mod. And now observe no crashes at all. I know this is a very complicated way to test, but there’s just not a way to do it simpler.", "repo": "https://github.com/Catmaster543/Serene-Seasons-Gen-Fix", "demo": "https://www.curseforge.com/minecraft/mc-mods/serene-seasons-gen-fix"}, {"ship_num": 2, "ts": "2026-06-27T21:53:14Z", "hours": 3.0, "multiplier": 7.11, "payout": 22, "blessing": "neutral", "text": "I made a minecraft mod that has one purpose - fix an issue where modded servers crash due to a known problematic method that serene seasons uses. I took on this project because I saw nobody else doing anything about it, or keeping their solutions only to themselves. It was a whole new experience for me, as I’ve never made a minecraft mod, so I had to learn most of the things the hard way. I’m proud that it took me a pretty small amount of time to make it and also that I even finished it. To truly test this mod I reccomend making a 1.21.1 neoforge server with serene seasons present, some world generation mod like tectonic and using chunky to generate a few hundred chunks. Sure, not the easiest setup, but the project’s main focus is to fix a moreover niche issue.", "repo": "https://github.com/Catmaster543/Serene-Seasons-Gen-Fix", "demo": "https://www.curseforge.com/minecraft/mc-mods/serene-seasons-gen-fix"}]...
|
[{"post_id": 48841, "ts": "202 [{"post_id": 48841, "ts": "2026-08-17T12:00:22Z", "hours": 1.5403, "text": "Tried to catch the crash live, yet failed.. (again) I tried to catch the crash live for a comparison video to make the rating a teeny tiny bit easier, but I failed for like the fifth time, it now just does not crash. Funny enough when you need it the least it will of course crash, but it is, what it is… Now to prove that I am not going insane or smth I still have the old logs, that very clearly show the crash, such as the one I inserted in, but I can’t figure out just why it won’t happen again now that I actually do want it to crash."}, {"post_id": 48782, "ts": "2026-08-17T10:00:59Z", "hours": 8.6372, "text": "Ported the fix to Forge and Fabric! Devlog #4 I did not expect to make any sort of update to this patch mod, yet I found out forge (and possibly fabric too) suffer from the issue. Thus it felt right to make the versions available as well, so that no one has to make it instead of me. I made sure to publish the versions to CurseForge and Modrinth as before and I made a tiny change to the github repo on my way too. The reason for this ridiculously high time logged (the project itself took initially just 3 hours) is because I wanted to make a comparison video to make the project rating atleast a little easier. To my absolute unfortune I got unlucky (almost every seed will have the issue-causing chunk somewhere, but sometimes it is furhter then other times) with three seeds in a row and it takes ages to generate the chunks in worlds, during which I had to just sit back and watch as they slowly load. Thus I’m sorry for not making it easier to rate, but I’ll cook my pc alive if I keep on loading more chunks."}, {"post_id": 17177, "ts": "2026-06-27T21:40:32Z", "hours": 0.3386, "text": "So I just added logging whenever the mod is used.. maybe not the best idea ever, but hey, if you ever need to know for whatever reason that the mod works here you go."}, {"post_id": 17142, "ts": "2026-06-27T20:32:43Z", "hours": 0.8408, "text": "I just re-designed the old icon for the mod, now looking way cleaner and sharper. It is now a part of the mod as its main icon."}, {"post_id": 16842, "ts": "2026-06-27T10:47:51Z", "hours": 1.8572, "text": "Yay, the mod seems to be doing a good job at preventing the crashes, even after generating 142k+ chunks, not a single crash happened!"}]...
|
Title: Serene Seasons Gen Fix by @Fiskerz | Starda Title: Serene Seasons Gen Fix by @Fiskerz | Stardance
Devlogs:
Yay, the mod seems to be doing a good job at preventing the crashes, even after generating 142k+ chunks, not a single crash happened!
I just re-designed the old icon for the mod, now looking way cleaner and sharper. It is now a part of the mod as its main icon.
So I just added logging whenever the mod is used.. maybe not the best idea ever, but hey, if you ever need to know for whatever reason that the mod works here you go.
Ported the fix to Forge and Fabric! Devlog #4 I did not expect to make any sort of update to this patch mod, yet I found out forge (and possibly fabric too) suffer from the issue. Thus it felt right to make the versions available as well, so that no one has to make it instead of me. I made sure to publish the versions to CurseForge and Modrinth as before and I made a tiny change to the github repo on my way too. The reason for this ridiculously high time logged (the project itself took initially just 3 hours) is because I wanted to make a comparison video to make the project rating atleast a little easier. To my absolute unfortune I got unlucky (almost every seed will have the issue-causing chunk somewhere, but sometimes it is furhter then other times) with three seeds in a row and it takes ages to generate the chunks in worlds, during which I had to just sit back and watch as they slowly load. Thus I’m sorry for not making it easier to rate, but I’ll cook my pc alive if I keep on loading more chunks.
Tried to catch the crash live, yet failed.. (again) I tried to catch the crash live for a comparison video to make the rating a teeny tiny bit easier, but I failed for like the fifth time, it now just does not crash. Funny enough when you need it the least it will of course crash, but it is, what it is… Now to prove that I am not going insane or smth I still have the old logs, that very clearly show the crash, such as the one I inserted in, but I can’t figure out just why it won’t happen again now that I actually do want it to crash.
Ships:
I made a minecraft mod that has one purpose - fix an issue where modded servers crash due to a known problematic method that serene seasons uses. I took on this project because I saw nobody else doing anything about it, or keeping their solutions only to themselves. It was a whole new experience for me, as I’ve never made a minecraft mod, so I had to learn most of the things the hard way. I’m proud that it took me a pretty small amount of time to make it and also that I even finished it. To truly test this mod I reccomend making a 1.21.1 neoforge server with serene seasons present, some world generation mod like tectonic and using chunky to generate a few hundred chunks. Sure, not the easiest setup, but the project’s main focus is to fix a moreover niche issue.
What the hell am I looking at? If you’re asking that, well I am here to explain that. This is a Minecraft mod that aims to fix one known issue for the 1.21.x versions of the game. Technical overview The vanilla issue has already been covered by a mod named WorldGenFeatureFix, but if you install the serene seasons mod and try loading a few dozen chunks the server is likely to crash, even with the fixing mod present. This is beacause serene seasons skip the fixed chunk of code and go straight for the vanilla broken one. If you want a bit more detail on this issue, be sure to check out the github repo. What does this ship even add? As you might have noticed, this is a second ship of the mod. The main reason why I even extended on the original is beacause the issue has been reported even outside neoforge, the mod loader I originally made the mod for. Thus this ship adds support for Forge and Fabric loader, covering a slightly larger section of people Where can I get this mod? I have published all of the new versions of the mod to CurseForge and Modrinth , so you choose where you want to obtain it. How can I try this out for myself? Well this is the only part of this project that takes a bit of a toll on it. You see, because the mod fixes such a specific and rather rare issue there is not a very reliable and most importantly simple way to fully test it. I really, really wanted to make a comparison video to be able to show it to you atleast on the video, but guess what? Now that I want the server to crash it doesn’t :| No jokes, but I spent almost 6 hours just trying to catch that crash and it just refused to. So sorry, but you will have to test it the old way . The old way to test Make a world, or set-up a minecraft server for any of the compatible versions (most common crashes occur on Neoforge) and install the mod, alongside: Serene seasons (and its dependencies), WorldGenFeatureFix and to make the crash more likely to happen, add any world generation mod. And now observe no crashes at all. I know this is a very complicated way to test, but there’s just not a way to do it simpler....
|
1793483328.0734663
|
1793569728.0734663
|
|
40964
|
My very own WebOS by @nathkirkgamer01 | Stardance
|
nathkirkgamer01
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-10T21:42:40Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I make an Os which was my first project and involved simple coding skills.", "repo": "https://github.com/nathkirkgamer01/duck-club", "demo": "https://app.netlify.com/projects/neon-froyo-dabd63/overview"}]...
|
[{"post_id": 44173, "ts": "202 [{"post_id": 44173, "ts": "2026-08-09T19:11:05Z", "hours": 0.5186, "text": "i am working on making my very own webOS which is my first ever project"}]...
|
Title: My very own WebOS by @nathkirkgamer01 | Sta Title: My very own WebOS by @nathkirkgamer01 | Stardance
Devlogs:
i am working on making my very own webOS which is my first ever project
Ships:
I make an Os which was my first project and involved simple coding skills....
|
1793483330.4004211
|
1793569730.4004211
|
|
24645
|
ForestOS by @laupi_oida | Stardance
|
laupi_oida
|
1
|
23.12
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T20:07:52Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an WebOS themed around the forest. I really liked how the style turned out at the end and I’m really proud of my code because it’s very clean (I think).", "repo": "https://github.com/Laup0403/LaupiOS", "demo": "https://laup0403.github.io/ForestOS/"}]...
|
[{"post_id": 39102, "ts": "202 [{"post_id": 39102, "ts": "2026-08-01T20:12:11Z", "hours": 2.9761, "text": "ForestOS devlog #6 Hello, Moin and Grüezi! I haven’t posted a devlog in 12 days because I was busy or something. Spoiler Warning! But: We have our first enemie: The ram eater! He is completely buggy and you couldn’t see him in the video but I will fix that. And first I added some story to the notes, programmed a Files app, but I currently don’t have a name for it and I added some terminal commands and a crazy Jumpscare. Try it out now or later or never :( So that was a pretty messy devlog and update but anyways, bye Twin!"}, {"post_id": 31679, "ts": "2026-07-20T09:03:37Z", "hours": 2.3183, "text": "ForestOS devlog #5 I made it so, that at first you have just the welcome window and you must unlock other windows. The first window you unlock is the notes app and you unlock it if you press The big red button And i changed the notes content. Bye Twin!"}, {"post_id": 29061, "ts": "2026-07-15T18:28:56Z", "hours": 3.1597, "text": "ForestOS devlog #4 Big News: ForestOS will now get story! Yesterday I wanted to make a forest themed game for ForestOS, but then I got the wonderful Idea, to make ForestOS to a game. I’ve never saw something like this and I think it could be pretty fun. So I made some plans and already and changed the style and made it a bit darker. That was it for now and sorry, if my english was bad. Have a good day Twin✌️"}, {"post_id": 27285, "ts": "2026-07-12T18:43:52Z", "hours": 1.6697, "text": "ForestOS devlog #3 World, greetings to you! You know, I’m kind of a Linux Larper and of course I need a terminal. So I made one: ForestBreaker! There are some commands that the ForestOS Github Repo available, like forestfetch (the ultimate larper command). That was it for this devlog. Bye, Twin!"}, {"post_id": 26782, "ts": "2026-07-11T19:36:06Z", "hours": 3.4939, "text": "ForestOS devlog #2 World, greetings to you! ForestOS 1.0 is now out. And the best part: you can test it. Just click here: https://laup0403.github.io/ForestOS/ I hope you will test it and find the Easteregg I implemented. And I also added a new App: the Tincan Phone. Now you can hear your favorite animals! (What a blessing) and you can also call the Callcenter. (for my german friends) That was it for this Update and I would really enjoy, if you would try my site. Have a very excellent day, Twin!"}, {"post_id": 24876, "ts": "2026-07-08T18:42:54Z", "hours": 0.7294, "text": "ForestOS devlog #1 World, greetings to you! LaupiOS is from the past. Now I renamed it ForestOS and and I will focus on a forest theme. And I redesigned the welcome screen (hopefully the last time). And I will now post hopefully more devlogs because I have summer holidays now. Anyways that was it for this devlog. Bye, twin!"}, {"post_id": 23091, "ts": "2026-07-05T20:35:57Z", "hours": 3.6433, "text": "LaupiOS devlog #4 World, greetings to you! I added a new app: Nutnotes! There I will write something and currently there is a welcome note and a futures plans note. I also changed the theme more and I think, I’ll might change the name and the theme of this project and I made it so the window you tapped last is on top. And I improved my code more. That was everything. Bye, twin!"}, {"post_id": 19394, "ts": "2026-06-30T18:18:56Z", "hours": 2.8181, "text": "LaupiOS devlog #3 World, greetings to you! I’ve got my mouse back and worked on LaupiOS. I changed the theme so it is a forest/green theme now, you can now close and open the windows and I changed a lot in my code so it’s more readable and I understand it halfway. That was it for tody. Have a good day!"}, {"post_id": 17102, "ts": "2026-06-27T19:29:04Z", "hours": 1.9111, "text": "LaupiOS devlog #2 World, greeting to you! I’ve lost my mouse today, but I also worked on LaupiOS. Here’s what I added: -a live Wallpaper -a Taskbar (a bit buggy tbh) -the site is now a window -you can drag, rotate and close the window."}, {"post_id": 15676, "ts": "2026-06-25T14:17:38Z", "hours": 0.8622, "text": "LaupiOS devlog #1 World, greetings to you! I wanted to make LaupiOS (I know very creative Name) but I have just made games so I thougth this is the right time to learn html. So I’ve learned the basics first and made a simple Website."}]...
|
Title: ForestOS by @laupi_oida | Stardance
Devlog Title: ForestOS by @laupi_oida | Stardance
Devlogs:
LaupiOS devlog #1 World, greetings to you! I wanted to make LaupiOS (I know very creative Name) but I have just made games so I thougth this is the right time to learn html. So I’ve learned the basics first and made a simple Website.
LaupiOS devlog #2 World, greeting to you! I’ve lost my mouse today, but I also worked on LaupiOS. Here’s what I added: -a live Wallpaper -a Taskbar (a bit buggy tbh) -the site is now a window -you can drag, rotate and close the window.
LaupiOS devlog #3 World, greetings to you! I’ve got my mouse back and worked on LaupiOS. I changed the theme so it is a forest/green theme now, you can now close and open the windows and I changed a lot in my code so it’s more readable and I understand it halfway. That was it for tody. Have a good day!
LaupiOS devlog #4 World, greetings to you! I added a new app: Nutnotes! There I will write something and currently there is a welcome note and a futures plans note. I also changed the theme more and I think, I’ll might change the name and the theme of this project and I made it so the window you tapped last is on top. And I improved my code more. That was everything. Bye, twin!
ForestOS devlog #1 World, greetings to you! LaupiOS is from the past. Now I renamed it ForestOS and and I will focus on a forest theme. And I redesigned the welcome screen (hopefully the last time). And I will now post hopefully more devlogs because I have summer holidays now. Anyways that was it for this devlog. Bye, twin!
ForestOS devlog #2 World, greetings to you! ForestOS 1.0 is now out. And the best part: you can test it. Just click here: https://laup0403.github.io/ForestOS/ I hope you will test it and find the Easteregg I implemented. And I also added a new App: the Tincan Phone. Now you can hear your favorite animals! (What a blessing) and you can also call the Callcenter. (for my german friends) That was it for this Update and I would really enjoy, if you would try my site. Have a very excellent day, Twin!
ForestOS devlog #3 World, greetings to you! You know, I’m kind of a Linux Larper and of course I need a terminal. So I made one: ForestBreaker! There are some commands that the ForestOS Github Repo available, like forestfetch (the ultimate larper command). That was it for this devlog. Bye, Twin!
ForestOS devlog #4 Big News: ForestOS will now get story! Yesterday I wanted to make a forest themed game for ForestOS, but then I got the wonderful Idea, to make ForestOS to a game. I’ve never saw something like this and I think it could be pretty fun. So I made some plans and already and changed the style and made it a bit darker. That was it for now and sorry, if my english was bad. Have a good day Twin✌️
ForestOS devlog #5 I made it so, that at first you have just the welcome window and you must unlock other windows. The first window you unlock is the notes app and you unlock it if you press The big red button And i changed the notes content. Bye Twin!
ForestOS devlog #6 Hello, Moin and Grüezi! I haven’t posted a devlog in 12 days because I was busy or something. Spoiler Warning! But: We have our first enemie: The ram eater! He is completely buggy and you couldn’t see him in the video but I will fix that. And first I added some story to the notes, programmed a Files app, but I currently don’t have a name for it and I added some terminal commands and a crazy Jumpscare. Try it out now or later or never :( So that was a pretty messy devlog and update but anyways, bye Twin!
Ships:
I made an WebOS themed around the forest. I really liked how the style turned out at the end and I’m really proud of my code because it’s very clean (I think)....
|
1793483332.449061
|
1793569732.449061
|
|
58651
|
Pirate Pack (Minecraft plugin/datapack) by @FishyM Pirate Pack (Minecraft plugin/datapack) by @FishyMC | Stardance...
|
FishyMC
|
1
|
9.38
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T17:53:49Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a purely client side custom forge and cutlass plugin, with folia multi threaded support. On top of this, there is a datpack for pirate-like world generation :) Hard parts were the boring automation parts, and stuff like that. Also creating it all server-side was hard, but paper docs helped me!!! https://youtu.be/JcB3DCDgQ-M", "repo": "https://github.com/FishyMCDev/Pirates-and-stuff", "demo": "https://www.curseforge.com/minecraft/data-packs/pirates-n-more/preview"}]...
|
[{"post_id": 82238, "ts": "202 [{"post_id": 82238, "ts": "2026-10-24T11:18:30Z", "hours": 3.0858, "text": "Updated the entire readme.md I also added a whole lot of lag control for this! The datapack works really well now, updated curseforge, waiting for modrinth to verify"}, {"post_id": 70115, "ts": "2026-09-18T14:22:03Z", "hours": 0.2514, "text": "CURSEFORGE > MODRINTH You may now access the curseforge link at: https://www.curseforge.com/minecraft/data-packs/pirates-n-more/preview"}, {"post_id": 65540, "ts": "2026-09-10T19:01:59Z", "hours": 1.0453, "text": "Finally updated the Modrinth page! **Currently under review, can be seen at: https://modrinth.com/datapack/pirate-pack ** Enjoy some cooler photos now :)"}, {"post_id": 62328, "ts": "2026-09-05T17:09:43Z", "hours": 5.0383, "text": "Long overdue devlog This datpack incoroporates: Terralith Incendium Continents Dungeons and Taverns All together to create pirate-like world generation for the popular server PiratesMC (2.5k $ goal met!!!) The nether and end also have purple and red water oceans, and caves, so people can sail in the nether! In this devlog, I added all of the features, but there are still errors with startup, and level.dat crashes out if you remove the datapack. Incendium has a native error with the incendium:clock which INCENERATES the server thread and TPS. so that needs to be fixed in the next commit! I have also worked on a CUTLASSES plugin, which adds cutlasses to the game. This is really cool In the meantime, enjoy some AMAZING worldgeneration!"}]...
|
Title: Pirate Pack (Minecraft plugin/datapack) by Title: Pirate Pack (Minecraft plugin/datapack) by @FishyMC | Stardance
Devlogs:
Long overdue devlog This datpack incoroporates: Terralith Incendium Continents Dungeons and Taverns All together to create pirate-like world generation for the popular server PiratesMC (2.5k $ goal met!!!) The nether and end also have purple and red water oceans, and caves, so people can sail in the nether! In this devlog, I added all of the features, but there are still errors with startup, and level.dat crashes out if you remove the datapack. Incendium has a native error with the incendium:clock which INCENERATES the server thread and TPS. so that needs to be fixed in the next commit! I have also worked on a CUTLASSES plugin, which adds cutlasses to the game. This is really cool In the meantime, enjoy some AMAZING worldgeneration!
Finally updated the Modrinth page! **Currently under review, can be seen at: https://modrinth.com/datapack/pirate-pack ** Enjoy some cooler photos now :)
CURSEFORGE > MODRINTH You may now access the curseforge link at: https://www.curseforge.com/minecraft/data-packs/pirates-n-more/preview
Updated the entire readme.md I also added a whole lot of lag control for this! The datapack works really well now, updated curseforge, waiting for modrinth to verify
Ships:
I made a purely client side custom forge and cutlass plugin, with folia multi threaded support. On top of this, there is a datpack for pirate-like world generation :) Hard parts were the boring automation parts, and stuff like that. Also creating it all server-side was hard, but paper docs helped me!!! https://youtu.be/JcB3DCDgQ-M...
|
1793483334.6108847
|
1793569734.6108847
|
|
14213
|
My very own WebOS by @Grace3 | Stardance
|
Grace3
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T21:00:18Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Storing content in JavaScript was hard and confusing, and it was the longest and most technical project I have ever done. I have only ever done simple projects like a website built on only html but this project involved CSS, JavaScript, and html which proved to be difficult but I am happy that I was able to do it, and I hope to do more", "repo": "https://github.com/Temi-ay/OS", "demo": "https://temi-ay.github.io/OS/"}]...
|
[{"post_id": 11543, "ts": "202 [{"post_id": 11543, "ts": "2026-06-18T20:48:30Z", "hours": 3.6989, "text": "Finally done, My very own website"}, {"post_id": 7064, "ts": "2026-06-11T20:40:51Z", "hours": 4.4775, "text": "Web OS1 part2&3"}, {"post_id": 6156, "ts": "2026-06-10T10:58:26Z", "hours": 1.8089, "text": "WebOS1 part 1"}]...
|
Title: My very own WebOS by @Grace3 | Stardance
D Title: My very own WebOS by @Grace3 | Stardance
Devlogs:
WebOS1 part 1
Web OS1 part2&3
Finally done, My very own website
Ships:
Storing content in JavaScript was hard and confusing, and it was the longest and most technical project I have ever done. I have only ever done simple projects like a website built on only html but this project involved CSS, JavaScript, and html which proved to be difficult but I am happy that I was able to do it, and I hope to do more...
|
1793483339.596933
|
1793569739.596933
|
|
70417
|
Pro website by @syedakhter | Stardance
|
syedakhter
|
1
|
2.0
|
1
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-19T01:12:51Z", "hours": 2.0, "multiplier": 1.0, "payout": 1, "blessing": "neutral", "text": "This is a website i made using js html and css and this website is going pro.", "repo": "https://github.com/8051987-eng/pro-website", "demo": "https://8051987-eng.github.io/pro-website/"}]...
|
[{"post_id": 80856, "ts": "202 [{"post_id": 80856, "ts": "2026-10-19T01:11:57Z", "hours": 2.0783, "text": "A pro website"}]...
|
Title: Pro website by @syedakhter | Stardance
Dev Title: Pro website by @syedakhter | Stardance
Devlogs:
A pro website
Ships:
This is a website i made using js html and css and this website is going pro....
|
1793483341.738611
|
1793569741.738611
|
|
19087
|
Data Masking Web App by @devadit15 | Stardance
|
devadit15
|
1
|
9.0
|
101
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T06:20:46Z", "hours": 9.0, "multiplier": 11.69, "payout": 101, "blessing": "neutral", "text": "Cloakroom is a privacy layer that sits between your app and any AI model — it swaps out sensitive stuff (names, bank accounts, card numbers etc.) for harmless placeholder tokens before the model ever sees them, then puts the real values back in the answer to prevent LLM’s from accessing sensitive information.", "repo": "https://github.com/devadit1515/cloakroom", "demo": "https://cloakroom-mu.vercel.app/"}]...
|
[{"post_id": 14322, "ts": "202 [{"post_id": 14322, "ts": "2026-06-23T12:37:26Z", "hours": 8.6203, "text": "Everytime you paste something into an AI you hand over everything in it — your name, account number, the medical stuff you’d rather nobody saw — and the model doesn’t actually need any of that to be useful, it just needs the shape and relationships of the data, not the real identities. So I built Cloakroom as a passion project, nobody asked me to, I just got obsessed and wanted to see if I could pull it off end to end. It’s a privacy layer that sits between your app and any AI and runs a four-step loop: detect the sensitive bits, mask each one with a stable token like [PFI_ACCOUNT_1], let the model reason over just the tokens, then put the real values back in the final answer so only you see them. The stable part matters — the same value always maps to the same token, so a name that shows up three times stays one token all three times, meaning the model can still reason about who owns what without ever learning who’s who. A few things got tricky: a 12-digit number in India could be a bank account or half an Aadhaar, so I use the surrounding fields to tell them apart, and a “person” in a financial context isn’t just a person, they’re the account holder, a different sensitivity class. I also scan the model’s output afterward in case it leaks or hallucinates a real-looking number on its own, and flag it. And it only logs counts, never raw values, so you can prove what got masked without keeping a second copy of the exact data you were protecting. It grew a few faces too — a Python library, an HTTP service any language can call, a live web playground where you paste a record and watch it get masked and restored in real time, and a browser extension for the “just protect me as I type” version. It’s also cloud-agnostic: the detector, the encrypted vault, and the model are all swappable with one setting, so it runs completely free with zero paid keys out of the box, but flip a couple env vars and the same code runs on managed cloud services at scale, no rewrite. Not everything’s done — free-text names need a real NER model over plain regex, a couple cloud adapters are half-built, and there’s a tuning dashboard I sketched but haven’t made, though the audit stream already emits the data it’d need. Next I want to finish that dashboard, round out the adapters so it’s genuinely any-provider, push detection smarter with better NER and more region-specific ID formats since India was just the start, and make the extension seamless enough that you forget it’s there — because that’s the whole point, privacy shouldn’t be something you remember to switch on, it should just be there by default like HTTPS, and Cloakroom is my attempt at making that normal."}]...
|
Title: Data Masking Web App by @devadit15 | Starda Title: Data Masking Web App by @devadit15 | Stardance
Devlogs:
Everytime you paste something into an AI you hand over everything in it — your name, account number, the medical stuff you’d rather nobody saw — and the model doesn’t actually need any of that to be useful, it just needs the shape and relationships of the data, not the real identities. So I built Cloakroom as a passion project, nobody asked me to, I just got obsessed and wanted to see if I could pull it off end to end. It’s a privacy layer that sits between your app and any AI and runs a four-step loop: detect the sensitive bits, mask each one with a stable token like [PFI_ACCOUNT_1], let the model reason over just the tokens, then put the real values back in the final answer so only you see them. The stable part matters — the same value always maps to the same token, so a name that shows up three times stays one token all three times, meaning the model can still reason about who owns what without ever learning who’s who. A few things got tricky: a 12-digit number in India could be a bank account or half an Aadhaar, so I use the surrounding fields to tell them apart, and a “person” in a financial context isn’t just a person, they’re the account holder, a different sensitivity class. I also scan the model’s output afterward in case it leaks or hallucinates a real-looking number on its own, and flag it. And it only logs counts, never raw values, so you can prove what got masked without keeping a second copy of the exact data you were protecting. It grew a few faces too — a Python library, an HTTP service any language can call, a live web playground where you paste a record and watch it get masked and restored in real time, and a browser extension for the “just protect me as I type” version. It’s also cloud-agnostic: the detector, the encrypted vault, and the model are all swappable with one setting, so it runs completely free with zero paid keys out of the box, but flip a couple env vars and the same code runs on managed cloud services at scale, no rewrite. Not everything’s done — free-text names need a real NER model over plain regex, a couple cloud adapters are half-built, and there’s a tuning dashboard I sketched but haven’t made, though the audit stream already emits the data it’d need. Next I want to finish that dashboard, round out the adapters so it’s genuinely any-provider, push detection smarter with better NER and more region-specific ID formats since India was just the start, and make the extension seamless enough that you forget it’s there — because that’s the whole point, privacy shouldn’t be something you remember to switch on, it should just be there by default like HTTPS, and Cloakroom is my attempt at making that normal.
Ships:
Cloakroom is a privacy layer that sits between your app and any AI model — it swaps out sensitive stuff (names, bank accounts, card numbers etc.) for harmless placeholder tokens before the model ever sees them, then puts the real values back in the answer to prevent LLM’s from accessing sensitive information....
|
1793483360.8653233
|
1793569760.8653233
|
|
58655
|
Sleep Cognition ML by @s_ray9 | Stardance
|
s_ray9
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T20:53:44Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The pipeline is up! I built a research pipeline to evaluate whether ML model feature importance is trustworthy given a small, imbalanced medical dataset. What’s exciting is that it uses the relatively new 2026 PhysioNet Challenge sleep dataset, so it’s new stuff! It was a huge pain getting the pipeline to work reliably. I had to reorganize the data, which kept messing stuff up, and it was pretty slow and uneventful at times. I had to deal with file mismatches, adapt to missing files, and figure out how to handle licensing between my code and the original Challenge code. However, the real challenge was validating results and catching a mistake along the way. Initially, I thought a feature like arousal frequency was the strongest predictor after two separate runs. At the time, it seemed promising, but I was unsure. When I tested it across 20 random seeds, it completely died. I’m pretty glad I kept digging deeper and running precautionary tests; I’m proud of realizing that mistake, which is a crucial skill in real research. Anyways, if you want to try it, there’s no clickable button. Since it’s analysis code, you’ll have to clone the repo, follow the setup in the README, and run the scripts yourself. You should get the same numbers I did. If not, please let me know. Oh, and please let me know what you think, or if I made a mistake (you can never be too careful)!", "repo": "https://github.com/s-ray9/sleep-cognition-ml", "demo": "https://s-ray9.github.io/sleep-cognition-ml"}]...
|
[{"post_id": 65192, "ts": "202 [{"post_id": 65192, "ts": "2026-09-10T04:49:48Z", "hours": 0.2839, "text": "Devlog 2: Live on GitHub Pages I just deployed the core project documentation and README to GitHub Pages using Jekyll! I just standardized the project layout and set up a Cayman Jekyll theme. Some parts of the README kept breaking, so I had to migrate to semantic HTML. Everything is close to finished, if not already. Go check it out!"}, {"post_id": 65170, "ts": "2026-09-10T03:35:25Z", "hours": 6.7833, "text": "Devlog 1: First major milestone! I just reached my first major milestone in building a full ML pipeline on the 2026 PhysioNet Challenge sleep dataset! Since it’s a relatively new dataset, I decided to train a model and predict cognitive impairment from overnight sleep recordings. It took several hours to finish up the presentation and organize the key results. Initially, the baseline model showed promise (92% accuracy). However, it was basically guessing “no impairment” and hoping for the best, since there was only around 8% prevalence of cognitive impairment across all patients. When I fixed the class imbalance and model setup, the real score was 0.80.What’s cool is that arousal frequency looked like the top predictor across two separate runs, and I thought it was a real finding, but when I tested it across 20 random seeds, it completely fell apart. Of the full 75 features, the results indicate that only age and BMI really mattered, even though the model performed best after only seeing the top 10 features. Interestingly, those extra, noisy features actually did something: they degraded the model’s performance."}]...
|
Title: Sleep Cognition ML by @s_ray9 | Stardance
Title: Sleep Cognition ML by @s_ray9 | Stardance
Devlogs:
Devlog 1: First major milestone! I just reached my first major milestone in building a full ML pipeline on the 2026 PhysioNet Challenge sleep dataset! Since it’s a relatively new dataset, I decided to train a model and predict cognitive impairment from overnight sleep recordings. It took several hours to finish up the presentation and organize the key results. Initially, the baseline model showed promise (92% accuracy). However, it was basically guessing “no impairment” and hoping for the best, since there was only around 8% prevalence of cognitive impairment across all patients. When I fixed the class imbalance and model setup, the real score was 0.80.What’s cool is that arousal frequency looked like the top predictor across two separate runs, and I thought it was a real finding, but when I tested it across 20 random seeds, it completely fell apart. Of the full 75 features, the results indicate that only age and BMI really mattered, even though the model performed best after only seeing the top 10 features. Interestingly, those extra, noisy features actually did something: they degraded the model’s performance.
Devlog 2: Live on GitHub Pages I just deployed the core project documentation and README to GitHub Pages using Jekyll! I just standardized the project layout and set up a Cayman Jekyll theme. Some parts of the README kept breaking, so I had to migrate to semantic HTML. Everything is close to finished, if not already. Go check it out!
Ships:
The pipeline is up! I built a research pipeline to evaluate whether ML model feature importance is trustworthy given a small, imbalanced medical dataset. What’s exciting is that it uses the relatively new 2026 PhysioNet Challenge sleep dataset, so it’s new stuff! It was a huge pain getting the pipeline to work reliably. I had to reorganize the data, which kept messing stuff up, and it was pretty slow and uneventful at times. I had to deal with file mismatches, adapt to missing files, and figure out how to handle licensing between my code and the original Challenge code. However, the real challenge was validating results and catching a mistake along the way. Initially, I thought a feature like arousal frequency was the strongest predictor after two separate runs. At the time, it seemed promising, but I was unsure. When I tested it across 20 random seeds, it completely died. I’m pretty glad I kept digging deeper and running precautionary tests; I’m proud of realizing that mistake, which is a crucial skill in real research. Anyways, if you want to try it, there’s no clickable button. Since it’s analysis code, you’ll have to clone the repo, follow the setup in the README, and run the scripts yourself. You should get the same numbers I did. If not, please let me know. Oh, and please let me know what you think, or if I made a mistake (you can never be too careful)!...
|
1793483364.0165844
|
1793569764.0165844
|
|
27433
|
Security alarm by @dim | Stardance
|
dim
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T08:57:09Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A security alarm. It was difficult to find the correct libraries for my components and that pushed me back a bit on time. I am proud because this is my first project ever.", "repo": "https://github.com/the-dimpol-13/DimPad", "demo": ""}]...
|
[{"post_id": 51512, "ts": "202 [{"post_id": 51512, "ts": "2026-08-21T08:39:54Z", "hours": 0.5522, "text": "Made this security alarm that can be armed disarmed with an nfc card. Made in about 4 hours for the final version. Its my first arduini project since i began my enginnering journey."}]...
|
Title: Security alarm by @dim | Stardance
Devlogs Title: Security alarm by @dim | Stardance
Devlogs:
Made this security alarm that can be armed disarmed with an nfc card. Made in about 4 hours for the final version. Its my first arduini project since i began my enginnering journey.
Ships:
A security alarm. It was difficult to find the correct libraries for my components and that pushed me back a bit on time. I am proud because this is my first project ever....
|
1793483368.1350367
|
1793569768.1350367
|
|
6220
|
Collatz Conjecture Visualizer by @Bandit | Stardan Collatz Conjecture Visualizer by @Bandit | Stardance...
|
Bandit
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T11:28:59Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is a simple Python implementation of the Collatz Conjecture also know as (3n +1 problem)", "repo": "", "demo": ""}]...
|
[{"post_id": 20697, "ts": "202 [{"post_id": 20697, "ts": "2026-07-02T11:19:08Z", "hours": 0.0, "text": "I got it. ..!"}]...
|
Title: Collatz Conjecture Visualizer by @Bandit | Title: Collatz Conjecture Visualizer by @Bandit | Stardance
Devlogs:
I got it. ..!
Ships:
This is a simple Python implementation of the Collatz Conjecture also know as (3n +1 problem)...
|
1793483372.121876
|
1793569772.121876
|
|
26089
|
NebulaOS by @Ishaan_Jha | Stardance
|
Ishaan_Jha
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-09T18:38:25Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first webOS, called NebulaOS! It is a space themed webOS, with light and dark mode, showing a cosmos themed background. It includes draggable windows/panels of mission control, file bay, astro notes, star explorer, and comms radio. While the data is obviously random, parts like star names are all true. It is also interactive, with occasional messages of detection of satellites, or telemetry data. Some challenges was the UI, as it was difficult to add highlights to some buttons on the panels, as well as the transition from light and dark mode. The backend was not too hard, as it contained basic draggability, random data, simple animations, and maybe a little easter egg :)", "repo": "https://github.com/IJai-code/NebulaOS", "demo": "https://ijai-code.github.io/NebulaOS/"}]...
|
[{"post_id": 25442, "ts": "202 [{"post_id": 25442, "ts": "2026-07-09T18:34:23Z", "hours": 0.2622, "text": "Devlog #3 - Final Polish and Release PreparationFor the final stage of NebulaOS, I focused on preparing the project for release. I improved the documentation, reviewed the overall user experience, and tested the different applications and window interactions to make sure everything worked smoothly. This milestone was about refining the details and making sure NebulaOS was ready to be shared with others."}, {"post_id": 25431, "ts": "2026-07-09T18:16:48Z", "hours": 0.4453, "text": "Devlog #2 - Expanding NebulaOS Features after completing the core operating system, I focused on improving existing applications and making NebulaOS feel more complete. I added more depth to the Star Explorer experience, improved the way information is displayed, and tested how the new additions worked with the rest of the system. This stage was mainly about building on the foundation and making the OS more interactive while keeping the original design consistent."}, {"post_id": 25412, "ts": "2026-07-09T17:48:41Z", "hours": 0.5325, "text": "Today I focused on polishing (and building :) NebulaOS and making it feel more like a complete operating system. I improved the overall user experience, tested every app and window interaction, fixed small issues I found during testing, and made sure everything worked smoothly together. I also cleaned up the project, updated the documentation, and verified it was ready to be shared through GitHub and GitHub Pages."}]...
|
Title: NebulaOS by @Ishaan_Jha | Stardance
Devlog Title: NebulaOS by @Ishaan_Jha | Stardance
Devlogs:
Today I focused on polishing (and building :) NebulaOS and making it feel more like a complete operating system. I improved the overall user experience, tested every app and window interaction, fixed small issues I found during testing, and made sure everything worked smoothly together. I also cleaned up the project, updated the documentation, and verified it was ready to be shared through GitHub and GitHub Pages.
Devlog #2 - Expanding NebulaOS Features after completing the core operating system, I focused on improving existing applications and making NebulaOS feel more complete. I added more depth to the Star Explorer experience, improved the way information is displayed, and tested how the new additions worked with the rest of the system. This stage was mainly about building on the foundation and making the OS more interactive while keeping the original design consistent.
Devlog #3 - Final Polish and Release PreparationFor the final stage of NebulaOS, I focused on preparing the project for release. I improved the documentation, reviewed the overall user experience, and tested the different applications and window interactions to make sure everything worked smoothly. This milestone was about refining the details and making sure NebulaOS was ready to be shared with others.
Ships:
I made my first webOS, called NebulaOS! It is a space themed webOS, with light and dark mode, showing a cosmos themed background. It includes draggable windows/panels of mission control, file bay, astro notes, star explorer, and comms radio. While the data is obviously random, parts like star names are all true. It is also interactive, with occasional messages of detection of satellites, or telemetry data. Some challenges was the UI, as it was difficult to add highlights to some buttons on the panels, as well as the transition from light and dark mode. The backend was not too hard, as it contained basic draggability, random data, simple animations, and maybe a little easter egg :)...
|
1793483373.118548
|
1793569773.118548
|
|
42288
|
personal-site by @the1anonlypr3 | Stardance
|
the1anonlypr3
|
1
|
13.0
|
112
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T15:53:35Z", "hours": 13.0, "multiplier": 8.53, "payout": 112, "blessing": "neutral", "text": "i made a terminal emulator style personal website! a website made with html/css/js that talks about myself and my projects, besides having some fun commands and interactable elements features: persistent storage of themes and command history scrollable command history with up/down arrow functional filesystem able to be navigated with cd, ls, cat command parser that takes theoretically unlimited arguments five different themes autoscroll dynamic terminal path automatic scrolling to the latest command dynamic helpme.txt generated from available commands custom neofetch implementation responsive layout for mobile devices no libraries used error handling for all commands things that were challenging: learning JS reteaching myself html/css adding the filesystem, wrapping my head around commands in general. spent the most time on the command logic not breaking the entire site after one js implementation things im proud of: the site even works! wow! it’s not broken! implementation of functional commands and filesystem", "repo": "https://github.com/the1anonlypr3/personal-site", "demo": "https://the1anonlypr3.github.io/personal-site/"}]...
|
[{"post_id": 43323, "ts": "202 [{"post_id": 43323, "ts": "2026-08-08T14:55:16Z", "hours": 3.645, "text": "devlog 4: “i broke it” site is pretty much finished! added: better command parsing, commands take multiple arguments instead of one bunch of commands (ls, cat, cd all work!) SOME mobile functionality themes and command history now save between refreshes autoscroll there’s more cool stuff you just gotta use the site ;) https://the1anonlypr3.github.io/personal-site/"}, {"post_id": 42713, "ts": "2026-08-07T15:52:17Z", "hours": 2.5564, "text": "devlog #3 very happy with how the site has turned out! added: themes command arguments; logic is better learnt a bitta JS as well :) not too sure what else to add, might ship after i add autocomplete, maybe syntax highlighting and some other little commands <3"}, {"post_id": 41978, "ts": "2026-08-06T14:48:53Z", "hours": 4.9719, "text": "devlog numeros dos: JS lockin absolutely locked the frick in on js; added commands (long awaited update that took AGES and SO MUCH pain), command history and yeah that’s it lol but i learnt so much about JS so that’s amazing stuff i learnt: DOM arrays functions that JS is the worst language ever issues i faced: understanding what variables mean what, where i should be appending them generally just how it works arrays and how much of a pain they are how i fixed it: relentless trial and error. 5 hours for like 50 lines of code lol"}, {"post_id": 38923, "ts": "2026-08-01T14:56:15Z", "hours": 1.9692, "text": "devlog numero uno what’s up guys :) ignore the nearly two hours for incredibly basic styling lowkey had to reteach myself html lol main goal of this site is to emulate a linux terminal, with some unique stylised options relating to stuff i like as well. definitely happy with how it looks right now, next thing to work on is the javascript for the input field, not sure how im gonna get the whole command stuff working, might needa do more messing around with divs but we’ll see how it goes issues i faced aligning the text and icons in the top bar (probably spent 80% of my time on this) usual issues associated with divs and how fun they are to mess with forcing myself to not use ai how i fixed them found an article that literally instantly fixed it ^^^ thugged it out and used the brainpower stuff i learned: properly centering divs (was so terrible never again) styling input fields (pretty niche) stuff i will have to learn: javascript, mostly relating to tracking input fields (lowkey scared it’s gonna be hard, don’t hear good things about js) actually coding with docs like you would have to pre-ai (genuinely find it so hard to do this but im determined to use no AI)"}]...
|
Title: personal-site by @the1anonlypr3 | Stardance Title: personal-site by @the1anonlypr3 | Stardance
Devlogs:
devlog numero uno what’s up guys :) ignore the nearly two hours for incredibly basic styling lowkey had to reteach myself html lol main goal of this site is to emulate a linux terminal, with some unique stylised options relating to stuff i like as well. definitely happy with how it looks right now, next thing to work on is the javascript for the input field, not sure how im gonna get the whole command stuff working, might needa do more messing around with divs but we’ll see how it goes issues i faced aligning the text and icons in the top bar (probably spent 80% of my time on this) usual issues associated with divs and how fun they are to mess with forcing myself to not use ai how i fixed them found an article that literally instantly fixed it ^^^ thugged it out and used the brainpower stuff i learned: properly centering divs (was so terrible never again) styling input fields (pretty niche) stuff i will have to learn: javascript, mostly relating to tracking input fields (lowkey scared it’s gonna be hard, don’t hear good things about js) actually coding with docs like you would have to pre-ai (genuinely find it so hard to do this but im determined to use no AI)
devlog numeros dos: JS lockin absolutely locked the frick in on js; added commands (long awaited update that took AGES and SO MUCH pain), command history and yeah that’s it lol but i learnt so much about JS so that’s amazing stuff i learnt: DOM arrays functions that JS is the worst language ever issues i faced: understanding what variables mean what, where i should be appending them generally just how it works arrays and how much of a pain they are how i fixed it: relentless trial and error. 5 hours for like 50 lines of code lol
devlog #3 very happy with how the site has turned out! added: themes command arguments; logic is better learnt a bitta JS as well :) not too sure what else to add, might ship after i add autocomplete, maybe syntax highlighting and some other little commands <3
devlog 4: “i broke it” site is pretty much finished! added: better command parsing, commands take multiple arguments instead of one bunch of commands (ls, cat, cd all work!) SOME mobile functionality themes and command history now save between refreshes autoscroll there’s more cool stuff you just gotta use the site ;) https://the1anonlypr3.github.io/personal-site/
Ships:
i made a terminal emulator style personal website! a website made with html/css/js that talks about myself and my projects, besides having some fun commands and interactable elements features: persistent storage of themes and command history scrollable command history with up/down arrow functional filesystem able to be navigated with cd, ls, cat command parser that takes theoretically unlimited arguments five different themes autoscroll dynamic terminal path automatic scrolling to the latest command dynamic helpme.txt generated from available commands custom neofetch implementation responsive layout for mobile devices no libraries used error handling for all commands things that were challenging: learning JS reteaching myself html/css adding the filesystem, wrapping my head around commands in general. spent the most time on the command logic not breaking the entire site after one js implementation things im proud of: the site even works! wow! it’s not broken! implementation of functional commands and filesystem...
|
1793483376.451155
|
1793569776.451155
|
|
30432
|
My own site! by @blackbird | Stardance
|
|
2
|
29.0
|
127
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T18:22:43Z", "hours": 14.0, "multiplier": 9.04, "payout": 127, "blessing": "neutral", "text": "The second version of the site is up. This one has added a new UI (as I had a lot of fun with the last one) that moves as the user scrolls. This UI is based on engineering blueprints, as that is the career I’m hoping to go into in the future. There were a few interesting bugs with page links that I’ve never encountered before, but that was sorted out pretty quickly.", "repo": "https://github.com/flyingchickensaucer/personal-website", "demo": "https://personal-website-kohl-theta.vercel.app/"}, {"ship_num": 2, "ts": "2026-07-05T07:13:46Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finished putting the site up. The whole thing’s made to look like an old star chart, mostly because I think they look cool. The constellation on the front is Corvus. There’s also a little clock that runs solar, sidereal, and dynamical time at once, which nobody actually needs except astrophysicists, but it’s cool.", "repo": "https://github.com/flyingchickensaucer/personal-website", "demo": "https://personal-website-kohl-theta.vercel.app/"}]...
|
[{"post_id": 26710, "ts": "202 [{"post_id": 26710, "ts": "2026-07-11T17:40:20Z", "hours": 4.5483, "text": "The last of the edits are up! Most of the changes are just optimization and making sure that everything on the blueprint version of the site matches the star chart version without being the same. A few bugs popped up due to url linking issues, but those were fixed by swapping out the dev server, which was stripping trailing slashes so the blueprint pages kept using the star chart’s stylesheet. A secret 404 error page was also added, which will probably never pop up due to the site being so simple and unclicked-on."}, {"post_id": 25999, "ts": "2026-07-10T15:35:41Z", "hours": 6.4333, "text": "In this iteration, I added a lot of moving parts to the background, and all are up and spinning. There are still issues with the website not looking good on mobile and objects spinning the wrong way. There isn’t much to say, as it’s mostly just UI changes to make the background more intricate and add an image of a plane. To Do: make sure all the background elements spin the right way change the formatting for the rest of the pages switch out the plane image (it’s kind of ugly, I take suggestions)"}, {"post_id": 25779, "ts": "2026-07-10T07:26:45Z", "hours": 3.0639, "text": "I am starting a new UI in addition to my previous one, as I had a lot of fun with it. Here is currently a preview of it. The rest will take a very long time, but it likely won’t seem like much as it’s mostly just adding movement to the background. Some of the issues I have had include drawing out all the gears in the background and just figuring out a unique UI that both matches with the star chart one and reflects my interest in engineering. To Do: make the background gears turn as I scroll the page add more ui elements to the background give the ui a bit more warmth (the blue seems too cold)"}, {"post_id": 22637, "ts": "2026-07-05T05:57:48Z", "hours": 7.2603, "text": "There are minimal changes to the site, but also rather time-consuming ones. The main difference is the background, which required much trial and error. The clock section was also changed and the constellation fixed."}, {"post_id": 22215, "ts": "2026-07-04T16:05:24Z", "hours": 2.3575, "text": "The changes made in this iteration were mostly unnoticable small bugs. For one, the bar at the top was not leaving the page when I scrolled. This was of my own fault for adding a setting that I didn’t want. I changed the constellation to better fit, but it still needs tweaking. The three clocks for important astrophysics times were added. To Do: change clock position to a better place (I take suggestions!) add more to the background improve the star positioning for the constellation"}, {"post_id": 22019, "ts": "2026-07-04T08:10:07Z", "hours": 5.0661, "text": "This is a long overdue devlog. I spent about five hours with this project without even noticing time going by because I was so excited to make this cool new UI. Built out my personal site around a star-atlas-chart theme, with four pages: home, about, resume, and a “random stuff” page for small games and experiments. Got it deployed to GitHub and Vercel (Vercel was previously done already as this is a long term project). Still to do: Fix the constellation (Corvus is wrong and I need to recalculate the star positions) Figure out how to add sidereal time + UTC to the page Fix the top nav bar cause the links are hard to click right now Add more lines to the background so it seems written on"}]...
|
Title: My own site! by @blackbird | Stardance
Dev Title: My own site! by @blackbird | Stardance
Devlogs:
This is a long overdue devlog. I spent about five hours with this project without even noticing time going by because I was so excited to make this cool new UI. Built out my personal site around a star-atlas-chart theme, with four pages: home, about, resume, and a “random stuff” page for small games and experiments. Got it deployed to GitHub and Vercel (Vercel was previously done already as this is a long term project). Still to do: Fix the constellation (Corvus is wrong and I need to recalculate the star positions) Figure out how to add sidereal time + UTC to the page Fix the top nav bar cause the links are hard to click right now Add more lines to the background so it seems written on
The changes made in this iteration were mostly unnoticable small bugs. For one, the bar at the top was not leaving the page when I scrolled. This was of my own fault for adding a setting that I didn’t want. I changed the constellation to better fit, but it still needs tweaking. The three clocks for important astrophysics times were added. To Do: change clock position to a better place (I take suggestions!) add more to the background improve the star positioning for the constellation
There are minimal changes to the site, but also rather time-consuming ones. The main difference is the background, which required much trial and error. The clock section was also changed and the constellation fixed.
I am starting a new UI in addition to my previous one, as I had a lot of fun with it. Here is currently a preview of it. The rest will take a very long time, but it likely won’t seem like much as it’s mostly just adding movement to the background. Some of the issues I have had include drawing out all the gears in the background and just figuring out a unique UI that both matches with the star chart one and reflects my interest in engineering. To Do: make the background gears turn as I scroll the page add more ui elements to the background give the ui a bit more warmth (the blue seems too cold)
In this iteration, I added a lot of moving parts to the background, and all are up and spinning. There are still issues with the website not looking good on mobile and objects spinning the wrong way. There isn’t much to say, as it’s mostly just UI changes to make the background more intricate and add an image of a plane. To Do: make sure all the background elements spin the right way change the formatting for the rest of the pages switch out the plane image (it’s kind of ugly, I take suggestions)
The last of the edits are up! Most of the changes are just optimization and making sure that everything on the blueprint version of the site matches the star chart version without being the same. A few bugs popped up due to url linking issues, but those were fixed by swapping out the dev server, which was stripping trailing slashes so the blueprint pages kept using the star chart’s stylesheet. A secret 404 error page was also added, which will probably never pop up due to the site being so simple and unclicked-on.
Ships:
Finished putting the site up. The whole thing’s made to look like an old star chart, mostly because I think they look cool. The constellation on the front is Corvus. There’s also a little clock that runs solar, sidereal, and dynamical time at once, which nobody actually needs except astrophysicists, but it’s cool.
The second version of the site is up. This one has added a new UI (as I had a lot of fun with the last one) that moves as the user scrolls. This UI is based on engineering blueprints, as that is the career I’m hoping to go into in the future. There were a few interesting bugs with page links that I’ve never encountered before, but that was sorted out pretty quickly....
|
1793483383.6015673
|
1793569783.6015673
|
|
58667
|
Nisarga's portfolio website by @nisarga | Star Nisarga's portfolio website by @nisarga | Stardance...
|
nisarga
|
1
|
13.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T18:05:32Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have put in my heart and soul to my portfolio, hope its up to the mark. There are unique features like dot cursor, loading animation. Its a complete site with 5 unique pages. Give it look, and try to find the easter egg that I have hidden in the webiste if you can. Had an amazing time building it!!! ;D", "repo": "https://github.com/nisarga-hb/my-website", "demo": "https://nisarga-hb.github.io/my-website/"}]...
|
[{"post_id": 62355, "ts": "202 [{"post_id": 62355, "ts": "2026-09-05T17:59:37Z", "hours": 12.8417, "text": "Reposting my Self made Portfolio under missions of stardance. I have worked vey hard and have used No AI. Please keep that in mind while rating. Coming to the things done, I have added Blog page and projects page to the website. there are animations now in the projects page, do check it out. More blogs are going to keep coming in blog page as i work on my future projects. Header also has a highlighted menu, hope its noticeble now. I have reowrked on the things mentioned in the previous ship and came back stronger. Hope now its good enough."}]...
|
Title: Nisarga's portfolio website by @nisarga Title: Nisarga's portfolio website by @nisarga | Stardance
Devlogs:
Reposting my Self made Portfolio under missions of stardance. I have worked vey hard and have used No AI. Please keep that in mind while rating. Coming to the things done, I have added Blog page and projects page to the website. there are animations now in the projects page, do check it out. More blogs are going to keep coming in blog page as i work on my future projects. Header also has a highlighted menu, hope its noticeble now. I have reowrked on the things mentioned in the previous ship and came back stronger. Hope now its good enough.
Ships:
I have put in my heart and soul to my portfolio, hope its up to the mark. There are unique features like dot cursor, loading animation. Its a complete site with 5 unique pages. Give it look, and try to find the easter egg that I have hidden in the webiste if you can. Had an amazing time building it!!! ;D...
|
1793483386.9641037
|
1793569786.9641037
|
|
37003
|
Ketchupware by @ketchupismm | Stardance
|
ketchupismm
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-21T05:06:52Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This project was made 100% human! Ketchupware, a game where you’re mayonnaise and you try to save your ketchup packets to use on fries and tater tots. Make it to level 8, you survive. Lose 3 ketchup packets, you lose the game. I used 100% Grodot features in this project. The hardest part was 100% the debugging. I had to debug everything where the tutorial was lowkey difficult and confusing for me. The proudest part of this challenge was making and learning how Godot works. The Nodes were really confusing and at the end, making everything really made me happy. People should know this was really bare-mininum, just completing all the tasks to shipping", "repo": "https://github.com/Ketchupism/Ketchupware", "demo": "https://ketchupism.itch.io/ketchupware"}]...
|
[{"post_id": 32146, "ts": "202 [{"post_id": 32146, "ts": "2026-07-21T03:30:22Z", "hours": 3.1997, "text": "Last devpost!! I have finally finished. I have finished the transition in making the scenes go into the level_scenes to check the amount of lives you have (changed it to 3), deleted the settings from menu, finished the clicker level, and have made both endings that go into the menu when you click the button. I have finished all requirement mininums and ready to submit"}, {"post_id": 31909, "ts": "2026-07-20T17:58:54Z", "hours": 1.7139, "text": "devpost 3: I spent time finishing up the first mini_game and added the ketchups for you to collect. I took a really long time to debug and fix issues with the scripts time. Next devpost I’ll probably finish the clicker game or add more details!"}, {"post_id": 31576, "ts": "2026-07-20T02:39:40Z", "hours": 1.7889, "text": "Devpost 2, I think I’ve decided here by ending the day by finishing majority of the first minigame, levels scene, and main menu. I’ve made the quit button, made the levels scene actually work and transition into the first mini_game, and did the obby and character for the first mini_game. I’ve been hoping to finish this small project by two days, where my goal by the end of tomorrow is hopefully adding in the settings, make the health decease work, finish the first mini game, and hopefully finish the third minigame? During this project I have school and Robotics so the work I’ll be doing here will probably be less dedicated and more rushed!"}, {"post_id": 31497, "ts": "2026-07-19T22:48:24Z", "hours": 0.8178, "text": "here are the first developments of the game I’m making. I’ve just made the start and quit button work and trying to recreate the tutorial’s first minigame where you have to click five buttons to pass the next stage. Next devpost I’ll try to make big progress"}]...
|
Title: Ketchupware by @ketchupismm | Stardance
De Title: Ketchupware by @ketchupismm | Stardance
Devlogs:
here are the first developments of the game I’m making. I’ve just made the start and quit button work and trying to recreate the tutorial’s first minigame where you have to click five buttons to pass the next stage. Next devpost I’ll try to make big progress
Devpost 2, I think I’ve decided here by ending the day by finishing majority of the first minigame, levels scene, and main menu. I’ve made the quit button, made the levels scene actually work and transition into the first mini_game, and did the obby and character for the first mini_game. I’ve been hoping to finish this small project by two days, where my goal by the end of tomorrow is hopefully adding in the settings, make the health decease work, finish the first mini game, and hopefully finish the third minigame? During this project I have school and Robotics so the work I’ll be doing here will probably be less dedicated and more rushed!
devpost 3: I spent time finishing up the first mini_game and added the ketchups for you to collect. I took a really long time to debug and fix issues with the scripts time. Next devpost I’ll probably finish the clicker game or add more details!
Last devpost!! I have finally finished. I have finished the transition in making the scenes go into the level_scenes to check the amount of lives you have (changed it to 3), deleted the settings from menu, finished the clicker level, and have made both endings that go into the menu when you click the button. I have finished all requirement mininums and ready to submit
Ships:
This project was made 100% human! Ketchupware, a game where you’re mayonnaise and you try to save your ketchup packets to use on fries and tater tots. Make it to level 8, you survive. Lose 3 ketchup packets, you lose the game. I used 100% Grodot features in this project. The hardest part was 100% the debugging. I had to debug everything where the tutorial was lowkey difficult and confusing for me. The proudest part of this challenge was making and learning how Godot works. The Nodes were really confusing and at the end, making everything really made me happy. People should know this was really bare-mininum, just completing all the tasks to shipping...
|
1793483389.059544
|
1793569789.059544
|
|
58676
|
Wanderlust OS by @Shreya_Nair | Stardance
|
Shreya_Nair
|
2
|
54.0
|
869
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T18:58:05Z", "hours": 50.0, "multiplier": 17.3, "payout": 869, "blessing": "neutral", "text": "Wanderlust OS is my fantasy world themed WebOS project inspired by the Lord of the Rings universe (people who haven’t heard of the lord of the rings can use it too!). I wanted to make something that felt like a little world of its own while being very easy to use. I started with a basic webOS for Ship #1 where I built the main foundation. It had draggable and resizable windows, a taskbar and very few apps. From there for Ship #2 I completely transformed it adding many interactive features, music and plenty of easter eggs and fun apps. The Apps include Notes, Gallery, Timer, Map of Middle-earth, Palantir (weather app but as a crystal ball!), Calendar, Doodle, Library (with book excerpts related to lotr) and Settings. Main Features Light mode and Dark mode- Both are very different and the music and many elements completely changes between light and dark. Imo the dark mode is the most fun part of the project. The Fun parts- There are many things flying across the screen once you open the OS. Also there many clickable things I’ve added to make it fun and interactive to those who visit (like flowers, butterflies and some themed things). Clicking the arkenstone (the glowy rock) at the top opens the journey window and tracks all the apps and easter eggs u opened (wanted to add smth to let the user know whether they’ve found all the features). What was challenging? I started learning HTML and CSS through the personal site mission and I feel like I’ve improved a lot. In the beginning I found it hard to get a hang of it (the functionality and the design part, for eg light/ dark mode) and I believe Ive come a long way! Yes I encountered lot of problems in between but it was a learning experience. What am I proud of? Im very proud of all the interactive features I thought of and built on my own (especially dark mode). They arent necessary for the OS to function but they made a huge difference and I enjoyed building them tooo. For more details, please read the readme. I believe I’ve covered everything there is to cover but I’ll take feedback to improve the project and make it as user friendly as possible. Make sure to click around the desktop and see what you find! And to everyone who read till here…thank you! ^ o^/", "repo": "https://github.com/Shreya-Nair-28/Middle-earth-OS", "demo": "https://shreya-nair-28.github.io/Middle-earth-OS/"}, {"ship_num": 2, "ts": "2026-09-08T12:16:26Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Middle-earth OS is a browser based operating system inspired by the world of the Lord of the Rings. I built it with HTML, CSS and JS (I became pretty confident with these 3 after completing the personal site mission) Ship #1 focused on fulfilling the basic requirements. It has draggable and resizable windows, a taskbar, time display at the bottom. Also has 3 simple apps: Notes, Timer and Gallery. So far, it’s super basic. I’m developing this in multiple ships adding smth new each time. You can already see I have two other apps in the working(Map and Palantir). I will definitely make it more polished visually and technically. (Ship #2 will have more lotr themed apps and more unique features (ive already thought of a few amazing ones)). The goal is to turn this simple OS into a full immersive one.", "repo": "https://github.com/Shreya-Nair-28/Middle-earth-OS", "demo": "https://shreya-nair-28.github.io/Middle-earth-OS/"}]...
|
[{"post_id": 75617, "ts": "202 [{"post_id": 75617, "ts": "2026-09-30T15:50:18Z", "hours": 2.9361, "text": "Last devlog before I ship! I added yet another easter egg (i couldnt help myself 😅) They change depending on what mode you’re in (light/dark). Besides that, I fixed a couple of errors that i was saving for the end. I wanted the OS to be as smooth as possible (enjoyable as well but that comes second). Biggest change of all: I changed the name from Middle-earth OS to Wanderlust OS because I felt it fit my project better. I’m ready to ship!"}, {"post_id": 73676, "ts": "2026-09-25T17:32:13Z", "hours": 7.3336, "text": "I’m getting closer to shipping. I added two more fun buttons near the top: one is a memory window that tracks all the apps u opened and all the easter eggs u foundd , (i connected all the apps, buttons and easter eggs to this window; it counts each first time u click on it) the other is kinda like another easter egg. I fixed up a lot of the layering i didnt want the easter eggs/animations to get in the way of the user when theyre using any apps so i fixed up a lot of that as well. I cleaned up a lot of other code as well. I also learnt that I kept typing ‘colour’ instead of ‘color’ in a lot of places 😅😅 so i hit find & replace for those. I then spent some time improving the intro window and intro video I made it more appealing. Im happy with the work now actually. Ive come along way from the personal site mission. (o゜▽゜)o☆"}, {"post_id": 71849, "ts": "2026-09-21T17:25:42Z", "hours": 4.0397, "text": "flyButterfly(){ Today i added i worked on the js for the easter eggs and and added a few more interactive features. the OS looks more alive now!!!! i love itttttt. They’re still kinda glitchy and i will be trying to figure out the problemmm.. toodles!} 🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋"}, {"post_id": 71340, "ts": "2026-09-20T17:37:57Z", "hours": 6.2211, "text": "phew, added plenty of easter eggs today. some of them fly across the screen and some are hidden and takes a little exploring to find them. I want to make my os as interactive and not boring as possible so im gonna work more on that from tmrw. oKiE"}, {"post_id": 70734, "ts": "2026-09-19T17:46:41Z", "hours": 1.2517, "text": "hiya. i was fixing the sizing and locations of a few widgets. I spent most time trying to place the location pins on the right places in the map. i was able to do it for a couple of locations but not all. (it TAKES a long time). i also uploaded the images for the icons. I still havent thought of a good idea for the doodle app icon but itll hit me soooon. 🫨🫨"}, {"post_id": 70200, "ts": "2026-09-18T18:05:28Z", "hours": 1.9644, "text": "hellooooo. i added an intro video today. (idk why i didnt think to add one until now, i only remembered when i went through all the amazing projects uploaded to this mission). Besides the 2 hrs logged, i spent designing the leftover logos (i didnt find the emojis to fit the style). The coding mostly involved me trying to get the widgets to cooperate. The dragging was glitchy then there would some random small error that made everything else stop working. basically today wasnt really coding heavy but fixing a lot of things and improving the feel. (o゜▽゜)o"}, {"post_id": 69733, "ts": "2026-09-17T17:45:14Z", "hours": 4.1083, "text": "i worked on adding widgets today. was really difficult cuz i had no experience with that level. I wanted to reuse functions from the weather app for the weather widget. I tried but i couldnt :(. I wrote a whole new function for the widget itself. for now, i added some basic widgets such as calendar, weather and clock (they arent draggable yet tho, also im not feeling the clock design, prolly will change it later). Will definitely add more creative ones along the way :)"}, {"post_id": 69265, "ts": "2026-09-16T18:16:14Z", "hours": 2.4936, "text": "i added an interactive sparkly cursor today. Also added features within 2 apps : user can add their own events to the calendar, a clear all feature in the doodle app. i was also on the hunt for excerpts to add to the library app."}, {"post_id": 68756, "ts": "2026-09-15T17:56:28Z", "hours": 5.0167, "text": "was putting out fires all over the place today. Some windows kept opening INSIDE other windows! turns out it was because of a single missing closing div tag🙇♀️it took me soooo long, Besides all that i fixed up the library app and added a new map app. I improved some of the other apps as well."}, {"post_id": 68194, "ts": "2026-09-14T18:02:39Z", "hours": 3.7514, "text": "Got more work done today than the past few days. I added two apps! a doodle app and a a library app (just lotr excerpts for now). The pdf viewer seriously did not want to open. It really took some time to get that working. also the window resizing isnt really that great there are a lot of problems. More tomorrow!"}, {"post_id": 67563, "ts": "2026-09-13T18:17:36Z", "hours": 1.0639, "text": "I added a calendar app today! only worked on the html and js. need to finish the css as well to match the overall theme. its also still kinda buggy."}, {"post_id": 66750, "ts": "2026-09-12T17:16:10Z", "hours": 1.4025, "text": "today i worked on fixing up the weather app and modifying most of the error handling code. I also debugged a lot of the window opening and closing issues."}, {"post_id": 66114, "ts": "2026-09-11T18:36:02Z", "hours": 1.3075, "text": "mainly worked on improving the css and ui today. also spent an hour or two on design a few elements in canva."}, {"post_id": 65500, "ts": "2026-09-10T18:03:18Z", "hours": 2.0506, "text": "Add little glowy effects and little animations to the windows and the app icons. I also added light mode and dark mode to the os. Also, it may say I spent 2 hours coding but besides that I have spent another two working on the design aspect in canva (i wanted to add easter eggs like i did in my personal site mission). I still feel the UI just isnt…it. ig itll take a bit more trial and error to get it there. :))"}, {"post_id": 64961, "ts": "2026-09-09T18:15:25Z", "hours": 4.0447, "text": "Worked on improving the weather app today (i learned how to connect one to a site firstt). Then i worked on adding a settings app that can allow the user to choose wallpapers and light/dark mode. it looks pretty okay now but i definitely need to improve the ui BY FAR. tomorrow!"}, {"post_id": 64368, "ts": "2026-09-08T17:52:46Z", "hours": 1.2239, "text": "Added hover effects to the app icons. Started working on making the palantir a weather forecast app. I went through the article about it on geeksforgeeks first (because i was kinda clueless) and i learnt that it’s not super difficult. I started work on it and it’s actually going good. more tomorrow!"}, {"post_id": 64161, "ts": "2026-09-08T11:41:20Z", "hours": 1.2461, "text": "Now the os has 3 simple apps: Notes, Timer and Gallery. Current time is displayed on the bottom right. The windows are draggable and resizable."}, {"post_id": 63730, "ts": "2026-09-07T17:49:29Z", "hours": 1.5861, "text": "More work done. The windows are now draggable and can be opened and closed. I added a simple note taker (with add, delete, clear and view functions). I started working on a timer app today. (but there’s some error (it better not be a missing bracket/letter in a variable cuz those are so hard to find 🙏)). More work tomorroww."}, {"post_id": 63065, "ts": "2026-09-06T17:34:50Z", "hours": 0.3992, "text": "today i worked getting the windows to open. I could not work for a long time today. I was simply able to add windows and a bit of text. Tomorrow I will work on including the dragging and the design aspect."}, {"post_id": 62366, "ts": "2026-09-05T18:09:55Z", "hours": 0.4464, "text": "baby steps started work on lotr-os (the name needs work). I finished the personal site mission and now i have more experience with HTML and CSS (ESPECIALLY CSS). I hope it turns out good!"}]...
|
Title: Wanderlust OS by @Shreya_Nair | Stardance
Title: Wanderlust OS by @Shreya_Nair | Stardance
Devlogs:
baby steps started work on lotr-os (the name needs work). I finished the personal site mission and now i have more experience with HTML and CSS (ESPECIALLY CSS). I hope it turns out good!
today i worked getting the windows to open. I could not work for a long time today. I was simply able to add windows and a bit of text. Tomorrow I will work on including the dragging and the design aspect.
More work done. The windows are now draggable and can be opened and closed. I added a simple note taker (with add, delete, clear and view functions). I started working on a timer app today. (but there’s some error (it better not be a missing bracket/letter in a variable cuz those are so hard to find 🙏)). More work tomorroww.
Now the os has 3 simple apps: Notes, Timer and Gallery. Current time is displayed on the bottom right. The windows are draggable and resizable.
Added hover effects to the app icons. Started working on making the palantir a weather forecast app. I went through the article about it on geeksforgeeks first (because i was kinda clueless) and i learnt that it’s not super difficult. I started work on it and it’s actually going good. more tomorrow!
Worked on improving the weather app today (i learned how to connect one to a site firstt). Then i worked on adding a settings app that can allow the user to choose wallpapers and light/dark mode. it looks pretty okay now but i definitely need to improve the ui BY FAR. tomorrow!
Add little glowy effects and little animations to the windows and the app icons. I also added light mode and dark mode to the os. Also, it may say I spent 2 hours coding but besides that I have spent another two working on the design aspect in canva (i wanted to add easter eggs like i did in my personal site mission). I still feel the UI just isnt…it. ig itll take a bit more trial and error to get it there. :))
mainly worked on improving the css and ui today. also spent an hour or two on design a few elements in canva.
today i worked on fixing up the weather app and modifying most of the error handling code. I also debugged a lot of the window opening and closing issues.
I added a calendar app today! only worked on the html and js. need to finish the css as well to match the overall theme. its also still kinda buggy.
Got more work done today than the past few days. I added two apps! a doodle app and a a library app (just lotr excerpts for now). The pdf viewer seriously did not want to open. It really took some time to get that working. also the window resizing isnt really that great there are a lot of problems. More tomorrow!
was putting out fires all over the place today. Some windows kept opening INSIDE other windows! turns out it was because of a single missing closing div tag🙇♀️it took me soooo long, Besides all that i fixed up the library app and added a new map app. I improved some of the other apps as well.
i added an interactive sparkly cursor today. Also added features within 2 apps : user can add their own events to the calendar, a clear all feature in the doodle app. i was also on the hunt for excerpts to add to the library app.
i worked on adding widgets today. was really difficult cuz i had no experience with that level. I wanted to reuse functions from the weather app for the weather widget. I tried but i couldnt :(. I wrote a whole new function for the widget itself. for now, i added some basic widgets such as calendar, weather and clock (they arent draggable yet tho, also im not feeling the clock design, prolly will change it later). Will definitely add more creative ones along the way :)
hellooooo. i added an intro video today. (idk why i didnt think to add one until now, i only remembered when i went through all the amazing projects uploaded to this mission). Besides the 2 hrs logged, i spent designing the leftover logos (i didnt find the emojis to fit the style). The coding mostly involved me trying to get the widgets to cooperate. The dragging was glitchy then there would some random small error that made everything else stop working. basically today wasnt really coding heavy but fixing a lot of things and improving the feel. (o゜▽゜)o
hiya. i was fixing the sizing and locations of a few widgets. I spent most time trying to place the location pins on the right places in the map. i was able to do it for a couple of locations but not all. (it TAKES a long time). i also uploaded the images for the icons. I still havent thought of a good idea for the doodle app icon but itll hit me soooon. 🫨🫨
phew, added plenty of easter eggs today. some of them fly across the screen and some are hidden and takes a little exploring to find them. I want to make my os as interactive and not boring as possible so im gonna work more on that from tmrw. oKiE
flyButterfly(){ Today i added i worked on the js for the easter eggs and and added a few more interactive features. the OS looks more alive now!!!! i love itttttt. They’re still kinda glitchy and i will be trying to figure out the problemmm.. toodles!} 🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋🦋
I’m getting closer to shipping. I added two more fun buttons near the top: one is a memory window that tracks all the apps u opened and all the easter eggs u foundd , (i connected all the apps, buttons and easter eggs to this window; it counts each first time u click on it) the other is kinda like another easter egg. I fixed up a lot of the layering i didnt want the easter eggs/animations to get in the way of the user when theyre using any apps so i fixed up a lot of that as well. I cleaned up a lot of other code as well. I also learnt that I kept typing ‘colour’ instead of ‘color’ in a lot of places 😅😅 so i hit find & replace for those. I then spent some time improving the intro window and intro video I made it more appealing. Im happy with the work now actually. Ive come along way from the personal site mission. (o゜▽゜)o☆
Last devlog before I ship! I added yet another easter egg (i couldnt help myself 😅) They change depending on what mode you’re in (light/dark). Besides that, I fixed a couple of errors that i was saving for the end. I wanted the OS to be as smooth as possible (enjoyable as well but that comes second). Biggest change of all: I changed the name from Middle-earth OS to Wanderlust OS because I felt it fit my project better. I’m ready to ship!
Ships:
Middle-earth OS is a browser based operating system inspired by the world of the Lord of the Rings. I built it with HTML, CSS and JS (I became pretty confident with these 3 after completing the personal site mission) Ship #1 focused on fulfilling the basic requirements. It has draggable and resizable windows, a taskbar, time display at the bottom. Also has 3 simple apps: Notes, Timer and Gallery. So far, it’s super basic. I’m developing this in multiple ships adding smth new each time. You can already see I have two other apps in the working(Map and Palantir). I will definitely make it more polished visually and technically. (Ship #2 will have more lotr themed apps and more unique features (ive already thought of a few amazing ones)). The goal is to turn this simple OS into a full immersive one.
Wanderlust OS is my fantasy world themed WebOS project inspired by the Lord of the Rings universe (people who haven’t heard of the lord of the rings can use it too!). I wanted to make something that felt like a little world of its own while being very easy to use. I started with a basic webOS for Ship #1 where I built the main foundation. It had draggable and resizable windows, a taskbar and very few apps. From there for Ship #2 I completely transformed it adding many interactive features, music and plenty of easter eggs and fun apps. The Apps include Notes, Gallery, Timer, Map of Middle-earth, Palantir (weather app but as a crystal ball!), Calendar, Doodle, Library (with book excerpts related to lotr) and Settings. Main Features Light mode and Dark mode- Both are very different and the music and many elements completely changes between light and dark. Imo the dark mode is the most fun part of the project. The Fun parts- There are many things flying across the screen once you open the OS. Also there many clickable things I’ve added to make it fun and interactive to those who visit (like flowers, butterflies and some themed things). Clicking the arkenstone (the glowy rock) at the top opens the journey window and tracks all the apps and easter eggs u opened (wanted to add smth to let the user know whether they’ve found all the features). What was challenging? I started learning HTML and CSS through the personal site mission and I feel like I’ve improved a lot. In the beginning I found it hard to get a hang of it (the functionality and the design part, for eg light/ dark mode) and I believe Ive come a long way! Yes I encountered lot of problems in between but it was a learning experience. What am I proud of? Im very proud of all the interactive features I thought of and built on my own (especially dark mode). They arent necessary for the OS to function but they made a huge difference and I enjoyed building them tooo. For more details, please read the readme. I believe I’ve covered everything there is to cover but I’ll take feedback to improve the project and make it as user friendly as possible. Make sure to click around the desktop and see what you find! And to everyone who read till here…thank you! ^ o^/...
|
1793483393.019874
|
1793569793.019874
|
|
37961
|
Hextec E-reader, 600+ WPM by @yursen_nezzari | Sta Hextec E-reader, 600+ WPM by @yursen_nezzari | Stardance...
|
yursen_nezzari
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-02T09:59:30Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The average person reads at about 260 Words per minute. There’s a ton of techniques to increase your reading speed, but most take time to master and require to focus very hard. The Hextec E-Reader opens the door for anybody to read at 600+ WPM. A 1000 page book that would normally take you 16h to read would now take you only 4-5h", "repo": "https://github.com/Space-Chips/Hextec-Reader", "demo": "https://youtu.be/vMdm8VhP9lU"}]...
|
[{"post_id": 39371, "ts": "202 [{"post_id": 39371, "ts": "2026-08-02T09:45:32Z", "hours": 3.8467, "text": "First working prototype ! Next step building the case"}]...
|
Title: Hextec E-reader, 600+ WPM by @yursen_nezzar Title: Hextec E-reader, 600+ WPM by @yursen_nezzari | Stardance
Devlogs:
First working prototype ! Next step building the case
Ships:
The average person reads at about 260 Words per minute. There’s a ton of techniques to increase your reading speed, but most take time to master and require to focus very hard. The Hextec E-Reader opens the door for anybody to read at 600+ WPM. A 1000 page book that would normally take you 16h to read would now take you only 4-5h...
|
1793483397.976296
|
1793569797.976296
|
|
32375
|
Music Syncer by @techs-sus | Stardance
|
techs-sus
|
1
|
64.46
|
833
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T23:54:31Z", "hours": 45.0, "multiplier": 18.46, "payout": 833, "blessing": "neutral", "text": "I made a Kotlin CLI program that synchronizes a YouTube Music playlist to a SQLite database locally. I made this because I want to be able to play my music freely even when YouTube Music or my network is down. The main challenge was finding a library that would let me get the data I needed (artist, thumbnail, audio tracks, etc.) from YouTube Music, and I even had to rewrite the entire program in Kotlin from Rust because the library I was using couldn’t download audio properly.", "repo": "https://github.com/techs-sus/music-syncer", "demo": "https://github.com/techs-sus/music-syncer/releases"}]...
|
[{"post_id": 78225, "ts": "202 [{"post_id": 78225, "ts": "2026-10-10T00:53:04Z", "hours": 1.1172, "text": "I fixed another Nix graalvm issue. Some mp4s wouldn’t be tagged properly, so I fixed that."}, {"post_id": 74678, "ts": "2026-09-27T23:46:37Z", "hours": 0.6, "text": "I fixed the binary in Nix, it works now, also updated the asciinema cast it was missing some reachability metadata and required LD_LIBRARY_PATH to be set to the jdk’s libraries."}, {"post_id": 74664, "ts": "2026-09-27T22:23:13Z", "hours": 0.7189, "text": "Tiny change, I switched from scrimage to ImageIO. It works much better and should be less error prone as scrimage would vendor in webp binaries, which is not cross platform."}, {"post_id": 74533, "ts": "2026-09-27T16:04:10Z", "hours": 2.7108, "text": "Squashed more bugs, updated NativeMetadataMain.kt so that reachability metadata includes image i/o. This makes the Graal native image actually work when having to convert from webp to png. This will be a non issue when I can find an image library that is written in pure Kotlin. The last shipwright to review my project tried syncing a mix, which is infinite. So I added an error for that and made sure no one will run into unexplainable errors again."}, {"post_id": 71298, "ts": "2026-09-20T16:18:29Z", "hours": 1.1267, "text": "I added GraalVM native image support. The actual implementation is boring but this makes the program’s cold starts faster and makes it feel more native. Not sure if this helps with battery life, but it might. This definitely helps with memory usage, the program only uses ~100mb syncing my 400 track playlist. I restricted the native image to Nix because the releases are supposed to always work on all platforms."}, {"post_id": 71243, "ts": "2026-09-20T14:51:47Z", "hours": 0.3306, "text": "I finally silenced those pesky slf4j and unsafe memory access warnings. Just added the slf4j-nop library and a JVM flag."}, {"post_id": 70926, "ts": "2026-09-20T01:43:13Z", "hours": 2.5042, "text": "I redid the cli structure to group all the playlist commands under one common playlist parent command. I also implemented a clean up command to help people save disk space because SSDs are expensive right now. For example: music-syncer-kotlin -p path init -> music-syncer-kotlin playlist -p path init This was a necessary step so I could implement the clean up command, which deletes audio and thumbnail files that are not used by any playlists in a container. A container is the folder holding all the databases. Here’s everything I did, stolen from my commit message: feature: add clean-container command - refactor: add hasTrackInDatabase to the Playlist class - refactor: move knownFinal{Audio,Thumbnail}Extension out of class and make it const - refactor: nest all playlist commands as one subcommand - refactor: make cli help text more helpful - refactor: always print something to the console to let the user know that everything went well - refactor: do not use PlaylistHolder, use currentContext.registerJvmCloseable to clean up playlist - fix: when thumbnail is newly created, retag should silently fail"}, {"post_id": 64580, "ts": "2026-09-09T02:50:12Z", "hours": 2.7675, "text": "I watched a Kotlin talk about Flows and I was inspired to rewrite my program using them. This made my program more efficient, idiomatic and also helped me fix the annoying progress bar refresh bug (multiple old bars shown). It also let me actually properly sort by position across all 4 status types (added, removed, moved, errored). I also made the downloading functions use one underlying common function to clean up the codebase. I also removed sqlx4k because it wasn’t actually parallel and was causing issues with init. Here, in the screenshot I am showing the new elegant code for the logging of track statuses. It used to be many individual async calls, but flows allow me to group them up and sort them."}, {"post_id": 64390, "ts": "2026-09-08T18:35:35Z", "hours": 0.81, "text": "I now detect invalid playlist ids and print out an error telling the user how to get a valid playlist id."}, {"post_id": 63814, "ts": "2026-09-07T19:41:24Z", "hours": 0.5508, "text": "I made position diffing aware of insertions and deletions, so that output is less bloated with useless move info such as 0->1, 1->2, etc. I also did some optimization by using database transactions wherever possible. I can’t do it in the main sync body because it is bounded to its own coroutine scope."}, {"post_id": 63724, "ts": "2026-09-07T17:36:43Z", "hours": 1.365, "text": "I added duration tracking to the database. The M3U generation now doesn’t hardcode 0 as the duration."}, {"post_id": 61576, "ts": "2026-09-04T15:35:33Z", "hours": 0.3597, "text": "I made it so that thumbnails should now be even higher quality, it does take more storage but the difference is quite noticeable on some music players. Also small hotfix, if you accidentally pass in another unrelated SQLite database it will now not run migrations on it before erroring."}, {"post_id": 61148, "ts": "2026-09-03T22:22:37Z", "hours": 0.6486, "text": "To help users migrate from the old Rust implementation, I made it so that a sync will re-tag the track if the track’s thumbnail does not exist on disk. The Kotlin implementation always gets higher resolution images, so this allows for much higher resolution track covers."}, {"post_id": 61131, "ts": "2026-09-03T21:37:19Z", "hours": 1.3225, "text": "In my attempt to make the streamExtractor lazily loaded, I caused a deadlock. I have fixed the deadlock and this fixed version is at v0.2.7. The fix was pretty simple, it was to not use CoroutineStart.Lazy because a lazy coroutine may never run, meaning the parent coroutineScope will hang forever. I also switched the backend driver to sqlx4k as it provides a connection pool but more importantly makes the suspend code flow cleaner. I wont switch to Exposed (the official SQL driver) because it doesn’t have the same parallel capabilities as sql4k."}, {"post_id": 60984, "ts": "2026-09-03T17:48:56Z", "hours": 1.7597, "text": "I forgot to add error handling from the original Rust project, so I did that. I also fixed the parallelism by using a Semaphore as limitedParallelism still wakes all the coroutines. Using a Semaphore only allows N permits to be handed out at once. This means that only N tasks would be running at once, given that each task takes one permit. I set N to 8 as that should not cause any throttling but still allow multiple tracks to be downloaded at once. I also implemented better lazy fetching than the old Rust implementation. Now only pieces that must be fetched are fetched, and if they don’t need to be fetched, a StreamExtractor is never fetched. This causes a huge speed up, allowing my ~400 track playlist to be incrementally synced in 8 seconds. Other notable quality of life features (taken from the git log): - refactor: make output use terminal.theme.* - refactor: make output more human readable by using title instead of youtube_playlist_id - fix: reorder items in subtasks so that the text doesn't move everything else"}, {"post_id": 60623, "ts": "2026-09-03T02:30:33Z", "hours": 0.7667, "text": "Shortly after I shipped, I found a better library for progress bars and displaying to the terminal in general. I also made sure that the exists locally log line would be printed out in order. I decided to use it, and I am really happy with the result!!!!"}, {"post_id": 60558, "ts": "2026-09-02T23:48:06Z", "hours": 1.2247, "text": "Preparing to ship the project, so here’s a list of everything I did: added back an edited readme added back the apache 2.0 license fixed the github actions auto release recorded an asciinema cast and put it in the readme made the cli say music-player-kotlin instead of cli …other small changes to make sure its ready for release"}, {"post_id": 60487, "ts": "2026-09-02T21:02:16Z", "hours": 0.7539, "text": "added a progress bar and actually actually fixed the deadlock this time"}, {"post_id": 60469, "ts": "2026-09-02T20:12:04Z", "hours": 0.4286, "text": "I fixed position tracking, so that moved tracks will output a line telling you they have moved. I attempted to fix a deadlock that was happening, and fixed some database queries targetting the wrong table."}, {"post_id": 60450, "ts": "2026-09-02T19:45:23Z", "hours": 1.5511, "text": "I cleaned up the code, bounded parallelism to 8 with limitedParallelism, and tried to optimize the detection of moved tracks"}, {"post_id": 60347, "ts": "2026-09-02T17:08:19Z", "hours": 4.1644, "text": "the rewrite is almost finished thumbnails are now way higher in resolution because we can now get youtube’s webp images. unfortunately jaudiotagger does not support webp images, so i force all images from youtube to turn into a lossless png kotlin is pretty cool, especially coroutines, its like lua’s coroutines but actually backed by a thread pool i need to limit the concurrency but otherwise this is great! very fast even on a debug build what’s left: currently unlimited concurrency, this will definitely crash the jvm on large playlists better terminal output with colors and a diff generator use a temporary table in sqlite to make diffing more memory efficient packaging and ci should be fine since “java runs anywhere”"}, {"post_id": 59975, "ts": "2026-09-02T01:52:56Z", "hours": 4.3806, "text": "i begun porting the project to kotlin while i love rust i also want this project to actually work rustypipe will always be a bit behind youtube’s protections so i decided to just rewrite the whole thing in kotlin so i can use newpipeextractor directly what’s left: tag audio with jaudiotagger use clikt to make a nice command line interface (maybe) add unit tests there is no actual screenshot because i didn’t actually implement the commands yet"}, {"post_id": 51282, "ts": "2026-08-20T20:29:43Z", "hours": 4.3222, "text": "i got rustypipe-botguard working with Nix i still can’t figure out why some videos don’t work sometimes but other videos work all the time i updated the test suite to reflect that"}, {"post_id": 50736, "ts": "2026-08-20T02:44:23Z", "hours": 1.0564, "text": "i finally did the ci pipeline for windows, linux, and macos i wrote a readme but i’ll need to add an asciinema cast to it to make it look better and allow me to ship the project"}, {"post_id": 50703, "ts": "2026-08-20T01:04:16Z", "hours": 1.5878, "text": "thumbnails were really low quality, this change allows for higher quality thumbnails. one example would be 60x60 -> 120x120 still low quality but a higher low quality. other notable changes: unification of all track identifiers into one refetch thumbnails if not existing & do not fetch thumbnail if its {id}.{png,jpeg,jpg} exist m3a -> m3u, it is more compatible with music players (this happened in 4c337f491dd949fdc3f1f5d51363b0342defaac1 on aug 15, i forgot to log it) next thing to do is packaging . this is my worst nightmare so the whole program will be statically linked"}, {"post_id": 50425, "ts": "2026-08-19T16:22:13Z", "hours": 0.5014, "text": "progress bars with tracing-indicatif might have to increase tick rate, it flickers a bunch on release mode"}, {"post_id": 47821, "ts": "2026-08-16T01:05:27Z", "hours": 0.4694, "text": "tracks that are only available as m4a’s can now be downloaded ffmpeg won’t be spawned to remux screenshot is forcefully required so heres the main fix"}, {"post_id": 47801, "ts": "2026-08-16T00:26:22Z", "hours": 3.2114, "text": "/tmp is now only hardcoded in the singular unit test errors are more friendly, m3a generation has been refitted to be m3u generation so that more music players are supported, fixed a bug where songs would be downloaded with audio/{id}..m4a which is an invalid path, and updated the user agent to be a firefox extended support release so i dont have to update it more downloads were broken by the rustypipe switch, so i fixed them by forcing the AndroidVr client. some tracks are weird and still don’t work, but most do"}, {"post_id": 45281, "ts": "2026-08-11T17:10:58Z", "hours": 0.3233, "text": "i fixed the nix build this should allow me to cross compile to windows (maybe with mingw, and after i don’t hardcode /tmp), mac, and linux"}, {"post_id": 45263, "ts": "2026-08-11T16:43:26Z", "hours": 1.645, "text": "i switched from kopuz-server to rustypipe it is much faster and more accurate which may allow me to bypass youtube music’s weird quirk of some tracks only being playable directly on youtube the playlist is now synced in 3.2 seconds, and not 5"}, {"post_id": 44961, "ts": "2026-08-11T02:10:07Z", "hours": 0.8017, "text": "i made tracks that cause errors to show up in the diff form"}, {"post_id": 44936, "ts": "2026-08-11T01:05:27Z", "hours": 1.8956, "text": "i added the base diffing feature i wanted i still need to make it filter out tracks that are unfetchable that are currently marked as “removed” and i need to rename the project to music-syncer"}, {"post_id": 43011, "ts": "2026-08-08T01:30:07Z", "hours": 0.4114, "text": "i added configurable concurrency it doesn’t seem to improve download or sync times but i think now it has to be stdio performance thats holding it back, logging is not free"}, {"post_id": 42935, "ts": "2026-08-07T22:27:17Z", "hours": 0.2881, "text": "i shrunk the number of crates being built from 700-800 to 500 by stripping my fork of kopuz-server of all bloat it depended on lots of crates and most importantly it doesn’t rely on rusqlite 0.31 and sqlx 0.8 the screenshot shows how much smaller the build is now"}, {"post_id": 42401, "ts": "2026-08-07T02:51:53Z", "hours": 0.7711, "text": "parallelism!!! i was able to download my whole playlist in ~30 seconds (with unbounded parallelism that lagged the rest of my laptop) next steps: maybe change parallelism from hardcoded 16 to num_cpus::get() or ask tokio how many threads we have use ratatui and display the status of each song being downloaded, since we’re using tracing we can use https://github.com/gin66/tui-logger use color_eyre https://ratatui.rs/recipes/apps/color-eyre/ maybe add login, some songs are age restricted (even if they have no lyrics) definitely add configurable parallelism; i think this software would rip through playlists if it had more sqlite connections and more threads not really any screenshots to show anymore……. but i can try and show how many tracks were downloaded successfully and how long it took the screenshot is bounded by 16 futures at a time, which is probably too small and the sqlite connection pool is capped at 5. 2 minutes is a lot. but on a good note incremental syncs only take ~5.7 seconds"}, {"post_id": 42363, "ts": "2026-08-07T01:25:53Z", "hours": 2.9161, "text": "i switched to sqlx and the code is much cleaner but now i have to hack around how sqlx builds offline with SQLX_OFFLINE=true cargo build but i only have to do it once then its cached using sqlx is much more developer friendly and it taught me that a connection pool can harm the application because temp tables are only kept per connection not per entire database since nothing really changed but the code became cleaner i will show another music player that can display the generated playlist"}, {"post_id": 42258, "ts": "2026-08-06T21:41:07Z", "hours": 2.185, "text": "audio metadata for this dev log you will see 2 hours for one command spawn and a small refactor. but what you have not seen was 2 hours fighting ffmpeg-next, ffmpeg-sys-next, bindgen, libclang all that to say i decided to not link against ffmpeg, and i am much happier with the result audio players get the title, artist, even cover art all from the track’s metadata unfortunately, youtube music does not attach metadata to the tracks we scrape, so we need to attach metadata attaching metadata to audio files is actually pretty simple thanks to the lofty crate unless the file is a webm. webm does not have any sort of audio metadata (?) so you will need to transcode webm into another audio format to put metadata into the file. i decided to just pick m4a because everything supports it. lastly i did a small refactor because main.rs was pushing 600 lines of code, and i plan to: separate the db functions from the Playlist struct make the code truly asynchronous, which involves moving to sqlx pipeline everything the end result is pretty metadata in Gapless (or any other modern music player)"}, {"post_id": 42119, "ts": "2026-08-06T18:10:03Z", "hours": 0.3578, "text": "I switched from directly printing to stderr to using tracing. The m3a playlist generation works quite well, as you can see in the screenshot."}, {"post_id": 42100, "ts": "2026-08-06T17:43:20Z", "hours": 5.0975, "text": "after a lot of thinking i decided to not make a music player and instead decided to instead make a really fast youtube music playlist syncer the upstream library i was gonna use anyway does not expose YoutubeMusicClient, so i forked it and added a patch so i can use that everything was working until i realized downloads were really slow and the fix was to add a Range header with a value of “bytes=0-” and now downloads are very fast. i suspect that this makes my code look like a real browser to youtube/google which lets me get the normal download speed. i used rusqlite (sqlite rust wrapper) and each playlist is its own database file. i might switch to sqlx because it has compile time sql checking and has a very good async sqlite wrapper everything should work except m3a playlist generation, there are no good m3a playlist libraries so i hand coded it myself and have not tested it yet; UPDATE: it works i tested it now i plan on adding thumbnail deduplication, songs from the same album can have the same thumbnail"}, {"post_id": 24905, "ts": "2026-07-08T19:23:54Z", "hours": 0.8556, "text": "i added support for loading custom tinted-theming themes such as from https://github.com/tinted-theming/schemes the screenshot is using ayu_dark: https://github.com/tinted-theming/schemes/blob/spec-0.11/base16/ayu-dark.yaml"}, {"post_id": 24854, "ts": "2026-07-08T18:14:47Z", "hours": 1.3539, "text": "i added the base code for base16 themes and the skeleton sidebar (no buttons or actual pages yet) i plan for the sidebar to do something with navigation so like a playlists button and because i want the music player to be minimal it will probably become floating and will probably become a small menu icon that when clicked will expose the Playlists button i will probably make some sort of abstract button wrapper since i still need to make the actual full screen player ui which will at least have 3 icons (pause/play, backwards, forwards) the slow resizing issue was fixed by using gpui’s git repository and not crates.io the next steps are to add custom theme support which means i will need to also locate a config folder; i plan on using https://codeberg.org/dirs/directories-rs ; colors will probably be in yaml so that you can copy and paste tinted-theming schemes from https://github.com/tinted-theming/schemes other config settings will likely be in toml oh also i will need to set up automatic binary releases for amd64 and arm64 on linux and macos with github actions, which should be easier because it already uses Nix"}, {"post_id": 24798, "ts": "2026-07-08T16:20:27Z", "hours": 1.6167, "text": "gpui at least with the crates.io version has very slow resizing so i might switch to iced i have some ideas for how data will be stored: sqlite for database engine via sqlx or pure rust library (depends on which one allows to decode into structs) migrations can be done as a map to sql string (version -> appropriate migration) each playlist can be its own database & can store its own downloaded songs because fetching from db is faster: https://sqlite.org/fasterthanfs.html settings (theme) can be done in toml i have also disabled bounds on the gpui window, so thats the screenshot"}, {"post_id": 24396, "ts": "2026-07-07T22:28:27Z", "hours": 0.9344, "text": "I set up the flake at first using rust-overlay but realized crane is probably better so I asked opencode to refactor it to use crane The default gpui example now runs"}]...
|
Title: Music Syncer by @techs-sus | Stardance
Dev Title: Music Syncer by @techs-sus | Stardance
Devlogs:
I set up the flake at first using rust-overlay but realized crane is probably better so I asked opencode to refactor it to use crane The default gpui example now runs
gpui at least with the crates.io version has very slow resizing so i might switch to iced i have some ideas for how data will be stored: sqlite for database engine via sqlx or pure rust library (depends on which one allows to decode into structs) migrations can be done as a map to sql string (version -> appropriate migration) each playlist can be its own database & can store its own downloaded songs because fetching from db is faster: https://sqlite.org/fasterthanfs.html settings (theme) can be done in toml i have also disabled bounds on the gpui window, so thats the screenshot
i added the base code for base16 themes and the skeleton sidebar (no buttons or actual pages yet) i plan for the sidebar to do something with navigation so like a playlists button and because i want the music player to be minimal it will probably become floating and will probably become a small menu icon that when clicked will expose the Playlists button i will probably make some sort of abstract button wrapper since i still need to make the actual full screen player ui which will at least have 3 icons (pause/play, backwards, forwards) the slow resizing issue was fixed by using gpui’s git repository and not crates.io the next steps are to add custom theme support which means i will need to also locate a config folder; i plan on using https://codeberg.org/dirs/directories-rs ; colors will probably be in yaml so that you can copy and paste tinted-theming schemes from https://github.com/tinted-theming/schemes other config settings will likely be in toml oh also i will need to set up automatic binary releases for amd64 and arm64 on linux and macos with github actions, which should be easier because it already uses Nix
i added support for loading custom tinted-theming themes such as from https://github.com/tinted-theming/schemes the screenshot is using ayu_dark: https://github.com/tinted-theming/schemes/blob/spec-0.11/base16/ayu-dark.yaml
after a lot of thinking i decided to not make a music player and instead decided to instead make a really fast youtube music playlist syncer the upstream library i was gonna use anyway does not expose YoutubeMusicClient, so i forked it and added a patch so i can use that everything was working until i realized downloads were really slow and the fix was to add a Range header with a value of “bytes=0-” and now downloads are very fast. i suspect that this makes my code look like a real browser to youtube/google which lets me get the normal download speed. i used rusqlite (sqlite rust wrapper) and each playlist is its own database file. i might switch to sqlx because it has compile time sql checking and has a very good async sqlite wrapper everything should work except m3a playlist generation, there are no good m3a playlist libraries so i hand coded it myself and have not tested it yet; UPDATE: it works i tested it now i plan on adding thumbnail deduplication, songs from the same album can have the same thumbnail
I switched from directly printing to stderr to using tracing. The m3a playlist generation works quite well, as you can see in the screenshot.
audio metadata for this dev log you will see 2 hours for one command spawn and a small refactor. but what you have not seen was 2 hours fighting ffmpeg-next, ffmpeg-sys-next, bindgen, libclang all that to say i decided to not link against ffmpeg, and i am much happier with the result audio players get the title, artist, even cover art all from the track’s metadata unfortunately, youtube music does not attach metadata to the tracks we scrape, so we need to attach metadata attaching metadata to audio files is actually pretty simple thanks to the lofty crate unless the file is a webm. webm does not have any sort of audio metadata (?) so you will need to transcode webm into another audio format to put metadata into the file. i decided to just pick m4a because everything supports it. lastly i did a small refactor because main.rs was pushing 600 lines of code, and i plan to: separate the db functions from the Playlist struct make the code truly asynchronous, which involves moving to sqlx pipeline everything the end result is pretty metadata in Gapless (or any other modern music player)
i switched to sqlx and the code is much cleaner but now i have to hack around how sqlx builds offline with SQLX_OFFLINE=true cargo build but i only have to do it once then its cached using sqlx is much more developer friendly and it taught me that a connection pool can harm the application because temp tables are only kept per connection not per entire database since nothing really changed but the code became cleaner i will show another music player that can display the generated playlist
parallelism!!! i was able to download my whole playlist in ~30 seconds (with unbounded parallelism that lagged the rest of my laptop) next steps: maybe change parallelism from hardcoded 16 to num_cpus::get() or ask tokio how many threads we have use ratatui and display the status of each song being downloaded, since we’re using tracing we can use https://github.com/gin66/tui-logger use color_eyre https://ratatui.rs/recipes/apps/color-eyre/ maybe add login, some songs are age restricted (even if they have no lyrics) definitely add configurable parallelism; i think this software would rip through playlists if it had more sqlite connections and more threads not really any screenshots to show anymore……. but i can try and show how many tracks were downloaded successfully and how long it took the screenshot is bounded by 16 futures at a time, which is probably too small and the sqlite connection pool is capped at 5. 2 minutes is a lot. but on a good note incremental syncs only take ~5.7 seconds
i shrunk the number of crates being built from 700-800 to 500 by stripping my fork of kopuz-server of all bloat it depended on lots of crates and most importantly it doesn’t rely on rusqlite 0.31 and sqlx 0.8 the screenshot shows how much smaller the build is now
i added configurable concurrency it doesn’t seem to improve download or sync times but i think now it has to be stdio performance thats holding it back, logging is not free
i added the base diffing feature i wanted i still need to make it filter out tracks that are unfetchable that are currently marked as “removed” and i need to rename the project to music-syncer
i made tracks that cause errors to show up in the diff form
i switched from kopuz-server to rustypipe it is much faster and more accurate which may allow me to bypass youtube music’s weird quirk of some tracks only being playable directly on youtube the playlist is now synced in 3.2 seconds, and not 5
i fixed the nix build this should allow me to cross compile to windows (maybe with mingw, and after i don’t hardcode /tmp), mac, and linux
/tmp is now only hardcoded in the singular unit test errors are more friendly, m3a generation has been refitted to be m3u generation so that more music players are supported, fixed a bug where songs would be downloaded with audio/{id}..m4a which is an invalid path, and updated the user agent to be a firefox extended support release so i dont have to update it more downloads were broken by the rustypipe switch, so i fixed them by forcing the AndroidVr client. some tracks are weird and still don’t work, but most do
tracks that are only available as m4a’s can now be downloaded ffmpeg won’t be spawned to remux screenshot is forcefully required so heres the main fix
progress bars with tracing-indicatif might have to increase tick rate, it flickers a bunch on release mode
thumbnails were really low quality, this change allows for higher quality thumbnails. one example would be 60x60 -> 120x120 still low quality but a higher low quality. other notable changes: unification of all track identifiers into one refetch thumbnails if not existing & do not fetch thumbnail if its {id}.{png,jpeg,jpg} exist m3a -> m3u, it is more compatible with music players (this happened in 4c337f491dd949fdc3f1f5d51363b0342defaac1 on aug 15, i forgot to log it) next thing to do is packaging . this is my worst nightmare so the whole program will be statically linked
i finally did the ci pipeline for windows, linux, and macos i wrote a readme but i’ll need to add an asciinema cast to it to make it look better and allow me to ship the project
i got rustypipe-botguard working with Nix i still can’t figure out why some videos don’t work sometimes but other videos work all the time i updated the test suite to reflect that
i begun porting the project to kotlin while i love rust i also want this project to actually work rustypipe will always be a bit behind youtube’s protections so i decided to just rewrite the whole thing in kotlin so i can use newpipeextractor directly what’s left: tag audio with jaudiotagger use clikt to make a nice command line interface (maybe) add unit tests there is no actual screenshot because i didn’t actually implement the commands yet
the rewrite is almost finished thumbnails are now way higher in resolution because we can now get youtube’s webp images. unfortunately jaudiotagger does not support webp images, so i force all images from youtube to turn into a lossless png kotlin is pretty cool, especially coroutines, its like lua’s coroutines but actually backed by a thread pool i need to limit the concurrency but otherwise this is great! very fast even on a debug build what’s left: currently unlimited concurrency, this will definitely crash the jvm on large playlists better terminal output with colors and a diff generator use a temporary table in sqlite to make diffing more memory efficient packaging and ci should be fine since “java runs anywhere”
I cleaned up the code, bounded parallelism to 8 with limitedParallelism, and tried to optimize the detection of moved tracks
I fixed position tracking, so that moved tracks will output a line telling you they have moved. I attempted to fix a deadlock that was happening, and fixed some database queries targetting the wrong table.
added a progress bar and actually actually fixed the deadlock this time
Preparing to ship the project, so here’s a list of everything I did: added back an edited readme added back the apache 2.0 license fixed the github actions auto release recorded an asciinema cast and put it in the readme made the cli say music-player-kotlin instead of cli …other small changes to make sure its ready for release
Shortly after I shipped, I found a better library for progress bars and displaying to the terminal in general. I also made sure that the exists locally log line would be printed out in order. I decided to use it, and I am really happy with the result!!!!
I forgot to add error handling from the original Rust project, so I did that. I also fixed the parallelism by using a Semaphore as limitedParallelism still wakes all the coroutines. Using a Semaphore only allows N permits to be handed out at once. This means that only N tasks would be running at once, given that each task takes one permit. I set N to 8 as that should not cause any throttling but still allow multiple tracks to be downloaded at once. I also implemented better lazy fetching than the old Rust implementation. Now only pieces that must be fetched are fetched, and if they don’t need to be fetched, a StreamExtractor is never fetched. This causes a huge speed up, allowing my ~400 track playlist to be incrementally synced in 8 seconds. Other notable quality of life features (taken from the git log): - refactor: make output use terminal.theme.* - refactor: make output more human readable by using title instead of youtube_playlist_id - fix: reorder items in subtasks so that the text doesn't move everything else
In my attempt to make the streamExtractor lazily loaded, I caused a deadlock. I have fixed the deadlock and this fixed version is at v0.2.7. The fix was pretty simple, it was to not use CoroutineStart.Lazy because a lazy coroutine may never run, meaning the parent coroutineScope will hang forever. I also switched the backend driver to sqlx4k as it provides a connection pool but more importantly makes the suspend code flow cleaner. I wont switch to Exposed (the official SQL driver) because it doesn’t have the same parallel capabilities as sql4k.
To help users migrate from the old Rust implementation, I made it so that a sync will re-tag the track if the track’s thumbnail does not exist on disk. The Kotlin implementation always gets higher resolution images, so this allows for much higher resolution track covers.
I made it so that thumbnails should now be even higher quality, it does take more storage but the difference is quite noticeable on some music players. Also small hotfix, if you accidentally pass in another unrelated SQLite database it will now not run migrations on it before erroring.
I added duration tracking to the database. The M3U generation now doesn’t hardcode 0 as the duration.
I made position diffing aware of insertions and deletions, so that output is less bloated with useless move info such as 0->1, 1->2, etc. I also did some optimization by using database transactions wherever possible. I can’t do it in the main sync body because it is bounded to its own coroutine scope.
I now detect invalid playlist ids and print out an error telling the user how to get a valid playlist id.
I watched a Kotlin talk about Flows and I was inspired to rewrite my program using them. This made my program more efficient, idiomatic and also helped me fix the annoying progress bar refresh bug (multiple old bars shown). It also let me actually properly sort by position across all 4 status types (added, removed, moved, errored). I also made the downloading functions use one underlying common function to clean up the codebase. I also removed sqlx4k because it wasn’t actually parallel and was causing issues with init. Here, in the screenshot I am showing the new elegant code for the logging of track statuses. It used to be many individual async calls, but flows allow me to group them up and sort them.
I redid the cli structure to group all the playlist commands under one common playlist parent command. I also implemented a clean up command to help people save disk space because SSDs are expensive right now. For example: music-syncer-kotlin -p path init -> music-syncer-kotlin playlist -p path init This was a necessary step so I could implement the clean up command, which deletes audio and thumbnail files that are not used by any playlists in a container. A container is the folder holding all the databases. Here’s everything I did, stolen from my commit message: feature: add clean-container command - refactor: add hasTrackInDatabase to the Playlist class - refactor: move knownFinal{Audio,Thumbnail}Extension out of class and make it const - refactor: nest all playlist commands as one subcommand - refactor: make cli help text more helpful - refactor: always print something to the console to let the user know that everything went well - refactor: do not use PlaylistHolder, use currentContext.registerJvmCloseable to clean up playlist - fix: when thumbnail is newly created, retag should silently fail
I finally silenced those pesky slf4j and unsafe memory access warnings. Just added the slf4j-nop library and a JVM flag.
I added GraalVM native image support. The actual implementation is boring but this makes the program’s cold starts faster and makes it feel more native. Not sure if this helps with battery life, but it might. This definitely helps with memory usage, the program only uses ~100mb syncing my 400 track playlist. I restricted the native image to Nix because the releases are supposed to always work on all platforms.
Squashed more bugs, updated NativeMetadataMain.kt so that reachability metadata includes image i/o. This makes the Graal native image actually work when having to convert from webp to png. This will be a non issue when I can find an image library that is written in pure Kotlin. The last shipwright to review my project tried syncing a mix, which is infinite. So I added an error for that and made sure no one will run into unexplainable errors again.
Tiny change, I switched from scrimage to ImageIO. It works much better and should be less error prone as scrimage would vendor in webp binaries, which is not cross platform.
I fixed the binary in Nix, it works now, also updated the asciinema cast it was missing some reachability metadata and required LD_LIBRARY_PATH to be set to the jdk’s libraries.
I fixed another Nix graalvm issue. Some mp4s wouldn’t be tagged properly, so I fixed that.
Ships:
I made a Kotlin CLI program that synchronizes a YouTube Music playlist to a SQLite database locally. I made this because I want to be able to play my music freely even when YouTube Music or my network is down. The main challenge was finding a library that would let me get the data I needed (artist, thumbnail, audio tracks, etc.) from YouTube Music, and I even had to rewrite the entire program in Kotlin from Rust because the library I was using couldn’t download audio properly....
|
1793483399.8540208
|
1793569799.8540208
|
|
35917
|
Chess Game by @aashvik | Stardance
|
aashvik
|
1
|
6.0
|
45
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T01:37:49Z", "hours": 6.0, "multiplier": 6.96, "payout": 45, "blessing": "neutral", "text": "ChessChan is a simple chess game I made with JavaScript. It has a clean interface, basic chess gameplay, and everything you need to play a game of chess. It was challenging to learn how to use firebase api and to make the game work online but im real happy with how it turned out.", "repo": "https://github.com/koditra/ChessChan", "demo": "https://koditra.github.io/ChessChan/"}]...
|
[{"post_id": 38702, "ts": "202 [{"post_id": 38702, "ts": "2026-08-01T07:29:02Z", "hours": 1.0761, "text": "Devlog #3 hey! welcome back! i’ve been working on one of the biggest features so far: accounts . firebase authentication i finally got Firebase Authentication working! you can now: sign in with Google continue as a guest stay signed in between sessions once you log in, your name and profile picture are loaded throughout the site! getting this working took a bit longer than i expected because i had to figure out how how firebase works (never used it before). after a lot of testing, it’s finally working reliably. cleaning things up i also spent some time reorganizing the project. instead of putting everything into one giant HTML file, i split different parts of the project into their own pages. it’s already much easier to work on, and adding new features is a lot simpler now. small improvements i fixed a bunch of little issues while working on authentication: improved navigation between pages cleaned up some JavaScript made the login flow smoother fixed a few annoying bugs what’s next? the next feature i’m building is game challenges by username . instead of sharing a PeerJS room ID, you’ll be able to search for another player’s username and send them a game challenge directly. if they accept, the game will automatically connect both players together. i think this is the next needed update! thanks for reading, and as always, let me know if you have any ideas or suggestions!"}, {"post_id": 32986, "ts": "2026-07-22T14:42:21Z", "hours": 1.8675, "text": "Devlog #2 hey! Whats up? it’s been a while since my last devlog, and i’ve gotten way more done than i expected. the project is now way more than just a chessboard on a browser. online multiplayer the biggest feature i added was online multiplayer! i ended up using PeerJS so two players can connect directly to each other via a room ID. It keeps the board perfectly synced too. this was actually pretty easy, it was well documented so didn’t take a lot of time. just a bit of research. better ui!!!!!! the thing that i dont like about apps like lichess is that the UI is kinda bum. so, to fix that, i spent a bunch of time redesigning the whole webpage. i basically gamified the css (biggest change was the buttons!!!) here’s some of what changed: brand new signin page (no js yet) offline and online game mode buttons much better + cooler buttons dropdown hamburger menu with flip board button more spacing everywhere thats about it imo it looks way better offline improvements offline mode auto flips board but u can manually flip too if u want to see from opponents pov. reorganizing everything as the project got bigger, one html file started becoming kind of messy. also i would like having separate links for online and offline play etc. because of this i will split up code in the next devlog what’s next? the next thing i’m working on is accounts. i’m planning on adding Firebase authentication so you can sign in with Google or continue as a guest. after that, i’ll start working on username specific challenges. ill use firbase to store person requests and it can generate a peer id so i dont need a server. Im rlly happy with how its going :) thanks for reading, and as always, let me know if you have any suggestions!"}, {"post_id": 29600, "ts": "2026-07-16T17:20:05Z", "hours": 3.4675, "text": "devlog # 1 hi! i made this project cuz i rlly love chess but want to have more controls over these types of sites. eg. chess.com has paid features and lichess is free but it doesn’t have a good, refined ui that i would prefer. i spent like 3 hours on this first session just trying to get a basic board to load on the screen 😅 😭 . it was a bit of a struggle but it is finally working. the setup struggle i started with vite for the site but it kept fighting with the hack club spaces proxy. the server kept returning html instead of javascript modules, which caused errors in my console and crashed everything. i decided to swith entirely to a static website. now there is no node_modules or package config. just the three files: index.html, style.css, and main.js. the 404 fix even after going static, the board wouldn’t load. i checked the console and found a 404 error. turns out the chess.js version i tried to import didn’t actually exist on npm. i switched the import map to use a verified esm release on the cdn, and the board finally appeared. adding nice features once it was running, i added right-click support so you can draw green arrows and highlight squares (it still doesn’t work all the time, i can guarantee support by next devlog). i also set up auto-flipping. after you make a move, there is a 400ms delay so the piece finishes its animation, and then the board smoothly spins 180 degrees for the other player. whats next next up is showing the list of moves on the side. I also plan having local LAN game!!! However idk i have to research. Maybe after LAN, i could make my own server in my vm from Hack Club Nest! PS. there r screenshots below pls look at them PLS PLEASE PLEASE… give me suggestions…"}]...
|
Title: Chess Game by @aashvik | Stardance
Devlogs Title: Chess Game by @aashvik | Stardance
Devlogs:
devlog # 1 hi! i made this project cuz i rlly love chess but want to have more controls over these types of sites. eg. chess.com has paid features and lichess is free but it doesn’t have a good, refined ui that i would prefer. i spent like 3 hours on this first session just trying to get a basic board to load on the screen 😅 😭 . it was a bit of a struggle but it is finally working. the setup struggle i started with vite for the site but it kept fighting with the hack club spaces proxy. the server kept returning html instead of javascript modules, which caused errors in my console and crashed everything. i decided to swith entirely to a static website. now there is no node_modules or package config. just the three files: index.html, style.css, and main.js. the 404 fix even after going static, the board wouldn’t load. i checked the console and found a 404 error. turns out the chess.js version i tried to import didn’t actually exist on npm. i switched the import map to use a verified esm release on the cdn, and the board finally appeared. adding nice features once it was running, i added right-click support so you can draw green arrows and highlight squares (it still doesn’t work all the time, i can guarantee support by next devlog). i also set up auto-flipping. after you make a move, there is a 400ms delay so the piece finishes its animation, and then the board smoothly spins 180 degrees for the other player. whats next next up is showing the list of moves on the side. I also plan having local LAN game!!! However idk i have to research. Maybe after LAN, i could make my own server in my vm from Hack Club Nest! PS. there r screenshots below pls look at them PLS PLEASE PLEASE… give me suggestions…
Devlog #2 hey! Whats up? it’s been a while since my last devlog, and i’ve gotten way more done than i expected. the project is now way more than just a chessboard on a browser. online multiplayer the biggest feature i added was online multiplayer! i ended up using PeerJS so two players can connect directly to each other via a room ID. It keeps the board perfectly synced too. this was actually pretty easy, it was well documented so didn’t take a lot of time. just a bit of research. better ui!!!!!! the thing that i dont like about apps like lichess is that the UI is kinda bum. so, to fix that, i spent a bunch of time redesigning the whole webpage. i basically gamified the css (biggest change was the buttons!!!) here’s some of what changed: brand new signin page (no js yet) offline and online game mode buttons much better + cooler buttons dropdown hamburger menu with flip board button more spacing everywhere thats about it imo it looks way better offline improvements offline mode auto flips board but u can manually flip too if u want to see from opponents pov. reorganizing everything as the project got bigger, one html file started becoming kind of messy. also i would like having separate links for online and offline play etc. because of this i will split up code in the next devlog what’s next? the next thing i’m working on is accounts. i’m planning on adding Firebase authentication so you can sign in with Google or continue as a guest. after that, i’ll start working on username specific challenges. ill use firbase to store person requests and it can generate a peer id so i dont need a server. Im rlly happy with how its going :) thanks for reading, and as always, let me know if you have any suggestions!
Devlog #3 hey! welcome back! i’ve been working on one of the biggest features so far: accounts . firebase authentication i finally got Firebase Authentication working! you can now: sign in with Google continue as a guest stay signed in between sessions once you log in, your name and profile picture are loaded throughout the site! getting this working took a bit longer than i expected because i had to figure out how how firebase works (never used it before). after a lot of testing, it’s finally working reliably. cleaning things up i also spent some time reorganizing the project. instead of putting everything into one giant HTML file, i split different parts of the project into their own pages. it’s already much easier to work on, and adding new features is a lot simpler now. small improvements i fixed a bunch of little issues while working on authentication: improved navigation between pages cleaned up some JavaScript made the login flow smoother fixed a few annoying bugs what’s next? the next feature i’m building is game challenges by username . instead of sharing a PeerJS room ID, you’ll be able to search for another player’s username and send them a game challenge directly. if they accept, the game will automatically connect both players together. i think this is the next needed update! thanks for reading, and as always, let me know if you have any ideas or suggestions!
Ships:
ChessChan is a simple chess game I made with JavaScript. It has a clean interface, basic chess gameplay, and everything you need to play a game of chess. It was challenging to learn how to use firebase api and to make the game work online but im real happy with how it turned out....
|
1793483405.1590805
|
1793569805.1590805
|
|
12086
|
Hand tracker by @Selim | Stardance
|
Selim
|
2
|
17.0
|
135
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T18:45:43Z", "hours": 15.0, "multiplier": 8.87, "payout": 118, "blessing": "neutral", "text": "I finished the wiring up the servos to the pca9685 board and connected the servos to my 3d printed hand model and its so much fun to use and mess around with, this project is by far my favourite. Its officially done and there are two ways to use it: you can use the website hand tracker just to mess around with it, see the values of the fingers and its reaction speed. Googles media pipe model has issues as you move your hand closer and further from the webcam but there’s nothing I can do to fix as it’s an issue with the model, not my code. grab a pico, pca9685 board, breadboard and some wires, 3d printer/ access to a 3d printer and build the whole project, I will attach the 3d model and wiring diagram once I finish them so anyone can build it from scratch and have their own robotic hand at home!", "repo": "https://github.com/Echo-Sel/Hand-Tracker", "demo": "https://echo-sel.github.io/Hand-Tracker/"}, {"ship_num": 2, "ts": "2026-06-16T21:54:43Z", "hours": 2.0, "multiplier": 9.65, "payout": 17, "blessing": "neutral", "text": "I’ve finally reached a point with this code as to where I feel comfortable moving onto reprinting the hand and cleaning it up, for a potential final product! So far the code can: ✅ Host a website ✅ connect with the browser and host port ✅ allow for webcam access and capture ✅ track finger movements and turn them into percentages (with an overlay) ✅ turns the percentages into numbers that it can decipher ✅ turns the numbers into servo values ✅ move the servo’s within a 5ms time frame (requires external hardware) Next steps: 📥 Motor smoothing to allow for more fluid movements Excluding the code im going to start working on the pcb and adjusting the CAD for the actual hand model to allow for a better looking build. Im really excited to see this project finally come to an end!", "repo": "https://github.com/Echo-Sel/Hand-Tracker", "demo": "https://echo-sel.github.io/Hand-Tracker/"}]...
|
[{"post_id": 60803, "ts": "202 [{"post_id": 60803, "ts": "2026-09-03T12:21:38Z", "hours": 2.9067, "text": "I finally finished all of the functional design for my code and refreshed my html! the big new stuff I changed was the switch over to tiny web and it felt soooo much cleaner and easier to use and just look at. Since the I changed the main structure it took me a while to re organize everything to work with tiny web. I added logging everywhere because I kept running into issues where my could would just stop working, and I refreshed the html because the old colours annoyed me. I think i’m almost done now and i’m so excited to put everything together and test it! (P.S look how much cleaner the terminal output looks im in awe)"}, {"post_id": 26950, "ts": "2026-07-12T01:24:31Z", "hours": 11.99, "text": "This hand code has been traumatizing me for too long, ive restructured it and began adding PID tuning for the motors to turn more smooth and human-like, ive also been trying to bug fix packet loss and random noise being sent back and forth, im going to begin working on the pcb and maybe a third version of the projects CAD! im really excited to finally be finished with the code and take a step back and look at what ive made, hopefully you can all take this step back with me"}, {"post_id": 8292, "ts": "2026-06-13T19:44:41Z", "hours": 1.3464, "text": "Webpage refresh: I added Css to make the website look a lot better and aesthetically pleasing, I also added a slider to allow multiple hands to be tracked. For my next steps I want to add different texts boxes for each hand as currently it gets the percent openness from the least number, not the average."}, {"post_id": 4658, "ts": "2026-06-08T02:01:56Z", "hours": 0.7225, "text": "This was my first ‘real’ project where I work on the design and printing, electrical and programming all of the same system, and its taken me all year but it has been one of the funnest things I’ve done in forever. Ive been working on this project on and off starting last summer, and it has been such an amazing learning experience, I’ve been working on the code recently but with the star dance challenge opening, I thought it would be good to post this here as I continue work on it. What I have here is going to be mainly focused on the programming until I feel good with it, then I’ll move on to and quickly finish the pcb. Please feel free to try out the hand tracking software and provide feedback!"}]...
|
Title: Hand tracker by @Selim | Stardance
Devlogs Title: Hand tracker by @Selim | Stardance
Devlogs:
This was my first ‘real’ project where I work on the design and printing, electrical and programming all of the same system, and its taken me all year but it has been one of the funnest things I’ve done in forever. Ive been working on this project on and off starting last summer, and it has been such an amazing learning experience, I’ve been working on the code recently but with the star dance challenge opening, I thought it would be good to post this here as I continue work on it. What I have here is going to be mainly focused on the programming until I feel good with it, then I’ll move on to and quickly finish the pcb. Please feel free to try out the hand tracking software and provide feedback!
Webpage refresh: I added Css to make the website look a lot better and aesthetically pleasing, I also added a slider to allow multiple hands to be tracked. For my next steps I want to add different texts boxes for each hand as currently it gets the percent openness from the least number, not the average.
This hand code has been traumatizing me for too long, ive restructured it and began adding PID tuning for the motors to turn more smooth and human-like, ive also been trying to bug fix packet loss and random noise being sent back and forth, im going to begin working on the pcb and maybe a third version of the projects CAD! im really excited to finally be finished with the code and take a step back and look at what ive made, hopefully you can all take this step back with me
I finally finished all of the functional design for my code and refreshed my html! the big new stuff I changed was the switch over to tiny web and it felt soooo much cleaner and easier to use and just look at. Since the I changed the main structure it took me a while to re organize everything to work with tiny web. I added logging everywhere because I kept running into issues where my could would just stop working, and I refreshed the html because the old colours annoyed me. I think i’m almost done now and i’m so excited to put everything together and test it! (P.S look how much cleaner the terminal output looks im in awe)
Ships:
I’ve finally reached a point with this code as to where I feel comfortable moving onto reprinting the hand and cleaning it up, for a potential final product! So far the code can: ✅ Host a website ✅ connect with the browser and host port ✅ allow for webcam access and capture ✅ track finger movements and turn them into percentages (with an overlay) ✅ turns the percentages into numbers that it can decipher ✅ turns the numbers into servo values ✅ move the servo’s within a 5ms time frame (requires external hardware) Next steps: 📥 Motor smoothing to allow for more fluid movements Excluding the code im going to start working on the pcb and adjusting the CAD for the actual hand model to allow for a better looking build. Im really excited to see this project finally come to an end!
I finished the wiring up the servos to the pca9685 board and connected the servos to my 3d printed hand model and its so much fun to use and mess around with, this project is by far my favourite. Its officially done and there are two ways to use it: you can use the website hand tracker just to mess around with it, see the values of the fingers and its reaction speed. Googles media pipe model has issues as you move your hand closer and further from the webcam but there’s nothing I can do to fix as it’s an issue with the model, not my code. grab a pico, pca9685 board, breadboard and some wires, 3d printer/ access to a 3d printer and build the whole project, I will attach the 3d model and wiring diagram once I finish them so anyone can build it from scratch and have their own robotic hand at home!...
|
1793483409.2413745
|
1793569809.2413745
|
|
41282
|
Vent Alien by @a-fun-gi | Stardance
|
a-fun-gi
|
1
|
12.0
|
61
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T21:04:23Z", "hours": 12.0, "multiplier": 5.0, "payout": 61, "blessing": "neutral", "text": "The Vent Alien The Story I was in Portland on a trip, and I was walking through the Rebuilding Center, looking for inspiration. I came upon a suspiciously cheap vent. I contemplated this vent and began to have visions of what it could be - if I pried apart the slats and had something that came out of it…. So I bought the vent and went happily back home. Later on I was searching for a 3D model to print for this mysterious creature. After searching “alien” and scrolling through like 10 pages of aliens from Alien (the movie), I found it. The singing alien from Spaceballs! And then I knew that I had to make a singing vent alien. How It’s Made I designed and 3D printed quite a few clips and holders to hold the alien and an SG90 servo. I designed a mechanism that made the motion of the alien moving out of the vent in the way I envisioned it - kind of like jumping, kind of crawling. Because it’s what I had lying around, I used an Arduino Uno to control the whole thing. I added red LEDs for the eyes, and I used a DFRobot DFPlayer Mini to play the song that the alien sings in the movie. I wanted the alien to look like it was dancing instead of just moving statically. I achieved this effect by connecting one of the DFPlayer’s analog outputs to the analog input of the Arduino and mapping the signal to servo angles. To pull everything together, I built a shadow box around the back and added a button to trigger the movement. What I Learned and What Was Challenging I hadn’t used Arduino for a while before this project, so it was fun to relearn some of the syntax and quirks. I actually had never used an analog pin on an Arduino before this project, and I learned that it’s not great to connect something to one without a limiting circuit. I also learned that it’s always important to measure like 40 times before printing a part. I had to do a bit of drilling. ¯ _ (ツ)_/¯ Overall this was a super fun project, and I think the best lesson I learned from it is that a project doesn’t have to have a purpose; heck, it can be the absolute stupidest thing ever. The part that matters is that it brings us joy, and this project definitely did that for me.", "repo": "https://github.com/a-fun-gi/vent-alien", "demo": ""}]...
|
[{"post_id": 49976, "ts": "202 [{"post_id": 49976, "ts": "2026-08-19T00:09:36Z", "hours": 3.7997, "text": "The final devlog… Hardware: I built a shadow box out of black poster board to put around the back of the alien, which I feel like gives it a sense of cohesiveness and gives it a nice background. I also wasted a heck of a lot of time caulking it to the vent for like no reason at all . I also added a button to trigger it so you don’t have to reset the board or plug it in every time you need to dazzle someone. Software: Only a bit of software this time. Just a few lines of code for the button and I also made a wiring diagram and made my README much better. Time to ship!!!"}, {"post_id": 46110, "ts": "2026-08-13T03:13:26Z", "hours": 2.8867, "text": "Devlog # 4: it’s coming together… Software: The main coding thing in this devlog was figuring out how to make the alien actually look like it’s dancing instead of just moving in and out of the vent. I did this by routing the DFPlayer’s left DAC channel into the Arduino’s A0 pin and mapping those values to the servo motor. This worked better than I expected so now it can hit some moves Hardware: I reprinted the alien at finer quality and painted it. I also added LEDs for eyes which is wonderful What’s next I feel like this project is almost ready to ship which is very exciting! The only things to do are to clean up the wiring so it’s one cohesive unit and I am thinking of building a shadow box around the back with some RGB lighting. All in all, one or two more devlogs till we ship!! Until next time…"}, {"post_id": 42959, "ts": "2026-08-07T23:06:56Z", "hours": 0.875, "text": "Devlog # 3: We Have Action!! Finally got down to writing some code and doing some wiring! I’m using a DFRobot DFPlayer Mini (long name ik) for the sound because it’s an alien, of course it has to sing. I went with the original song from the Spaceballs movie which I learned is actually from a really old cartoon. Fun stuff. Anyway stay tuned folks! P.S. watch this video with sound on! ↴"}, {"post_id": 42194, "ts": "2026-08-06T20:08:13Z", "hours": 1.7019, "text": "Devlog # 2: A little more designing and putting some things together I finished designing the parts and put everything together. I ended up using a sacrificed clipboard for the baseplate. Everything worked exactly how it did in the model which made me happy because my 3d modeling skills are not the best. What’s next: Next I need to get the code figured out, add LEDs to the eyes, and I think I will probably re print the alien at a higher quality and paint it. It would also be fun to add an ultrasonic sensor and have it trigger when someone walks past. Too bad my parents won’t let me cut a hole in my wall for it"}, {"post_id": 40449, "ts": "2026-08-03T23:33:40Z", "hours": 3.0125, "text": "Devlog # 1: Designing! I basically designed the mechanism for moving the alien in and out of the vent. And I 3d printed the parts and weathered the vent"}]...
|
Title: Vent Alien by @a-fun-gi | Stardance
Devlog Title: Vent Alien by @a-fun-gi | Stardance
Devlogs:
Devlog # 1: Designing! I basically designed the mechanism for moving the alien in and out of the vent. And I 3d printed the parts and weathered the vent
Devlog # 2: A little more designing and putting some things together I finished designing the parts and put everything together. I ended up using a sacrificed clipboard for the baseplate. Everything worked exactly how it did in the model which made me happy because my 3d modeling skills are not the best. What’s next: Next I need to get the code figured out, add LEDs to the eyes, and I think I will probably re print the alien at a higher quality and paint it. It would also be fun to add an ultrasonic sensor and have it trigger when someone walks past. Too bad my parents won’t let me cut a hole in my wall for it
Devlog # 3: We Have Action!! Finally got down to writing some code and doing some wiring! I’m using a DFRobot DFPlayer Mini (long name ik) for the sound because it’s an alien, of course it has to sing. I went with the original song from the Spaceballs movie which I learned is actually from a really old cartoon. Fun stuff. Anyway stay tuned folks! P.S. watch this video with sound on! ↴
Devlog # 4: it’s coming together… Software: The main coding thing in this devlog was figuring out how to make the alien actually look like it’s dancing instead of just moving in and out of the vent. I did this by routing the DFPlayer’s left DAC channel into the Arduino’s A0 pin and mapping those values to the servo motor. This worked better than I expected so now it can hit some moves Hardware: I reprinted the alien at finer quality and painted it. I also added LEDs for eyes which is wonderful What’s next I feel like this project is almost ready to ship which is very exciting! The only things to do are to clean up the wiring so it’s one cohesive unit and I am thinking of building a shadow box around the back with some RGB lighting. All in all, one or two more devlogs till we ship!! Until next time…
The final devlog… Hardware: I built a shadow box out of black poster board to put around the back of the alien, which I feel like gives it a sense of cohesiveness and gives it a nice background. I also wasted a heck of a lot of time caulking it to the vent for like no reason at all . I also added a button to trigger it so you don’t have to reset the board or plug it in every time you need to dazzle someone. Software: Only a bit of software this time. Just a few lines of code for the button and I also made a wiring diagram and made my README much better. Time to ship!!!
Ships:
The Vent Alien The Story I was in Portland on a trip, and I was walking through the Rebuilding Center, looking for inspiration. I came upon a suspiciously cheap vent. I contemplated this vent and began to have visions of what it could be - if I pried apart the slats and had something that came out of it…. So I bought the vent and went happily back home. Later on I was searching for a 3D model to print for this mysterious creature. After searching “alien” and scrolling through like 10 pages of aliens from Alien (the movie), I found it. The singing alien from Spaceballs! And then I knew that I had to make a singing vent alien. How It’s Made I designed and 3D printed quite a few clips and holders to hold the alien and an SG90 servo. I designed a mechanism that made the motion of the alien moving out of the vent in the way I envisioned it - kind of like jumping, kind of crawling. Because it’s what I had lying around, I used an Arduino Uno to control the whole thing. I added red LEDs for the eyes, and I used a DFRobot DFPlayer Mini to play the song that the alien sings in the movie. I wanted the alien to look like it was dancing instead of just moving statically. I achieved this effect by connecting one of the DFPlayer’s analog outputs to the analog input of the Arduino and mapping the signal to servo angles. To pull everything together, I built a shadow box around the back and added a button to trigger the movement. What I Learned and What Was Challenging I hadn’t used Arduino for a while before this project, so it was fun to relearn some of the syntax and quirks. I actually had never used an analog pin on an Arduino before this project, and I learned that it’s not great to connect something to one without a limiting circuit. I also learned that it’s always important to measure like 40 times before printing a part. I had to do a bit of drilling. ¯ _ (ツ)_/¯ Overall this was a super fun project, and I think the best lesson I learned from it is that a project doesn’t have to have a purpose; heck, it can be the absolute stupidest thing ever. The part that matters is that it brings us joy, and this project definitely did that for me....
|
1793483418.713849
|
1793569818.713849
|
|
42592
|
My very own WebOS by @Umar0 | Stardance
|
Umar0
|
1
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T11:46:41Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Shipped my first Stardance project! I built OrbitOS, a space-themed web operating system from scratch. It features draggable windows, a boot sequence, animated starfield and meteors, Flight Log with persistent local storage, Mission Logs, Comms, a live clock, and several other custom UI interactions. I went beyond the base requirements and added my own features and visual design to make OrbitOS feel like an actual spacecraft operating system rather than just a basic WebOS.", "repo": "https://github.com/ethanhunt7876-ops/OrbitOS", "demo": "https://ethanhunt7876-ops.github.io/OrbitOS/"}]...
|
[{"post_id": 48087, "ts": "202 [{"post_id": 48087, "ts": "2026-08-16T11:39:02Z", "hours": 1.2242, "text": "Shipped the last app, Comms, a terminal styled contact hub with a GitHub link and a click-to-copy email channel (skipped mailto: since it silently fails without a mail client set up), squashed a few typos along the way and fixed a drag-lag issue caused by backdrop blur fighting the animated starfield, that’s all five WebOS1 guides done. OrbitOS now runs five apps:- Welcome, Flight Log, Mission Logs, About, Comms on one shared window system. Submitting this as my Stardance project."}, {"post_id": 47539, "ts": "2026-08-15T14:47:53Z", "hours": 6.4897, "text": "Shipped Mission Logs, a journal app with a sidebar of entries that swap the content pane on click, following Guide 4’s array-of-posts pattern, fourth window now, alongside Welcome, Flight Log, and About, also fixed the top bar so it always stays above focused windows, no more menu getting buried, hit a nasty bug along the way: a stray comma in document.addEventListener(‘DOMContentLoaded’), () => {…} meant the listener never actually attached, and an extra } closed the scope early, so the whole script silently died before the boot screen could ever finish, leaving the desktop stuck forever on “BOOT SUCCESSFUL.” one character, whole OS down, desktop’s also running a live canvas starfield with drifting stars and the occasional shooting meteor in the background, small touch but it makes the thing feel alive rather than static."}, {"post_id": 43343, "ts": "2026-08-08T15:24:39Z", "hours": 1.4178, "text": "Made the welcome window draggable by its header, added working close/reopen buttons, and organized styles into reusable CSS classes. Ran into a layout bug where the header lost its flex-direction and started rendering content side by side instead of stacked, fixed by restoring flex-direction:- column on the window, also resized the header for better readability and spacing"}, {"post_id": 41790, "ts": "2026-08-06T06:10:04Z", "hours": 3.9378, "text": "Rebuilt the OS shell with a boot sequence, styled top bar with a live clock, and a glowing welcome window. Split the code into separate HTML/CSS/JS files. Hit and fixed several real bugs along the way, a missing closing div tag that was silently hiding my entire desktop, a backwards logical condition (if (!clockElement)) that broke the clock, a missing # in an SVG gradient that turned my logo black, and a conflicting overflow: hidden that killed my scrollbar. All fixed now and working smoothly"}, {"post_id": 39503, "ts": "2026-08-02T14:34:17Z", "hours": 0.5283, "text": "finished my welcome screen, custom Orbit OS logo, dark theme with blue accents, and a typewriter effect that types out my intro text letter by letter, hit a few real bugs along the way:- broken image paths, a malformed tag that silently killed the script, and had to get Hackatime + GitHub properly linked, all fixed now and working smoothly."}]...
|
Title: My very own WebOS by @Umar0 | Stardance
De Title: My very own WebOS by @Umar0 | Stardance
Devlogs:
finished my welcome screen, custom Orbit OS logo, dark theme with blue accents, and a typewriter effect that types out my intro text letter by letter, hit a few real bugs along the way:- broken image paths, a malformed tag that silently killed the script, and had to get Hackatime + GitHub properly linked, all fixed now and working smoothly.
Rebuilt the OS shell with a boot sequence, styled top bar with a live clock, and a glowing welcome window. Split the code into separate HTML/CSS/JS files. Hit and fixed several real bugs along the way, a missing closing div tag that was silently hiding my entire desktop, a backwards logical condition (if (!clockElement)) that broke the clock, a missing # in an SVG gradient that turned my logo black, and a conflicting overflow: hidden that killed my scrollbar. All fixed now and working smoothly
Made the welcome window draggable by its header, added working close/reopen buttons, and organized styles into reusable CSS classes. Ran into a layout bug where the header lost its flex-direction and started rendering content side by side instead of stacked, fixed by restoring flex-direction:- column on the window, also resized the header for better readability and spacing
Shipped Mission Logs, a journal app with a sidebar of entries that swap the content pane on click, following Guide 4’s array-of-posts pattern, fourth window now, alongside Welcome, Flight Log, and About, also fixed the top bar so it always stays above focused windows, no more menu getting buried, hit a nasty bug along the way: a stray comma in document.addEventListener(‘DOMContentLoaded’), () => {…} meant the listener never actually attached, and an extra } closed the scope early, so the whole script silently died before the boot screen could ever finish, leaving the desktop stuck forever on “BOOT SUCCESSFUL.” one character, whole OS down, desktop’s also running a live canvas starfield with drifting stars and the occasional shooting meteor in the background, small touch but it makes the thing feel alive rather than static.
Shipped the last app, Comms, a terminal styled contact hub with a GitHub link and a click-to-copy email channel (skipped mailto: since it silently fails without a mail client set up), squashed a few typos along the way and fixed a drag-lag issue caused by backdrop blur fighting the animated starfield, that’s all five WebOS1 guides done. OrbitOS now runs five apps:- Welcome, Flight Log, Mission Logs, About, Comms on one shared window system. Submitting this as my Stardance project.
Ships:
Shipped my first Stardance project! I built OrbitOS, a space-themed web operating system from scratch. It features draggable windows, a boot sequence, animated starfield and meteors, Flight Log with persistent local storage, Mission Logs, Comms, a live clock, and several other custom UI interactions. I went beyond the base requirements and added my own features and visual design to make OrbitOS feel like an actual spacecraft operating system rather than just a basic WebOS....
|
1793483422.6503265
|
1793569822.6503265
|
|
2590
|
My first slack bot! by @Temi | Stardance
|
Temi
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T12:22:04Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a rudimentary slack bot with a focus on productivity functions. The key functions: /tbot-ping — Checks bot responsiveness and displays latency. /tbot-catfact — Fetches and returns a random cat fact. /tbot-joke — Fetches and returns a random joke. /tbot-weather — Retrieves and displays current weather information. /tbot-todo add — Adds a task to the user’s todo list. /tbot-todo list — Lists all tasks in the user’s todo list. /tbot-todo remove — Removes a task by its number. /tbot-todo clear — Clears the user’s entire todo list. /tbot-help — Displays the list of available commands. This project was quite interesting as it was my first step into coding in java script. This led to my having to figure out a lot of syntax issues and how java script deals with things different to python. This was also my first time have to make sure something is able to run 24/7 through a server so I’m quite interested in getting to understand how servers work. How to test my bot: head to the Hackclub slack and try out any of the commands.", "repo": "https://github.com/StealthTD7/Tbot", "demo": "https://slack.hackclub.com/"}]...
|
[{"post_id": 1325, "ts": "2026 [{"post_id": 1325, "ts": "2026-06-03T08:13:27Z", "hours": 0.9464, "text": "Just got Weather implemented! Had some struggles figuring out how to use the api and managing my github but eventually got weather down. To do list next."}, {"post_id": 973, "ts": "2026-06-02T19:06:18Z", "hours": 0.4361, "text": "Started building a basic Slack bot aiming to implement daily weather reports into the bot while also adding productivity features like todo lists on to the chat bot. But just basic functionality for now."}]...
|
Title: My first slack bot! by @Temi | Stardance
D Title: My first slack bot! by @Temi | Stardance
Devlogs:
Started building a basic Slack bot aiming to implement daily weather reports into the bot while also adding productivity features like todo lists on to the chat bot. But just basic functionality for now.
Just got Weather implemented! Had some struggles figuring out how to use the api and managing my github but eventually got weather down. To do list next.
Ships:
I made a rudimentary slack bot with a focus on productivity functions. The key functions: /tbot-ping — Checks bot responsiveness and displays latency. /tbot-catfact — Fetches and returns a random cat fact. /tbot-joke — Fetches and returns a random joke. /tbot-weather — Retrieves and displays current weather information. /tbot-todo add — Adds a task to the user’s todo list. /tbot-todo list — Lists all tasks in the user’s todo list. /tbot-todo remove — Removes a task by its number. /tbot-todo clear — Clears the user’s entire todo list. /tbot-help — Displays the list of available commands. This project was quite interesting as it was my first step into coding in java script. This led to my having to figure out a lot of syntax issues and how java script deals with things different to python. This was also my first time have to make sure something is able to run 24/7 through a server so I’m quite interested in getting to understand how servers work. How to test my bot: head to the Hackclub slack and try out any of the commands....
|
1793483427.5802102
|
1793569827.5802102
|
|
23816
|
Portfolio - Elijah Feldman by @elifeldman769 | Sta Portfolio - Elijah Feldman by @elifeldman769 | Stardance...
|
elifeldman769
|
1
|
12.0
|
192
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-19T15:52:13Z", "hours": 12.0, "multiplier": 16.3, "payout": 192, "blessing": "neutral", "text": "This is my personal website, built in React and hosted on Vercel. I designed most of it with smaller screens in mind first, since my hope was to render it best on the screen of phones, then made sure everything held up on desktop too, using different tailwind classnames for different screen sizes so pages fit well on small, medium, and large screens alike. The home page is smaller and vertically centered rather than using the full width like the rest of the site, since it’s the first thing anyone sees and I wanted it to feel right on a phone before anything else. On the top left of the navbar, it dynamically renders the current page name based on the url you’re on, and on small screens the links collapse into a hamburger button that opens into a full screen menu. For the gallery, I built an indexed system that automatically tiles a group of photos and displays them, hovering a photo reveals its caption sliding up from the bottom. Originally the captions came from the photo’s filename, split by underscore, so each member of that array got appended with spaces to become the string making up the name of the place, which is what shows up on hover. The gallery is much nicer now and loads quickly too, since I wrote a js script to go through each image and compress it, taking the photos from 40 MB down to about 4MB, meaning the page loads much much faster. The two photos that are actually portraits of me get compressed less aggressively than the rest so they stay sharp, since those are the ones I want search engines to associate with my name. I wanted to make sure the site would be easy to add to in the future, so the projects page pulls automatically from a JSON file. I specify a title, date, description, image path, and links, where I just give a tag name for each link and it renders in a unified button format. These are autopopulated with reference ids and jump to the right spot automatically, going straight to that project’s section, and they also get added to a table of contents at the top automatically, so adding a new project is just adding a JSON entry, nothing else. Publications works the same way, off its own JSON file, showing the paper’s title, authors with my own name auto-bolded, venue and year, and the same flexible tag and link buttons as projects. The CV page is taken from the latex code of my actual resume, restructured into that same JSON format so it renders natively on the site instead of just being an embedded PDF, with the option to download the compiled latex pdf too. The publications section on that page pulls from the exact same JSON file the publications page uses, so I only ever add a new paper in one place and both pages stay in sync. The blog has search and topic filtering over a list of posts, and each post’s actual content is a static html file that gets fetched dynamically based on the url, so writing a new post is dropping in an html file and a metadata entry rather than writing more react. Contact is just emails and socials, written with brackets around the at sign to dodge the most basic scrapers. I put the site on google search console with a sitemap so it gets indexed properly, and spent time making sure page titles, descriptions, and image metadata are set up right so photos of me actually have a shot at showing up when people search my name, without cluttering the site with extra images just for that purpose. Overall I really love the theme of this site, with the blue accents, I got some inspiration from other research portfolios I’d seen. Before this it was pretty scattered, without a gallery or projects page, and mostly just had the home page with a weird VantaJS background running on it. Now it’s a lot more complete: a dynamic gallery, a projects page and publications page that both pull from JSON so they’re easy to keep updated, a CV page sourced from my actual resume, and a blog that can actually grow instead of being one hardcoded post.", "repo": "https://github.com/ElijahFeldman7/portfolio", "demo": "https://elijahwfeldman.com"}]...
|
[{"post_id": 31277, "ts": "202 [{"post_id": 31277, "ts": "2026-07-19T15:40:04Z", "hours": 4.6214, "text": "Devlog II: Personal Portfolio The devlog today showcases in a sense more of a refinement with several large QOL updates, along with 2 more pages. Firstly, I optimized the site for mobile. All pages are now fit well for small or md screens by using different tailwind classnames for different screens. Second of all, the gallery is much nicer now and loads quickly, since I wrote a js script to go through each image and compress them. This took them from 40 MB -> 4MB, meaning the page loads much much faster. Next, I wanted to ensure that the site would be easy to add to in the future, so the projects page now pulls automatically from a JSON file. It can have tags for links that render in a unified format and I specify file path, description, title. These are autopopulated with reference ids and go to the table of contents automatically. I added a publications page to showcase my last paper, and those in the future to come. The CV is taken from latex code from my resume and is just a JSON structured format. It has the option to download the latex pdf too."}, {"post_id": 24201, "ts": "2026-07-07T16:47:34Z", "hours": 7.2322, "text": "Devlog I - Personal Website For a bit of context, I worked on this site earlier however before it was pretty scattered without a gallery, projects, and mostly just had the home page with a weird VantaJS background. I apoligize for not dev logging over the past 7 hours, since I got so caught up in dev work. For a brief overview, several features I built were: an indexed gallery system that would automatically tile a group of photos in a folder and display them. it would take the name of the photo and split it by _. for each member in the array, it would append it with spaces to become a string making the name of teh place that can be hovered over. On the top left of the navbar, it’ll dynamically render the url based on what page you are on The home page is smaller since my hope was to render it best on the screen of phones. I designed most of the site with smaller screens in mind For projects, I rendered a table of contexts that will jump to projects/#project based on the selected one, automatically going to that index of the page. I linked the code to previous project, bioblitz, however I still need to add more. I put the site on google search console with a sitemap so it will soon be indexed. Overall, I really love the theme of this site, with the blue accents. I got some inspiration from other research portfolios. In the future, I want to redo the blog page fully since it didn’t have much before but one not dynamically rendered post. Attached are some photos of the pages."}]...
|
Title: Portfolio - Elijah Feldman by @elifeldman76 Title: Portfolio - Elijah Feldman by @elifeldman769 | Stardance
Devlogs:
Devlog I - Personal Website For a bit of context, I worked on this site earlier however before it was pretty scattered without a gallery, projects, and mostly just had the home page with a weird VantaJS background. I apoligize for not dev logging over the past 7 hours, since I got so caught up in dev work. For a brief overview, several features I built were: an indexed gallery system that would automatically tile a group of photos in a folder and display them. it would take the name of the photo and split it by _. for each member in the array, it would append it with spaces to become a string making the name of teh place that can be hovered over. On the top left of the navbar, it’ll dynamically render the url based on what page you are on The home page is smaller since my hope was to render it best on the screen of phones. I designed most of the site with smaller screens in mind For projects, I rendered a table of contexts that will jump to projects/#project based on the selected one, automatically going to that index of the page. I linked the code to previous project, bioblitz, however I still need to add more. I put the site on google search console with a sitemap so it will soon be indexed. Overall, I really love the theme of this site, with the blue accents. I got some inspiration from other research portfolios. In the future, I want to redo the blog page fully since it didn’t have much before but one not dynamically rendered post. Attached are some photos of the pages.
Devlog II: Personal Portfolio The devlog today showcases in a sense more of a refinement with several large QOL updates, along with 2 more pages. Firstly, I optimized the site for mobile. All pages are now fit well for small or md screens by using different tailwind classnames for different screens. Second of all, the gallery is much nicer now and loads quickly, since I wrote a js script to go through each image and compress them. This took them from 40 MB -> 4MB, meaning the page loads much much faster. Next, I wanted to ensure that the site would be easy to add to in the future, so the projects page now pulls automatically from a JSON file. It can have tags for links that render in a unified format and I specify file path, description, title. These are autopopulated with reference ids and go to the table of contents automatically. I added a publications page to showcase my last paper, and those in the future to come. The CV is taken from latex code from my resume and is just a JSON structured format. It has the option to download the latex pdf too.
Ships:
This is my personal website, built in React and hosted on Vercel. I designed most of it with smaller screens in mind first, since my hope was to render it best on the screen of phones, then made sure everything held up on desktop too, using different tailwind classnames for different screen sizes so pages fit well on small, medium, and large screens alike. The home page is smaller and vertically centered rather than using the full width like the rest of the site, since it’s the first thing anyone sees and I wanted it to feel right on a phone before anything else. On the top left of the navbar, it dynamically renders the current page name based on the url you’re on, and on small screens the links collapse into a hamburger button that opens into a full screen menu. For the gallery, I built an indexed system that automatically tiles a group of photos and displays them, hovering a photo reveals its caption sliding up from the bottom. Originally the captions came from the photo’s filename, split by underscore, so each member of that array got appended with spaces to become the string making up the name of the place, which is what shows up on hover. The gallery is much nicer now and loads quickly too, since I wrote a js script to go through each image and compress it, taking the photos from 40 MB down to about 4MB, meaning the page loads much much faster. The two photos that are actually portraits of me get compressed less aggressively than the rest so they stay sharp, since those are the ones I want search engines to associate with my name. I wanted to make sure the site would be easy to add to in the future, so the projects page pulls automatically from a JSON file. I specify a title, date, description, image path, and links, where I just give a tag name for each link and it renders in a unified button format. These are autopopulated with reference ids and jump to the right spot automatically, going straight to that project’s section, and they also get added to a table of contents at the top automatically, so adding a new project is just adding a JSON entry, nothing else. Publications works the same way, off its own JSON file, showing the paper’s title, authors with my own name auto-bolded, venue and year, and the same flexible tag and link buttons as projects. The CV page is taken from the latex code of my actual resume, restructured into that same JSON format so it renders natively on the site instead of just being an embedded PDF, with the option to download the compiled latex pdf too. The publications section on that page pulls from the exact same JSON file the publications page uses, so I only ever add a new paper in one place and both pages stay in sync. The blog has search and topic filtering over a list of posts, and each post’s actual content is a static html file that gets fetched dynamically based on the url, so writing a new post is dropping in an html file and a metadata entry rather than writing more react. Contact is just emails and socials, written with brackets around the at sign to dodge the most basic scrapers. I put the site on google search console with a sitemap so it gets indexed properly, and spent time making sure page titles, descriptions, and image metadata are set up right so photos of me actually have a shot at showing up when people search my name, without cluttering the site with extra images just for that purpose. Overall I really love the theme of this site, with the blue accents, I got some inspiration from other research portfolios I’d seen. Before this it was pretty scattered, without a gallery or projects page, and mostly just had the home page with a weird VantaJS background running on it. Now it’s a lot more complete: a dynamic gallery, a projects page and publications page that both pull from JSON so they’re easy to keep updated, a CV page sourced from my actual resume, and a blog that can actually grow instead of being one hardcoded post....
|
1793483431.9166691
|
1793569831.9166691
|
|
15702
|
Is there a launch ? by @ROBIN_ | Stardance
|
ROBIN_
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T21:16:04Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my first big website, Is there a launch is a website where i can see what when and where a launch will be ! I used a api : Launch data via The Space Devs and it work well ! I just had some diffculties about the hero thing but now, it’s fixed !", "repo": "https://github.com/ROBINSLDPRT/Is-there-a-launch-", "demo": "https://is-there-a-launch.netlify.app/"}]...
|
[{"post_id": 45423, "ts": "202 [{"post_id": 45423, "ts": "2026-08-11T21:12:51Z", "hours": 0.3514, "text": "Final version ! Everything is fixed and i even added a research bar ! I’m proud of my hud because i diddn’t really understood the hero thing but i did it ! And on top of that my website is now published !"}, {"post_id": 6475, "ts": "2026-06-10T21:51:01Z", "hours": 0.4422, "text": "Working on the esthetics but after i will do the api for the upcoming launches :)"}]...
|
Title: Is there a launch ? by @ROBIN_ | Stardance
Title: Is there a launch ? by @ROBIN_ | Stardance
Devlogs:
Working on the esthetics but after i will do the api for the upcoming launches :)
Final version ! Everything is fixed and i even added a research bar ! I’m proud of my hud because i diddn’t really understood the hero thing but i did it ! And on top of that my website is now published !
Ships:
This is my first big website, Is there a launch is a website where i can see what when and where a launch will be ! I used a api : Launch data via The Space Devs and it work well ! I just had some diffculties about the hero thing but now, it’s fixed !...
|
1793483433.9332128
|
1793569833.9332128
|
|
41446
|
My own site! by @Nasko | Stardance
|
Nasko
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T10:32:15Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created my personal site using HTML and CSS. I thought of making a ticket-shaped design that had two rectangles, one bigger than the other, with corners cut at a specific point to make two octagons, and I achieved it using polygons in CSS, and I created multiple elements so that I could use them seperately in HTML, becuase I was met with a bug that when I combined the two, their clip-path would sync and leave me with the same shape with the same dimensions, so I came up with the idea to do it that way using a wrapper, a back element, and a front element. I wanted a navigation bar to move between sections (which would come in handy if I were to make the site longer), and I managed the movement of the sidebar and the photo I placed on the right using position commands. I chose a blue color palette from ColorHunt (I provided the link in the README) to make the site look better. I needed to divide the page into left, middle and right at the first place, I tried using float boxes at the first place becuase it was what I saw from a YouTube tutorial, but after digging in some more, I found flex boxes, and I used flex boxes to make a partition of 1:3:1. Site is hosted in GitHub pages, and the code is on GitHub too, I tested them. You just have to go to the site to see it.", "repo": "https://github.com/NaskoEquationersson/stardance-nasko-site", "demo": "https://naskoequationersson.github.io/stardance-nasko-site/"}]...
|
[{"post_id": 60817, "ts": "202 [{"post_id": 60817, "ts": "2026-09-03T13:20:02Z", "hours": 2.28, "text": "I spent more time on developing the design. I came up with the idea to make ticket shapes for the sections and the navigation bar, and splitting the diagram into 3 as I needed left, right, and middle sections on my design. I created them using flexes and a flex container, and I did some debugging to display content in them. After doing the split, I created ticket as a css class with a clip-path class named cut-corners to get a basic ticket shape which I did get. Afterwards, I tried making a bigger copy of that ticket that would sit behind the smaller one to give a sense of a border, but I struggled on that for some time, because the solution I tried with .ticket::before didn’t work as it got its clip-path directly from ticket, thus making their dimensions same, and making the bigger one disappear, so I thought of doing it with a container. I created ticket-wrapper, and turned .ticket::before to ticket-back, did some splitting up in html, and I got my desired look on the page."}, {"post_id": 57307, "ts": "2026-08-29T12:53:12Z", "hours": 0.6728, "text": "I started writing the html code as I completed the tutorial, and made a simple site with some descriptions, but it lacks design elements as I only used a background indicator and nothing else in css file. My next step will be to organise those with proper design in css."}]...
|
Title: My own site! by @Nasko | Stardance
Devlogs Title: My own site! by @Nasko | Stardance
Devlogs:
I started writing the html code as I completed the tutorial, and made a simple site with some descriptions, but it lacks design elements as I only used a background indicator and nothing else in css file. My next step will be to organise those with proper design in css.
I spent more time on developing the design. I came up with the idea to make ticket shapes for the sections and the navigation bar, and splitting the diagram into 3 as I needed left, right, and middle sections on my design. I created them using flexes and a flex container, and I did some debugging to display content in them. After doing the split, I created ticket as a css class with a clip-path class named cut-corners to get a basic ticket shape which I did get. Afterwards, I tried making a bigger copy of that ticket that would sit behind the smaller one to give a sense of a border, but I struggled on that for some time, because the solution I tried with .ticket::before didn’t work as it got its clip-path directly from ticket, thus making their dimensions same, and making the bigger one disappear, so I thought of doing it with a container. I created ticket-wrapper, and turned .ticket::before to ticket-back, did some splitting up in html, and I got my desired look on the page.
Ships:
I created my personal site using HTML and CSS. I thought of making a ticket-shaped design that had two rectangles, one bigger than the other, with corners cut at a specific point to make two octagons, and I achieved it using polygons in CSS, and I created multiple elements so that I could use them seperately in HTML, becuase I was met with a bug that when I combined the two, their clip-path would sync and leave me with the same shape with the same dimensions, so I came up with the idea to do it that way using a wrapper, a back element, and a front element. I wanted a navigation bar to move between sections (which would come in handy if I were to make the site longer), and I managed the movement of the sidebar and the photo I placed on the right using position commands. I chose a blue color palette from ColorHunt (I provided the link in the README) to make the site look better. I needed to divide the page into left, middle and right at the first place, I tried using float boxes at the first place becuase it was what I saw from a YouTube tutorial, but after digging in some more, I found flex boxes, and I used flex boxes to make a partition of 1:3:1. Site is hosted in GitHub pages, and the code is on GitHub too, I tested them. You just have to go to the site to see it....
|
1793483436.1434152
|
1793569836.1434152
|
|
46001
|
Mr Cool CAT by @wardaqasim5 | Stardance
|
wardaqasim5
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-13T13:29:13Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built “Mr Cool CAT”, an interactive and clever Slack bot designed to bring fun, engagement, and utility to the workspace! What I Made: Added riddles, jokes, interactive buttons, world capitals trivia, and deployed it to run 24/7 on Nest server. What Was Challenging: Setting up Linux packages, fixing missing .env tokens, and configuring systemd to keep it running non-stop. What I’m Proud Of: Learning the full server setup and watching my bot stay online 24/7! with the help of Gemini. How to Test: Add @Mr Cool CAT by slash command /mr-cool-cat-ping to a channel or DM, then send hello or try out the buttons!", "repo": "https://github.com/warda786-eng/My-Cool-CAT", "demo": "https://hackclub.slack.com/archives/D0BPPBWNTDE"}]...
|
[{"post_id": 45786, "ts": "202 [{"post_id": 45786, "ts": "2026-08-12T14:22:05Z", "hours": 0.2811, "text": "okay so today I deployed my project 24/7 using NEST.At first I got many many errors like .env file wasn’t created and bash git command not found, missing package.json file and lastly bot was online but wasn’t responding but eventually I found out these by the help of gemini offc. I want your suggestions further please!!!"}, {"post_id": 44817, "ts": "2026-08-10T20:50:47Z", "hours": 1.0953, "text": "Well, today I was working to run my app physically on Slack and testing its effectiveness plus improving how speedily it responds. I have found it great, but I need your suggestions as I also tried to attach Gemini AI (like to give responses to all messages) but got errors or free trial rate limit (sad). My next step will be to deploy it 24/7 using NEST. Stay tuned!”"}, {"post_id": 44216, "ts": "2026-08-09T20:39:03Z", "hours": 0.7244, "text": "I added some features like interactive buttons for riddles and brain teasers, a world capitals guessing engine, joke triggers, ping slash command, and custom cat-style responses."}]...
|
Title: Mr Cool CAT by @wardaqasim5 | Stardance
De Title: Mr Cool CAT by @wardaqasim5 | Stardance
Devlogs:
I added some features like interactive buttons for riddles and brain teasers, a world capitals guessing engine, joke triggers, ping slash command, and custom cat-style responses.
Well, today I was working to run my app physically on Slack and testing its effectiveness plus improving how speedily it responds. I have found it great, but I need your suggestions as I also tried to attach Gemini AI (like to give responses to all messages) but got errors or free trial rate limit (sad). My next step will be to deploy it 24/7 using NEST. Stay tuned!”
okay so today I deployed my project 24/7 using NEST.At first I got many many errors like .env file wasn’t created and bash git command not found, missing package.json file and lastly bot was online but wasn’t responding but eventually I found out these by the help of gemini offc. I want your suggestions further please!!!
Ships:
I built “Mr Cool CAT”, an interactive and clever Slack bot designed to bring fun, engagement, and utility to the workspace! What I Made: Added riddles, jokes, interactive buttons, world capitals trivia, and deployed it to run 24/7 on Nest server. What Was Challenging: Setting up Linux packages, fixing missing .env tokens, and configuring systemd to keep it running non-stop. What I’m Proud Of: Learning the full server setup and watching my bot stay online 24/7! with the help of Gemini. How to Test: Add @Mr Cool CAT by slash command /mr-cool-cat-ping to a channel or DM, then send hello or try out the buttons!...
|
1793483440.0841775
|
1793569840.0841775
|
|
46048
|
CurrencyConverter by @RajanKC | Stardance
|
RajanKC
|
1
|
1.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-12T17:11:16Z", "hours": 1.0, "multiplier": 2.24, "payout": 3, "blessing": "neutral", "text": "Completed", "repo": "https://github.com/RajanKCKC/CurrencyConverter", "demo": "https://rajankckc.github.io/CurrencyConverter/"}]...
|
[{"post_id": 45889, "ts": "202 [{"post_id": 45889, "ts": "2026-08-12T17:09:29Z", "hours": 0.3208, "text": "Added Readme"}, {"post_id": 45125, "ts": "2026-08-11T12:39:23Z", "hours": 0.4, "text": "Refactor HTML structure and enhance CSS styles for Currency Converter; add JavaScript functionality for currency conversion"}, {"post_id": 44664, "ts": "2026-08-10T16:05:46Z", "hours": 0.35, "text": "Add CSS file for styling the Currency Converter"}, {"post_id": 44069, "ts": "2026-08-09T16:14:01Z", "hours": 0.2667, "text": "Add initial HTML structure for Currency Converter"}]...
|
Title: CurrencyConverter by @RajanKC | Stardance
Title: CurrencyConverter by @RajanKC | Stardance
Devlogs:
Add initial HTML structure for Currency Converter
Add CSS file for styling the Currency Converter
Refactor HTML structure and enhance CSS styles for Currency Converter; add JavaScript functionality for currency conversion
Added Readme
Ships:
Completed...
|
1793483445.1931434
|
1793569845.1931434
|
|
36088
|
TempWart by @xvcf | Stardance
|
xvcf
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-28T13:45:30Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Tempwart You might’ve seen Apples “iCloud privacy email before”. It is basically just an email aliasing system, that protects your real email from spam and other attacks! Since that requires you to use Apples iCloud as your email provider, why just not make it myself? So here I am! Tempwart is essentially just that! It allows you to easily create as many email aliases on a self-hosted Stalwart email server from a browser extension! The Concept (section copied from my README) Imagine you get spam mails, they annoy you. You try to get rid of them somehow, but it feels like they never stop. The solution: self-host your email and create a new email alias for each service you use. Think of this like disposable emails: Create your main email, ex. [email protected] Create your accounts on the platforms you need using Tempwart aliases, ex. [email protected] , [email protected] An email is compromised? Just delete the alias and your main address will be perfectly fine! Never worry about spam mails again! Try it out! You can find the GitHub releases here: https://github.com/RafaeloxMC/tempwart/releases Need a video demo? https://cdn.xvcf.dev/share/tempwart-demo", "repo": "https://github.com/RafaeloxMC/tempwart", "demo": "https://github.com/RafaeloxMC/tempwart/releases"}]...
|
[{"post_id": 71905, "ts": "202 [{"post_id": 71905, "ts": "2026-09-21T19:01:19Z", "hours": 1.4575, "text": "Updated UI, implemented deletion Hey there!! I’ve worked on the extension quite a bit today! UI Changes I have changed the main UI in the extension! The column “Active” is now removed from the table. I didn’t really see any need for it. Aliases are now fixed in their cell and the cell does not expand. Instead, a scroll bar will appear if necessary. Additionally, I have added a simple “Go Back” link on the alias creation page. For some reason, I didn’t add that earlier, so you were stuck on that page when you created an alias and had to open the popup again. Deletion Logic You can now delete aliases created with Tempwart! Setup for Shipping I have modified the requests made from Tempwart. There used to be requests with admin-only permissions. These were pretty unnecessary, since an API key is bound to an account, so there is no need to fetch all accounts, like I did before. This is now removed, so permissions can be applied more precisely. That helps me to provide a working demo for shipping the project, since I won’t have to give anyone admin access on my server. Can’t think of anything else right now, so that should’ve been it!"}, {"post_id": 65636, "ts": "2026-09-10T22:05:09Z", "hours": 0.5186, "text": "New Design Changes! Heya! I made some design changes. This includes the main screen, which now has a table for all the aliases. This provides a simple way to manage them! I have also modified the styling for the “Create Alias” page, as well as the “Select Email” dropdown!"}, {"post_id": 63425, "ts": "2026-09-07T08:11:31Z", "hours": 0.7758, "text": "CSS Update & Alias Creation! Hey there! Today I updated my extensions CSS! It’s far from finished, but it already looks way better than the plain default HTML styling. Since the last Devlog, I have also implemented the creation of aliases! This means you can simply press “Create” on the main page and the extension will generate a new email alias for you! This is the main feature of the extension. My next step is it to redesign the list of aliases on the main page of the extension, and to add the deletion of aliases!"}, {"post_id": 52047, "ts": "2026-08-22T02:51:47Z", "hours": 5.2811, "text": "Hey there, moving my project here from Macondo, therefore these are two devlogs in one! I have NOT shipped this project to Macondo before. Jul 29: Hey there, everyone! I finished the main setup for the tool today! It loads the host URL and API key from a credentials.json file and then prompts the user to select an email address. It then displays all the email aliases that exist for this email address! I already managed to create aliases with the API, haven’t really implemented that yet though. At least it works and just requires some polishing. :) I am planning to make this a browser extension, so you can simply generate new email aliases whenever you sign up for a new service or website. This way, you can easily see where spam emails come from, and you can just delete the alias for it! Jul 30: Yay, finally! I started working on the extension yesterday. Most of the UI is just filled with white pages at the moment but this is obviously subject to change! The extension features an onboarding flow that asks for the server URL and an API key. Today, I made the creation page. It’s still far from perfect. The creation of aliases does not work yet, but the rest of the extension does! (sorry for how pixelated this image is, I had to edit it in MS Paint)"}]...
|
Title: TempWart by @xvcf | Stardance
Devlogs:
Hey Title: TempWart by @xvcf | Stardance
Devlogs:
Hey there, moving my project here from Macondo, therefore these are two devlogs in one! I have NOT shipped this project to Macondo before. Jul 29: Hey there, everyone! I finished the main setup for the tool today! It loads the host URL and API key from a credentials.json file and then prompts the user to select an email address. It then displays all the email aliases that exist for this email address! I already managed to create aliases with the API, haven’t really implemented that yet though. At least it works and just requires some polishing. :) I am planning to make this a browser extension, so you can simply generate new email aliases whenever you sign up for a new service or website. This way, you can easily see where spam emails come from, and you can just delete the alias for it! Jul 30: Yay, finally! I started working on the extension yesterday. Most of the UI is just filled with white pages at the moment but this is obviously subject to change! The extension features an onboarding flow that asks for the server URL and an API key. Today, I made the creation page. It’s still far from perfect. The creation of aliases does not work yet, but the rest of the extension does! (sorry for how pixelated this image is, I had to edit it in MS Paint)
CSS Update & Alias Creation! Hey there! Today I updated my extensions CSS! It’s far from finished, but it already looks way better than the plain default HTML styling. Since the last Devlog, I have also implemented the creation of aliases! This means you can simply press “Create” on the main page and the extension will generate a new email alias for you! This is the main feature of the extension. My next step is it to redesign the list of aliases on the main page of the extension, and to add the deletion of aliases!
New Design Changes! Heya! I made some design changes. This includes the main screen, which now has a table for all the aliases. This provides a simple way to manage them! I have also modified the styling for the “Create Alias” page, as well as the “Select Email” dropdown!
Updated UI, implemented deletion Hey there!! I’ve worked on the extension quite a bit today! UI Changes I have changed the main UI in the extension! The column “Active” is now removed from the table. I didn’t really see any need for it. Aliases are now fixed in their cell and the cell does not expand. Instead, a scroll bar will appear if necessary. Additionally, I have added a simple “Go Back” link on the alias creation page. For some reason, I didn’t add that earlier, so you were stuck on that page when you created an alias and had to open the popup again. Deletion Logic You can now delete aliases created with Tempwart! Setup for Shipping I have modified the requests made from Tempwart. There used to be requests with admin-only permissions. These were pretty unnecessary, since an API key is bound to an account, so there is no need to fetch all accounts, like I did before. This is now removed, so permissions can be applied more precisely. That helps me to provide a working demo for shipping the project, since I won’t have to give anyone admin access on my server. Can’t think of anything else right now, so that should’ve been it!
Ships:
Tempwart You might’ve seen Apples “iCloud privacy email before”. It is basically just an email aliasing system, that protects your real email from spam and other attacks! Since that requires you to use Apples iCloud as your email provider, why just not make it myself? So here I am! Tempwart is essentially just that! It allows you to easily create as many email aliases on a self-hosted Stalwart email server from a browser extension! The Concept (section copied from my README) Imagine you get spam mails, they annoy you. You try to get rid of them somehow, but it feels like they never stop. The solution: self-host your email and create a new email alias for each service you use. Think of this like disposable emails: Create your main email, ex. [email protected] Create your accounts on the platforms you need using Tempwart aliases, ex. [email protected] , [email protected] An email is compromised? Just delete the alias and your main address will be perfectly fine! Never worry about spam mails again! Try it out! You can find the GitHub releases here: https://github.com/RafaeloxMC/tempwart/releases Need a video demo? https://cdn.xvcf.dev/share/tempwart-demo...
|
1793483447.3828306
|
1793569847.3828306
|
|
37952
|
Startier - Memes and Fun by @elipseday | Stardance
|
elipseday
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-21T12:37:05Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Start here which is basically a Slack app that gives you startup and SaaS ideas. The challenging part was figuring out how to link the JSON ideas list to the commands. I’m proud of doing the challenging part. People can just go into their own DMs for any public channel on HatClub Slack and then run the commands listed in the README.", "repo": "https://github.com/harshilarora250/startier", "demo": "https://hackclub.enterprise.slack.com/archives/C0BL4LPQ39N"}]...
|
[{"post_id": 32315, "ts": "202 [{"post_id": 32315, "ts": "2026-07-21T12:34:36Z", "hours": 0.3669, "text": "I have officially launched Startier on Nest! It is live and ready to use! I’m shipping the project now!"}, {"post_id": 32297, "ts": "2026-07-21T11:37:19Z", "hours": 1.7989, "text": "In this I made the entire foundation of Startier, memes and everything. Next Steps: Post to nest!"}]...
|
Title: Startier - Memes and Fun by @elipseday | St Title: Startier - Memes and Fun by @elipseday | Stardance
Devlogs:
In this I made the entire foundation of Startier, memes and everything. Next Steps: Post to nest!
I have officially launched Startier on Nest! It is live and ready to use! I’m shipping the project now!
Ships:
I built Start here which is basically a Slack app that gives you startup and SaaS ideas. The challenging part was figuring out how to link the JSON ideas list to the commands. I’m proud of doing the challenging part. People can just go into their own DMs for any public channel on HatClub Slack and then run the commands listed in the README....
|
1793483448.6207476
|
1793569848.6207476
|
|
46323
|
mytab by @krupa_pramod | Stardance
|
krupa_pramod
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T22:08:29Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a study tab, which has a search engine and various other aspects that I think look good and are also useful for productivity. It has a tasks bar, a widget with Kanye quotes you can keep generating, a search bar that connects to Google, shortcuts to some of my favorite websites, a song, NASAs APOD which updates daily using an API, and the date and time. This was made in HTML, CSS, and JS. It was kind of challenging figuring out the API at first but with the help of the guide I was able to figure out. Overall a fun website to make and I may even use it while studying…", "repo": "https://github.com/krupa-pramod/nasaweb", "demo": "https://krupa-pramod.github.io/nasaweb/"}]...
|
[{"post_id": 58466, "ts": "202 [{"post_id": 58466, "ts": "2026-08-30T21:44:31Z", "hours": 0.4475, "text": "Added shortcuts to Spotify, Github, and Pinterest! Also made the search bar functional (finally), and added the date bar that updates constantly. That was pretty easy since I learnt it in the oS project as well haha. Starting to look more filled!"}, {"post_id": 57579, "ts": "2026-08-29T19:22:10Z", "hours": 0.625, "text": "Added a tasks widget. You can enter tasks, click on them to clear it (check it off), and clear the entire thing. Kind of just did this to delay doing the search bar thing but that’s next actually now. Also tried to make it a little more visually appealing but I still feel like something’s off… hopefully adding a bar with like the date/time and maybe weather will fix that."}, {"post_id": 57056, "ts": "2026-08-29T04:20:12Z", "hours": 1.6194, "text": "I have decided to make a studying kind of tab! I added the nasa photo of the day and also a random kanye quote generator I found online… I also made the search bar in HTML/CSS but it is not functional so next time I will probably be implementing the JS logic for that. So far so good!"}]...
|
Title: mytab by @krupa_pramod | Stardance
Devlogs Title: mytab by @krupa_pramod | Stardance
Devlogs:
I have decided to make a studying kind of tab! I added the nasa photo of the day and also a random kanye quote generator I found online… I also made the search bar in HTML/CSS but it is not functional so next time I will probably be implementing the JS logic for that. So far so good!
Added a tasks widget. You can enter tasks, click on them to clear it (check it off), and clear the entire thing. Kind of just did this to delay doing the search bar thing but that’s next actually now. Also tried to make it a little more visually appealing but I still feel like something’s off… hopefully adding a bar with like the date/time and maybe weather will fix that.
Added shortcuts to Spotify, Github, and Pinterest! Also made the search bar functional (finally), and added the date bar that updates constantly. That was pretty easy since I learnt it in the oS project as well haha. Starting to look more filled!
Ships:
I made a study tab, which has a search engine and various other aspects that I think look good and are also useful for productivity. It has a tasks bar, a widget with Kanye quotes you can keep generating, a search bar that connects to Google, shortcuts to some of my favorite websites, a song, NASAs APOD which updates daily using an API, and the date and time. This was made in HTML, CSS, and JS. It was kind of challenging figuring out the API at first but with the help of the guide I was able to figure out. Overall a fun website to make and I may even use it while studying…...
|
1793483456.084555
|
1793569856.084555
|
|
8496
|
Stock ticker by @Royalblueshadow | Stardance
|
Royalblueshadow
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T20:42:56Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a stocktracker that can show the price changes over a various timeline of vastly different stocks using the yahooquery api. It also shows the 5 best and worst performing stocks of the day with a button to show the details. I am very proud of what I implemented as I hand-coded everything. Currently it still faces one problem of an api limiter as scraping the yahooquery database limits drastically if a large dataset is called. That is why the dataset size can be set manually to adjust to these rate limitations. Feel free to try my project and write a stock symbol to get started ;D", "repo": "https://github.com/Royalblueshadow/Stock-Tracker", "demo": "https://stock-tracker-jxprylb6sjqnwkmav9cwq8.streamlit.app/"}]...
|
[{"post_id": 18619, "ts": "202 [{"post_id": 18619, "ts": "2026-06-29T20:23:14Z", "hours": 8.3983, "text": "Final Changes Over the last week I have implemented plenty new features and fixed as many occuring bugs as possible. Now I am at a point where I am happy to release a ship for my project for everybody to try. So lets talk about whats new: calculation of datasets Like popular stocktrackers I wanted to implement a way to track the best and worst performing stocks of the day to give the users an overview of which outliers there are in the market. Using a github S&P500.csv I scrape the symbols of the stocks and batch it to get specific Ticker objects that give me the price information of any given stock. Using this information I can calculate the current daily percentage change and compare it to the other stocks. Using a Panda Dataframe I order all my results and use the head and tail of the Dataframe to show a clickable button for the user to give more details on the performing stock. Bug fixes for this feature: Problems occured for the scraping of symbols of S&P500 since there can be symbols that yahooqueery doesn’t recognise. To fix this issue a dictionary and type check is implemented to only add actual data to the Dataframe. I have also added a detailed view of the amount of symbols skipped and a dataframe that shows which errors occured for them. Another Problem occured in the implementation of the buttons for the best and worst performing stocks. Cklicking the button didn’t update the shown stock. To fix this I dove into state_sessions in streamlit and used callback functions and keys to hopefully give you a bugfree experience Stylisation Lastly I have implemented the most important step for a good Software. I have customised the design of the website. Now the website renders in a fullscreen view. The primary Colors and button colors are matched according to the positive or negative price changes and the font is also adjusted for a cleaner view And now thank you for reading this long devlog, hopefully you can try my project and have fun with it ;D"}, {"post_id": 13327, "ts": "2026-06-21T20:35:48Z", "hours": 4.6939, "text": "What has changed since the last devlog Introduced a candlestick chart for every stock to gain more financial insight Added a toggle to change between the line and candlestick chart Introduced different time intervals to understand the pricing of the stock, instead of just the daily view Toggling options for the time intervals Added a more accurate price difference calculator based on the given time interval Improved the design of the website, with colors and alignments Shipped the webstie to this domain for you to try out: https://stock-tracker-jxprylb6sjqnwkmav9cwq8.streamlit.app/"}, {"post_id": 11198, "ts": "2026-06-18T10:12:06Z", "hours": 2.6894, "text": "Im building a stocktracker, that gives you the option to input any stock using the yahoo finance api and show the daily, weekly, monthly and yearly price information. In the future I would also like it to create an overview of the best and worst performing stocks and ones that are under their yearly average. Currently I have implemented the system using the streamlit and plotly libraries. By now I have implemented the input for the required stock, as well as the visual price graph of the day. This is done using the history of yfinance and adjusting the database to scrape for the closing price every minute. Furthermore the daily change (in Percent and real value) is calculated in comparision to the closing price of the last day"}]...
|
Title: Stock ticker by @Royalblueshadow | Stardanc Title: Stock ticker by @Royalblueshadow | Stardance
Devlogs:
Im building a stocktracker, that gives you the option to input any stock using the yahoo finance api and show the daily, weekly, monthly and yearly price information. In the future I would also like it to create an overview of the best and worst performing stocks and ones that are under their yearly average. Currently I have implemented the system using the streamlit and plotly libraries. By now I have implemented the input for the required stock, as well as the visual price graph of the day. This is done using the history of yfinance and adjusting the database to scrape for the closing price every minute. Furthermore the daily change (in Percent and real value) is calculated in comparision to the closing price of the last day
What has changed since the last devlog Introduced a candlestick chart for every stock to gain more financial insight Added a toggle to change between the line and candlestick chart Introduced different time intervals to understand the pricing of the stock, instead of just the daily view Toggling options for the time intervals Added a more accurate price difference calculator based on the given time interval Improved the design of the website, with colors and alignments Shipped the webstie to this domain for you to try out: https://stock-tracker-jxprylb6sjqnwkmav9cwq8.streamlit.app/
Final Changes Over the last week I have implemented plenty new features and fixed as many occuring bugs as possible. Now I am at a point where I am happy to release a ship for my project for everybody to try. So lets talk about whats new: calculation of datasets Like popular stocktrackers I wanted to implement a way to track the best and worst performing stocks of the day to give the users an overview of which outliers there are in the market. Using a github S&P500.csv I scrape the symbols of the stocks and batch it to get specific Ticker objects that give me the price information of any given stock. Using this information I can calculate the current daily percentage change and compare it to the other stocks. Using a Panda Dataframe I order all my results and use the head and tail of the Dataframe to show a clickable button for the user to give more details on the performing stock. Bug fixes for this feature: Problems occured for the scraping of symbols of S&P500 since there can be symbols that yahooqueery doesn’t recognise. To fix this issue a dictionary and type check is implemented to only add actual data to the Dataframe. I have also added a detailed view of the amount of symbols skipped and a dataframe that shows which errors occured for them. Another Problem occured in the implementation of the buttons for the best and worst performing stocks. Cklicking the button didn’t update the shown stock. To fix this I dove into state_sessions in streamlit and used callback functions and keys to hopefully give you a bugfree experience Stylisation Lastly I have implemented the most important step for a good Software. I have customised the design of the website. Now the website renders in a fullscreen view. The primary Colors and button colors are matched according to the positive or negative price changes and the font is also adjusted for a cleaner view And now thank you for reading this long devlog, hopefully you can try my project and have fun with it ;D
Ships:
I made a stocktracker that can show the price changes over a various timeline of vastly different stocks using the yahooquery api. It also shows the 5 best and worst performing stocks of the day with a button to show the details. I am very proud of what I implemented as I hand-coded everything. Currently it still faces one problem of an api limiter as scraping the yahooquery database limits drastically if a large dataset is called. That is why the dataset size can be set manually to adjust to these rate limitations. Feel free to try my project and write a stock symbol to get started ;D...
|
1793483460.2218978
|
1793569860.2218978
|
|
23438
|
Hacktown by @spacevini8 | Stardance
|
spacevini8
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T11:19:10Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I wanted to make this mostly as a fun thing before starting my real project, joining is open to anyone in the HC community, albeit with limited space, so if I see that many people take interest in my project, I might even add more pages and plots for people to take! DM me on slack or fork the project if you wish to join! There are currently no members as I wanted to ship it before allowing anyone in. Enjoy!", "repo": "https://github.com/spacevini8/Hacktown", "demo": "https://hacktown.n0budget.com/"}]...
|
[{"post_id": 16841, "ts": "202 [{"post_id": 16841, "ts": "2026-06-27T10:45:18Z", "hours": 0.5083, "text": "Hacktown is essentially finished, It’s still in a somewhat crude state, but I hope to keep updating it as people move in! it’s also now open for anyone (that is a member of HC) to join!"}, {"post_id": 13099, "ts": "2026-06-21T13:02:43Z", "hours": 0.7681, "text": "Added roads and made it a little nicer"}, {"post_id": 13040, "ts": "2026-06-21T10:16:10Z", "hours": 1.115, "text": "I’ve done a big chunk of the town, (thanks netizen.town for the base). It’s kind of crude rn but I’ll keep updating it will hopefully become something usable (and a little less ugly)!"}]...
|
Title: Hacktown by @spacevini8 | Stardance
Devlog Title: Hacktown by @spacevini8 | Stardance
Devlogs:
I’ve done a big chunk of the town, (thanks netizen.town for the base). It’s kind of crude rn but I’ll keep updating it will hopefully become something usable (and a little less ugly)!
Added roads and made it a little nicer
Hacktown is essentially finished, It’s still in a somewhat crude state, but I hope to keep updating it as people move in! it’s also now open for anyone (that is a member of HC) to join!
Ships:
I wanted to make this mostly as a fun thing before starting my real project, joining is open to anyone in the HC community, albeit with limited space, so if I see that many people take interest in my project, I might even add more pages and plots for people to take! DM me on slack or fork the project if you wish to join! There are currently no members as I wanted to ship it before allowing anyone in. Enjoy!...
|
1793483463.3130095
|
1793569863.3130095
|
|
5662
|
Obby Game by @thanuflora | Stardance
|
thanuflora
|
1
|
1.7
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T14:39:40Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a beginner friendly obby game on roblox studios. This was a very challenging project even though I doesn’t seem so hard to make. I am a beginner to coding and knew nothing about what I was doing and github was really hard to understand and I had little motivation to do this but found making these games easy and fast to do. I hope people who test these out have a fun time playing this game and give me feedback on how to improve myself.", "repo": "https://github.com/Thanuflora/Obby-Game", "demo": "https://github.com/Thanuflora/Obby-Game/releases/download/v1.1.0/obby_Game.rbxl"}]...
|
[{"post_id": 13122, "ts": "202 [{"post_id": 13122, "ts": "2026-06-21T13:42:50Z", "hours": 0.7011, "text": "I am currently adding more since the game seemed too short, and I am also adding code so if you step on the wrong path you will fall down if you choose the right one you will survive."}, {"post_id": 12549, "ts": "2026-06-20T14:33:26Z", "hours": 0.37, "text": "My obby game- I finished writing code for my checkpoints so if you die you will spawn at the latest checkpoint that you stepped on."}, {"post_id": 11999, "ts": "2026-06-19T16:03:40Z", "hours": 0.2667, "text": "I am working on how to make a simple obby game on roblox studios, and make it customized."}]...
|
Title: Obby Game by @thanuflora | Stardance
Devlo Title: Obby Game by @thanuflora | Stardance
Devlogs:
I am working on how to make a simple obby game on roblox studios, and make it customized.
My obby game- I finished writing code for my checkpoints so if you die you will spawn at the latest checkpoint that you stepped on.
I am currently adding more since the game seemed too short, and I am also adding code so if you step on the wrong path you will fall down if you choose the right one you will survive.
Ships:
I made a beginner friendly obby game on roblox studios. This was a very challenging project even though I doesn’t seem so hard to make. I am a beginner to coding and knew nothing about what I was doing and github was really hard to understand and I had little motivation to do this but found making these games easy and fast to do. I hope people who test these out have a fun time playing this game and give me feedback on how to improve myself....
|
1793483466.3167512
|
1793569866.3167512
|
|
37888
|
hackatime pixelplant by @abhinav | Stardance
|
abhinav
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-21T06:48:42Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I MADE HACKATIME TIME TRACKING PIXEL PLANT DASHBOARD WHICH THE PLANT WILL GROW WITH YOUR CODING TIME. I Build this project to make coding more engaging , fun and exciting.", "repo": "https://github.com/abhinavkshabu/pixlhacktime", "demo": "https://abhinavkshabu.github.io/pixlhacktime/"}]...
|
[{"post_id": 32201, "ts": "202 [{"post_id": 32201, "ts": "2026-07-21T06:39:56Z", "hours": 3.0936, "text": "I WORKED ON PIXLPLANT , WHICH IS BASICALLY A HACKATIME BUT THERE WILL BE A PIXELPLANT GROWING WITH HACKATIME TRACKED TIME IN DIFFERENT STAGES"}]...
|
Title: hackatime pixelplant by @abhinav | Stardanc Title: hackatime pixelplant by @abhinav | Stardance
Devlogs:
I WORKED ON PIXLPLANT , WHICH IS BASICALLY A HACKATIME BUT THERE WILL BE A PIXELPLANT GROWING WITH HACKATIME TRACKED TIME IN DIFFERENT STAGES
Ships:
I MADE HACKATIME TIME TRACKING PIXEL PLANT DASHBOARD WHICH THE PLANT WILL GROW WITH YOUR CODING TIME. I Build this project to make coding more engaging , fun and exciting....
|
1793483469.2984333
|
1793569869.2984333
|
|
22500
|
Basic Atom Simulator by @harieshkarth | Stardance
|
harieshkarth
|
1
|
3.0
|
11
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T17:30:55Z", "hours": 3.0, "multiplier": 3.49, "payout": 11, "blessing": "neutral", "text": "This is a simulator where the user can hover over three different subatomic particles in an atom to learn more about what they are.", "repo": "https://github.com/harieshkarth-byte/atom-simulator", "demo": "https://harieshkarth-byte.itch.io/atom-simulator"}]...
|
[{"post_id": 14649, "ts": "202 [{"post_id": 14649, "ts": "2026-06-23T20:41:25Z", "hours": 0.9567, "text": "Devlog 2 I’ve finished the first simulator! I redesigned all the subatomic particles as well as the background and descriptions to make everything more visually appealing. Additionally, to help the user know what to do, I added some text telling them to hover over the subatomic particles. Moving on, I would like to make more chemistry simulations. Here are some of my ideas: An interactive periodic table to learn about the different sections A simulation to teach someone how to calculate the atomic mass A simulation that adds electrons to an element, following the Aufbau Principle, to teach someone how to make an electron configuration"}, {"post_id": 13761, "ts": "2026-06-22T15:40:38Z", "hours": 2.17, "text": "Devlog 1 I just finished the bare-bones structure for my atom simulator! I made a basic hydrogen atom with an electron orbiting around a proton and a neutron. When you hover over one of the particles, it gives a basic description of that subatomic particle. For now, I only have placeholder images that I made in about 30 seconds. My next step will be to work on the artwork so it’s a bit more appealing to the eyes. This is my first project, which is why it’s a little basic. I’m hoping to make more sophisticated simulations going forward."}]...
|
Title: Basic Atom Simulator by @harieshkarth | Sta Title: Basic Atom Simulator by @harieshkarth | Stardance
Devlogs:
Devlog 1 I just finished the bare-bones structure for my atom simulator! I made a basic hydrogen atom with an electron orbiting around a proton and a neutron. When you hover over one of the particles, it gives a basic description of that subatomic particle. For now, I only have placeholder images that I made in about 30 seconds. My next step will be to work on the artwork so it’s a bit more appealing to the eyes. This is my first project, which is why it’s a little basic. I’m hoping to make more sophisticated simulations going forward.
Devlog 2 I’ve finished the first simulator! I redesigned all the subatomic particles as well as the background and descriptions to make everything more visually appealing. Additionally, to help the user know what to do, I added some text telling them to hover over the subatomic particles. Moving on, I would like to make more chemistry simulations. Here are some of my ideas: An interactive periodic table to learn about the different sections A simulation to teach someone how to calculate the atomic mass A simulation that adds electrons to an element, following the Aufbau Principle, to teach someone how to make an electron configuration
Ships:
This is a simulator where the user can hover over three different subatomic particles in an atom to learn more about what they are....
|
1793483474.1700535
|
1793569874.1700535
|
|
31324
|
Funny shopping website by @Makkonen | Stardance
|
Makkonen
|
1
|
2.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T17:46:53Z", "hours": 2.0, "multiplier": 1.93, "payout": 4, "blessing": "neutral", "text": "(this part is from README)This is my project and it is an funny internet meme shop where you can pretend to buy various funny items, 1. selet the item you want 2. press add to cart 3. scroll down and select quantity 4. hit buy. You dont actually get the items but the program calculates how much the selected items cost and then you get an message saying how much money you spent. All of the items have unique descriptions so you know what you are(not)buying. this project is inspired by the GeeksForGeeks grocery store website. NO AI WAS USED IN THIS PROJECT. This website is designed to entertain the wiever. The buttons on the top right dont work, they are only so the site looks nice. The challenging part was fixing all of the bugs and getting the site to work but i did it. I am specifically proud of myself because this project doesnt use any ai whatsoever and that is rare in todays world because AI has developed so quickly in the past few years.", "repo": "https://github.com/MakkonenHugo/Funny-internet-shop", "demo": "https://makkonenhugo.github.io/Funny-internet-shop/"}]...
|
[{"post_id": 23568, "ts": "202 [{"post_id": 23568, "ts": "2026-07-06T16:35:00Z", "hours": 0.3597, "text": "This is probably my last devlog because this project is starting to be done, i added various items to the shop and wrote ofcourse the descriptions and changed where the shopping cart is so it is more in the middle of the screen."}, {"post_id": 23551, "ts": "2026-07-06T16:10:36Z", "hours": 0.4481, "text": "I mostly just fixed bugs and added items and descriptions to the site, also i changed the shopping cart (where you “buy” the items) to be in the bottom of the site so users will check out everything that the site has to offer before “Buying” anything."}, {"post_id": 23491, "ts": "2026-07-06T14:41:37Z", "hours": 0.3469, "text": "I changed the colours of the site and added an hover over effect and added new products and descriptions."}, {"post_id": 23485, "ts": "2026-07-06T14:19:33Z", "hours": 0.3433, "text": "Added new items to shop with and added some descriptions for the items."}, {"post_id": 23473, "ts": "2026-07-06T13:56:39Z", "hours": 0.7869, "text": "I made it so you can add to cart various products and then “buy” them"}]...
|
Title: Funny shopping website by @Makkonen | Stard Title: Funny shopping website by @Makkonen | Stardance
Devlogs:
I made it so you can add to cart various products and then “buy” them
Added new items to shop with and added some descriptions for the items.
I changed the colours of the site and added an hover over effect and added new products and descriptions.
I mostly just fixed bugs and added items and descriptions to the site, also i changed the shopping cart (where you “buy” the items) to be in the bottom of the site so users will check out everything that the site has to offer before “Buying” anything.
This is probably my last devlog because this project is starting to be done, i added various items to the shop and wrote ofcourse the descriptions and changed where the shopping cart is so it is more in the middle of the screen.
Ships:
(this part is from README)This is my project and it is an funny internet meme shop where you can pretend to buy various funny items, 1. selet the item you want 2. press add to cart 3. scroll down and select quantity 4. hit buy. You dont actually get the items but the program calculates how much the selected items cost and then you get an message saying how much money you spent. All of the items have unique descriptions so you know what you are(not)buying. this project is inspired by the GeeksForGeeks grocery store website. NO AI WAS USED IN THIS PROJECT. This website is designed to entertain the wiever. The buttons on the top right dont work, they are only so the site looks nice. The challenging part was fixing all of the bugs and getting the site to work but i did it. I am specifically proud of myself because this project doesnt use any ai whatsoever and that is rare in todays world because AI has developed so quickly in the past few years....
|
1793483477.3490245
|
1793569877.3490245
|
|
21592
|
QUIZ APP by @Grace3 | Stardance
|
Grace3
|
1
|
7.0
|
14
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T00:23:55Z", "hours": 7.0, "multiplier": 2.12, "payout": 14, "blessing": "neutral", "text": "I created a Quiz App with HTML, CSS and JavaScript. It has random questions, answer highlighting, a timer, and audio feedback. The hardest part was the JavaScript", "repo": "https://github.com/Temi-ay/Quiz-App", "demo": "https://temi-ay.github.io/Quiz-App/"}]...
|
[{"post_id": 14018, "ts": "202 [{"post_id": 14018, "ts": "2026-06-23T00:18:24Z", "hours": 5.5222, "text": "Completed the quiz app with a working timer and audio"}, {"post_id": 13385, "ts": "2026-06-21T22:36:10Z", "hours": 1.0778, "text": "Working on a Quiz App . using Java, CSS, and HTML"}]...
|
Title: QUIZ APP by @Grace3 | Stardance
Devlogs:
W Title: QUIZ APP by @Grace3 | Stardance
Devlogs:
Working on a Quiz App . using Java, CSS, and HTML
Completed the quiz app with a working timer and audio
Ships:
I created a Quiz App with HTML, CSS and JavaScript. It has random questions, answer highlighting, a timer, and audio feedback. The hardest part was the JavaScript...
|
1793483480.5295823
|
1793569880.5295823
|
|
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....
|
1793483484.640623
|
1793569884.640623
|
|
13941
|
WireSend by @sudu | Stardance
|
sudu
|
1
|
17.67
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T08:27:05Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "WireSend aims to be a custom, made-from-scratch FTP project that transfers files in a local network of computers. Currently, it supports chatting only as the foundation step of the project and actual file transfer system is still in development. I have made the serializing, de-serializing algorithms, along with packet construction and deconstructions and sending/receiving system via TCP sockets. Try it out!", "repo": "https://github.com/sudu7878/custom-ftp", "demo": "https://github.com/sudu7878/WireSend/releases"}]...
|
[{"post_id": 17839, "ts": "202 [{"post_id": 17839, "ts": "2026-06-28T19:40:51Z", "hours": 7.3886, "text": "Devlog 6: HOWDYY EVERYONE!! i know its been an eternity since ive logged in to stardance, and trust me i have a very good reason for this. Firstly, yeah i was busy with my college admissions stuff, quite a long time honestly (and its just the beginning). But also during this time, i was hard at work pushing this project forward for the actual file transfer protocol thing. It was NOT at all easy as i was thinking. To send a file, both the users should have a prompt that shows what type of file they’re receiving and then ask them if they would wanna accept it or not. it seems VERY easy but trust me its the opposite. It took me like a week to come up with a very good and redundant method to ask the users. What is hard you might ask? Well the thing is, you need to have a seperate message parser (ie serializer) so you can make out the file details such as the file name, file size, etc. You need to send that seperately, and then ask the recv thread (the one that is always running to see if there are messages on the socket–multi-threading baby!) that the next incoming packet should be a file negotiation packet (as the name suggests, it negotiates with the user if they wanna accept the file) and then assigns the send thread to pay attention for the user command to accept (using “/accept” or “/reject”) for the files. As for selecting the files, im using an API called “tinyFD”. It’s goated honestly. Made my work a lot easier. Basically what it does is it opens the file saving / file opening dialog native to you OS or display server! Pretty darn good for cross-platform project like this (tho my project only works for unix atm). This was about the file transfer stuff. But there are also many architectural improvements that I made throughout to improve the readibility of the code. For example, instead of endless nested if-else statements, i used switch statements. For the commands, i made a seperate command parser (tho its buggy, not my main focus for now, but yeah working towards it). A few days ago, a reviewer (huge thank you!) asked me for a feature for custom ports. I’ve added it. Now, you should select a port on which you want your host/server to listen on. Took me long enough, but yep, working like a charm. Another issue i found on the reviewer’s screen rec video was that the server STILL proceeded to operate if the binding failed (for context they had port 8000 – the default port for this project previously already busy. When they attempted to run the server, the socket binding failed due to the port being used by another entity). The server would still go to its operating mode. Thats not good and meaningless. So fixed that bug as well. Thank you, reviewer for taking time having a look on my project! Anyways, thank you for reading, have a great day!"}, {"post_id": 10481, "ts": "2026-06-17T07:02:34Z", "hours": 0.3386, "text": "Devlog 5: Gm! So today i started off with documenting the architecture and the protocol design for WireSend. Have a look below!"}, {"post_id": 10199, "ts": "2026-06-16T20:20:48Z", "hours": 4.9436, "text": "Devlog 4: HELLLOOO omg ive been out so long. These past couple of days ive been thinking so long about protocol design for the actual file transfer that i said im working on. GOsh it was such a long journey. 5 rejected ideas and endless staring at the whiteboard. Nevertheless, ive managed to build a file negotiation system (so that the other device can accept/reject the incoming file) that can then also transfer files later on. The reason it was so complex because well, file negotiation is completely different from normal message packets. I need to measure the file size (that can be 64-bit worth in size….which is just BIG), the file name size (which was the big issue for me) and bundle them together and send over the wire. Earlier i was thinking to make completely different packet type for such tasks, but that was seriously wrong idea as i would end up with endless conditional loops, and it looks awful. Instead what im doing is im serializing all that info and shoving it inside the body of the main packet. Then build a seperate deserializer for the file metadata so it could extract data and show it to the user. You could say i could’ve just used the existing messaging infra to transfer the info…after all they’re just strings, right? Well, true they’re just strings, but we’re handling them completely differently. For instance, we’re building a separate architecture for this so that the messaging thing remains different from the file thing. They both dont have any business to be together. That’s called modularity. And besides, i will be transferring files…i certainly couldnt do that using messaging technique and was bound to make a different protocol. SO here i am. Im so sleep deprived rn. so good night"}, {"post_id": 6710, "ts": "2026-06-11T07:39:06Z", "hours": 1.7478, "text": "Devlog 3: Hey y’all new day new ambitions, at least i dont have them. Jokes apart, today I implemented something which bridges the gap more towards the actual file transfer. I added the binary to ASCII and vice versa conversion for receiving and sending packets respectively. Earlier to keep things simple, I was just sending std::string packets, but files cannot be sent that way. Thats one of the foundational stepping stone for this. Apart from this, I also improved the readability for the enum values for payload_type (for which I was kinda responsible in the first place lol). I used to start the numbers with 0…examples: 010, 002, etc. They all represent octal values in C++. I didnt wanna get into that mess so I just removed it. I also added a necessary check to see if the receiving packet contains text or a file chunk (tho only text for now since Ive not implemented the file transfer yet). Im yet to do that flag for the sending as well, but not before I add file handling. Nowadays, I’m just changing the architecture rather than functionality and features. Since I made this project for file transfer than chatting, I think I’d keep both of them, because I have one of them ready, and why not? Thanks have a great day!"}, {"post_id": 5896, "ts": "2026-06-09T21:16:51Z", "hours": 0.6447, "text": "Devlog 2: Added the SendPacket() function to both client and server module. Im essentially making custom functions so I get better flexibility with managing my packets rather to directly use unix functions to do what I want. I really needed the pointer arithmetic check (this is common for the ReceivePacket() as well) because well, TCP guarantees all the bytes will be sent, but not the time it will take to do so. That is why we have to keep looping through our buffer size to get an idea of how many bytes we received and how many are remaining. Yep, its subtle but absolutely important for file transfers. You dont want receiving incomplete and corrupt files!"}, {"post_id": 5507, "ts": "2026-06-09T09:47:48Z", "hours": 1.2172, "text": "Devlog 1: soooooooooooo i finally understood what einstein type shi brain I used before my vacation. Right now my main goal was to not add new features, but to improve the readability of the code. For this, I made a new function, ReceivePacket(), that does nothing but uses TCP streams to receive packets. Earlier I repeated its function for like 4 times, so I made a dedicated function in my API so I could easily use it and reduces lines of code. Enough tech talk, im still recovering from the vacation mode haha."}, {"post_id": 5441, "ts": "2026-06-09T06:40:29Z", "hours": 1.3061, "text": "As i started this project wayyy earlier than i logged into hacktime, I have the chatting thing ready. Though its not much, its better than nothing. Atleast the foundation is set up. I was going to add the file transfer stuff soon, but I went for a vacation for like a week and I forgot much of the stuff (my memory is like a gold fish). But the one thing that I did learn was that: ALWAYS DOCUMENT AND ADD COMMENTS TO YOUR CODE. That way reading it after an eternity is much more sane. Anyways, what I did really was read the code. Spent two days understanding what my sleep-deprived brain at 2AM thought. Wish me luck. b-bye! (also idk what to upload in the screenshot when i said i did nothing meaningful)"}]...
|
Title: WireSend by @sudu | Stardance
Devlogs:
As Title: WireSend by @sudu | Stardance
Devlogs:
As i started this project wayyy earlier than i logged into hacktime, I have the chatting thing ready. Though its not much, its better than nothing. Atleast the foundation is set up. I was going to add the file transfer stuff soon, but I went for a vacation for like a week and I forgot much of the stuff (my memory is like a gold fish). But the one thing that I did learn was that: ALWAYS DOCUMENT AND ADD COMMENTS TO YOUR CODE. That way reading it after an eternity is much more sane. Anyways, what I did really was read the code. Spent two days understanding what my sleep-deprived brain at 2AM thought. Wish me luck. b-bye! (also idk what to upload in the screenshot when i said i did nothing meaningful)
Devlog 1: soooooooooooo i finally understood what einstein type shi brain I used before my vacation. Right now my main goal was to not add new features, but to improve the readability of the code. For this, I made a new function, ReceivePacket(), that does nothing but uses TCP streams to receive packets. Earlier I repeated its function for like 4 times, so I made a dedicated function in my API so I could easily use it and reduces lines of code. Enough tech talk, im still recovering from the vacation mode haha.
Devlog 2: Added the SendPacket() function to both client and server module. Im essentially making custom functions so I get better flexibility with managing my packets rather to directly use unix functions to do what I want. I really needed the pointer arithmetic check (this is common for the ReceivePacket() as well) because well, TCP guarantees all the bytes will be sent, but not the time it will take to do so. That is why we have to keep looping through our buffer size to get an idea of how many bytes we received and how many are remaining. Yep, its subtle but absolutely important for file transfers. You dont want receiving incomplete and corrupt files!
Devlog 3: Hey y’all new day new ambitions, at least i dont have them. Jokes apart, today I implemented something which bridges the gap more towards the actual file transfer. I added the binary to ASCII and vice versa conversion for receiving and sending packets respectively. Earlier to keep things simple, I was just sending std::string packets, but files cannot be sent that way. Thats one of the foundational stepping stone for this. Apart from this, I also improved the readability for the enum values for payload_type (for which I was kinda responsible in the first place lol). I used to start the numbers with 0…examples: 010, 002, etc. They all represent octal values in C++. I didnt wanna get into that mess so I just removed it. I also added a necessary check to see if the receiving packet contains text or a file chunk (tho only text for now since Ive not implemented the file transfer yet). Im yet to do that flag for the sending as well, but not before I add file handling. Nowadays, I’m just changing the architecture rather than functionality and features. Since I made this project for file transfer than chatting, I think I’d keep both of them, because I have one of them ready, and why not? Thanks have a great day!
Devlog 4: HELLLOOO omg ive been out so long. These past couple of days ive been thinking so long about protocol design for the actual file transfer that i said im working on. GOsh it was such a long journey. 5 rejected ideas and endless staring at the whiteboard. Nevertheless, ive managed to build a file negotiation system (so that the other device can accept/reject the incoming file) that can then also transfer files later on. The reason it was so complex because well, file negotiation is completely different from normal message packets. I need to measure the file size (that can be 64-bit worth in size….which is just BIG), the file name size (which was the big issue for me) and bundle them together and send over the wire. Earlier i was thinking to make completely different packet type for such tasks, but that was seriously wrong idea as i would end up with endless conditional loops, and it looks awful. Instead what im doing is im serializing all that info and shoving it inside the body of the main packet. Then build a seperate deserializer for the file metadata so it could extract data and show it to the user. You could say i could’ve just used the existing messaging infra to transfer the info…after all they’re just strings, right? Well, true they’re just strings, but we’re handling them completely differently. For instance, we’re building a separate architecture for this so that the messaging thing remains different from the file thing. They both dont have any business to be together. That’s called modularity. And besides, i will be transferring files…i certainly couldnt do that using messaging technique and was bound to make a different protocol. SO here i am. Im so sleep deprived rn. so good night
Devlog 5: Gm! So today i started off with documenting the architecture and the protocol design for WireSend. Have a look below!
Devlog 6: HOWDYY EVERYONE!! i know its been an eternity since ive logged in to stardance, and trust me i have a very good reason for this. Firstly, yeah i was busy with my college admissions stuff, quite a long time honestly (and its just the beginning). But also during this time, i was hard at work pushing this project forward for the actual file transfer protocol thing. It was NOT at all easy as i was thinking. To send a file, both the users should have a prompt that shows what type of file they’re receiving and then ask them if they would wanna accept it or not. it seems VERY easy but trust me its the opposite. It took me like a week to come up with a very good and redundant method to ask the users. What is hard you might ask? Well the thing is, you need to have a seperate message parser (ie serializer) so you can make out the file details such as the file name, file size, etc. You need to send that seperately, and then ask the recv thread (the one that is always running to see if there are messages on the socket–multi-threading baby!) that the next incoming packet should be a file negotiation packet (as the name suggests, it negotiates with the user if they wanna accept the file) and then assigns the send thread to pay attention for the user command to accept (using “/accept” or “/reject”) for the files. As for selecting the files, im using an API called “tinyFD”. It’s goated honestly. Made my work a lot easier. Basically what it does is it opens the file saving / file opening dialog native to you OS or display server! Pretty darn good for cross-platform project like this (tho my project only works for unix atm). This was about the file transfer stuff. But there are also many architectural improvements that I made throughout to improve the readibility of the code. For example, instead of endless nested if-else statements, i used switch statements. For the commands, i made a seperate command parser (tho its buggy, not my main focus for now, but yeah working towards it). A few days ago, a reviewer (huge thank you!) asked me for a feature for custom ports. I’ve added it. Now, you should select a port on which you want your host/server to listen on. Took me long enough, but yep, working like a charm. Another issue i found on the reviewer’s screen rec video was that the server STILL proceeded to operate if the binding failed (for context they had port 8000 – the default port for this project previously already busy. When they attempted to run the server, the socket binding failed due to the port being used by another entity). The server would still go to its operating mode. Thats not good and meaningless. So fixed that bug as well. Thank you, reviewer for taking time having a look on my project! Anyways, thank you for reading, have a great day!
Ships:
WireSend aims to be a custom, made-from-scratch FTP project that transfers files in a local network of computers. Currently, it supports chatting only as the foundation step of the project and actual file transfer system is still in development. I have made the serializing, de-serializing algorithms, along with packet construction and deconstructions and sending/receiving system via TCP sockets. Try it out!...
|
1793483496.315357
|
1793569896.315357
|
|
26723
|
NasaBot by @lewie_dudding | Stardance
|
lewie_dudding
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T11:45:17Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "NasaBot This was a fun project to learn more about building Slack apps with Bolt and working with external APIs. This was my very first time writing js and my first time ever working with a bot like this. This was quite a fun experience and I am excited to potentially continue devoping this. The bot can fetch today’s Astronomy Picture of the Day, random APODs, and HD versions when available, while automatically handling both images and videos. I also cleaned up the code by creating a reusable command registration function to avoid duplication. It was a great exercise in building something practical while getting more comfortable with Slack integrations, asynchronous API calls, and structuring a small Node.js project. Looking forward to adding features like searching by date and scheduled daily posts next.", "repo": "https://github.com/slewid/NasaBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BDJFHCU7Q"}]...
|
[{"post_id": 16852, "ts": "202 [{"post_id": 16852, "ts": "2026-06-27T11:04:00Z", "hours": 1.6644, "text": "Code cleanup Quick summary I refactored the NasaBot to improve code quality, readability, and maintainability by reducing duplicated code and separating common functionality into reusable functions. Changes made Configured a reusable Axios client for the NASA APOD API using a base url, api key, and request timeout Created a fetchApod() function to retrieve APOD, removing duplicated API request code Added formatExplanation() helper function to truncate long APOD descriptions to display in slack Added a sendAPOD() function to format and send APOD responces, without repeated code Better logging Overall, after this rework, it should be much easier to add future features and maintain the bot."}, {"post_id": 16766, "ts": "2026-06-27T07:13:11Z", "hours": 0.9789, "text": "Set up the bot and added the first few commands 1. nasabot-apod Displays NASA's current Astronomy Picture Of the Day. 2. nasabot-random Displays a random Astronomy Picture Of the Day. 3. nasabot-hd-apod Displays NASA's current Astronomy Picture Of the Day in HD. 4. nasabot-hd-random Displays a random Astronomy Picture Of the Day in hd. 5. nasabot-ping Gets the current nasabot latency 6. nasabot-help Shows all nasabot commands All APOD commands display the title, date, and description nicely formatted alongside the image. The occasional APOD YT video will be displayed as a link."}]...
|
Title: NasaBot by @lewie_dudding | Stardance
Devl Title: NasaBot by @lewie_dudding | Stardance
Devlogs:
Set up the bot and added the first few commands 1. nasabot-apod Displays NASA's current Astronomy Picture Of the Day. 2. nasabot-random Displays a random Astronomy Picture Of the Day. 3. nasabot-hd-apod Displays NASA's current Astronomy Picture Of the Day in HD. 4. nasabot-hd-random Displays a random Astronomy Picture Of the Day in hd. 5. nasabot-ping Gets the current nasabot latency 6. nasabot-help Shows all nasabot commands All APOD commands display the title, date, and description nicely formatted alongside the image. The occasional APOD YT video will be displayed as a link.
Code cleanup Quick summary I refactored the NasaBot to improve code quality, readability, and maintainability by reducing duplicated code and separating common functionality into reusable functions. Changes made Configured a reusable Axios client for the NASA APOD API using a base url, api key, and request timeout Created a fetchApod() function to retrieve APOD, removing duplicated API request code Added formatExplanation() helper function to truncate long APOD descriptions to display in slack Added a sendAPOD() function to format and send APOD responces, without repeated code Better logging Overall, after this rework, it should be much easier to add future features and maintain the bot.
Ships:
NasaBot This was a fun project to learn more about building Slack apps with Bolt and working with external APIs. This was my very first time writing js and my first time ever working with a bot like this. This was quite a fun experience and I am excited to potentially continue devoping this. The bot can fetch today’s Astronomy Picture of the Day, random APODs, and HD versions when available, while automatically handling both images and videos. I also cleaned up the code by creating a reusable command registration function to avoid duplication. It was a great exercise in building something practical while getting more comfortable with Slack integrations, asynchronous API calls, and structuring a small Node.js project. Looking forward to adding features like searching by date and scheduled daily posts next....
|
1793483498.4704986
|
1793569898.4704986
|