|
54128
|
slack off by @Aayand | Stardance
|
Aayand
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T15:03:42Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "simple bot with simple commands, because why not, test it in the hack club slack using /bing-bong-bot-here!", "repo": "https://github.com/victorguy123/slack-bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B96454ZHR"}]...
|
[{"post_id": 54982, "ts": "202 [{"post_id": 54982, "ts": "2026-08-26T12:36:51Z", "hours": 0.3086, "text": "Added 2 commands, -world and -im-a-bot-too"}]...
|
Title: slack off by @Aayand | Stardance
Devlogs:
Title: slack off by @Aayand | Stardance
Devlogs:
Added 2 commands, -world and -im-a-bot-too
Ships:
simple bot with simple commands, because why not, test it in the hack club slack using /bing-bong-bot-here!...
|
1793512329.249777
|
1793598729.249777
|
|
34038
|
journeys by @folsense | Stardance
|
folsense
|
1
|
29.26
|
339
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T15:06:42Z", "hours": 29.0, "multiplier": 11.58, "payout": 339, "blessing": "neutral", "text": "I made a focus timer app that gives you the vibe of being on a train! Each session is a journey (hence the name) and you can create a streak and accrue miles over time. Each subject / area of focus is a RailPass, and you can level up each one individually. The app also supports live activities, so you can leave it to run in the background and just check up on it from the lock screen. I made this for myself to help me with the coming exam season, but hopefully i can get the app store grant to help other people who might need a good free focus timer app :)", "repo": "https://github.com/ssamx3/journeys", "demo": "https://testflight.apple.com/join/NtQ6RRwq"}]...
|
[{"post_id": 37670, "ts": "202 [{"post_id": 37670, "ts": "2026-07-30T15:51:16Z", "hours": 0.2589, "text": "a few more bug fixes that have evaded me for too long have finally been quashed…. and old functions were deleted and the code cleaned up!"}, {"post_id": 35132, "ts": "2026-07-26T11:37:58Z", "hours": 0.8169, "text": "bug FIXING"}, {"post_id": 34066, "ts": "2026-07-24T15:01:48Z", "hours": 0.7428, "text": "debugging and stuffs"}, {"post_id": 33712, "ts": "2026-07-23T20:51:31Z", "hours": 7.0553, "text": "big ui and features update! finished ticket flow, finished focus timer view, finished live activity, finished the home screen nearly, just adding polish and fixing bugs now"}, {"post_id": 32480, "ts": "2026-07-21T18:06:07Z", "hours": 4.9042, "text": "finished some more ui… you can now look at your passes and create new ones and customise them yay! also now works on macos"}, {"post_id": 31490, "ts": "2026-07-19T22:08:43Z", "hours": 7.45, "text": "home screen done (i think) woah this took so long! you can now customise your passes to make cool designs too :)"}, {"post_id": 30349, "ts": "2026-07-17T20:27:29Z", "hours": 1.9003, "text": "Pretty much finished implementing the map view but i kinda hate it and am contemplating going a different direction…. lemme know what yall think"}, {"post_id": 29791, "ts": "2026-07-16T22:07:15Z", "hours": 1.3611, "text": "began implementing the train map view! still some bugs to iron out but its getting better :)"}, {"post_id": 29104, "ts": "2026-07-15T19:20:04Z", "hours": 2.5858, "text": "backend DONE (for now..)! time to move on to the front end! yay :D"}, {"post_id": 27282, "ts": "2026-07-12T18:39:53Z", "hours": 2.4108, "text": "began working on the backend for the app … tedious"}]...
|
Title: journeys by @folsense | Stardance
Devlogs: Title: journeys by @folsense | Stardance
Devlogs:
began working on the backend for the app … tedious
backend DONE (for now..)! time to move on to the front end! yay :D
began implementing the train map view! still some bugs to iron out but its getting better :)
Pretty much finished implementing the map view but i kinda hate it and am contemplating going a different direction…. lemme know what yall think
home screen done (i think) woah this took so long! you can now customise your passes to make cool designs too :)
finished some more ui… you can now look at your passes and create new ones and customise them yay! also now works on macos
big ui and features update! finished ticket flow, finished focus timer view, finished live activity, finished the home screen nearly, just adding polish and fixing bugs now
debugging and stuffs
bug FIXING
a few more bug fixes that have evaded me for too long have finally been quashed…. and old functions were deleted and the code cleaned up!
Ships:
I made a focus timer app that gives you the vibe of being on a train! Each session is a journey (hence the name) and you can create a streak and accrue miles over time. Each subject / area of focus is a RailPass, and you can level up each one individually. The app also supports live activities, so you can leave it to run in the background and just check up on it from the lock screen. I made this for myself to help me with the coming exam season, but hopefully i can get the app store grant to help other people who might need a good free focus timer app :)...
|
1793512330.4348533
|
1793598730.4348533
|
|
12041
|
Puzzle Tab by @Zee | Stardance
|
Zee
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-18T23:23:00Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a new tab page, so far, it has html, css, and js, it’s in a public repo, deployed on github pages, and uses duckduckgo api to fetch search results using a cloudflare worker. This is just my starting point for this project as I want to go on and add many more features", "repo": "https://github.com/abcde456/Puzzle-Tab", "demo": "https://abcde456.github.io/Puzzle-Tab/"}]...
|
[{"post_id": 30948, "ts": "202 [{"post_id": 30948, "ts": "2026-07-18T23:17:23Z", "hours": 0.5581, "text": "Devlog 3 Now I have fully finished the UI for search suggestions, and also added arrow key usage to go up and down suggestions"}, {"post_id": 30926, "ts": "2026-07-18T22:27:56Z", "hours": 0.6003, "text": "Devlog 2 I have added a cool patterned background, and also a logo for this tab. I have also now added the raw search suggestions using duckduckgo api, and a cloudflare worker to get around CORS issue export default { async fetch ( request ) { const url = new URL ( request . url ); const query = url . searchParams . get ( \" q \" ); const response = await fetch ( `https://duckduckgo.com/ac/?q= ${ encodeURIComponent ( query || \"\" )} ` , ); return new Response ( await response . text (), { headers : { \" Content-Type \" : \" application/json \" , \" Access-Control-Allow-Origin \" : \" * \" , }, }); }, }; I need to actually build the UI for it now"}, {"post_id": 30904, "ts": "2026-07-18T21:39:40Z", "hours": 0.4011, "text": "Devlog 1 So far I have managed to put together a basic search bar and have the structure for some quicklinks at the bottom"}]...
|
Title: Puzzle Tab by @Zee | Stardance
Devlogs:
De Title: Puzzle Tab by @Zee | Stardance
Devlogs:
Devlog 1 So far I have managed to put together a basic search bar and have the structure for some quicklinks at the bottom
Devlog 2 I have added a cool patterned background, and also a logo for this tab. I have also now added the raw search suggestions using duckduckgo api, and a cloudflare worker to get around CORS issue export default { async fetch ( request ) { const url = new URL ( request . url ); const query = url . searchParams . get ( " q " ); const response = await fetch ( `https://duckduckgo.com/ac/?q= ${ encodeURIComponent ( query || "" )} ` , ); return new Response ( await response . text (), { headers : { " Content-Type " : " application/json " , " Access-Control-Allow-Origin " : " * " , }, }); }, }; I need to actually build the UI for it now
Devlog 3 Now I have fully finished the UI for search suggestions, and also added arrow key usage to go up and down suggestions
Ships:
I made a new tab page, so far, it has html, css, and js, it’s in a public repo, deployed on github pages, and uses duckduckgo api to fetch search results using a cloudflare worker. This is just my starting point for this project as I want to go on and add many more features...
|
1793512331.6440847
|
1793598731.6440847
|
|
44163
|
Basic Linux Command Guide by @valtdaizora | Starda Basic Linux Command Guide by @valtdaizora | Stardance...
|
valtdaizora
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T21:25:43Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a basic Linux command guide made for beginners or people who want to try Linux but don’t know where to start on the Terminal. I had some issues. so I asked AI for help like to make the slideshow and others. To learn these commands, You need to have something to test it on, like installed Linux, Live Boot, Virtual Machine or WSL (Windows Subsystem for Linux). You don’t need to know any previous commands to learn these cause they are beginner friendly.", "repo": "https://github.com/Valt-Daizora/linuxtips", "demo": "https://valt-daizora.github.io/linuxtips"}]...
|
[{"post_id": 49204, "ts": "202 [{"post_id": 49204, "ts": "2026-08-17T21:14:01Z", "hours": 0.3333, "text": "Devlog #2 To make it simple, I added a search bar and a copy-paste button."}, {"post_id": 41938, "ts": "2026-08-06T13:52:44Z", "hours": 0.2667, "text": "Devlog #1 This simple website is made for Linux beginners and Users who don’t know how to use the terminal. The website contains the basic Linux commands and Terminal shortcut that help you use Linux easier. Not that fancy but I believe it’s useful for a full beginner :)"}]...
|
Title: Basic Linux Command Guide by @valtdaizora | Title: Basic Linux Command Guide by @valtdaizora | Stardance
Devlogs:
Devlog #1 This simple website is made for Linux beginners and Users who don’t know how to use the terminal. The website contains the basic Linux commands and Terminal shortcut that help you use Linux easier. Not that fancy but I believe it’s useful for a full beginner :)
Devlog #2 To make it simple, I added a search bar and a copy-paste button.
Ships:
I made a basic Linux command guide made for beginners or people who want to try Linux but don’t know where to start on the Terminal. I had some issues. so I asked AI for help like to make the slideshow and others. To learn these commands, You need to have something to test it on, like installed Linux, Live Boot, Virtual Machine or WSL (Windows Subsystem for Linux). You don’t need to know any previous commands to learn these cause they are beginner friendly....
|
1793512332.914508
|
1793598732.914508
|
|
14232
|
FennecOS by @kingsuper195 | Stardance
|
kingsuper195
|
1
|
4.1
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-11T11:55:41Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "FennecOS webEdition is a mock-up gui version of the true FennecOS that is yet to be created.", "repo": "https://github.com/kingsuper195/fennecOSweb", "demo": "https://kingsuper195.github.io/fennecOSweb"}]...
|
[{"post_id": 7330, "ts": "2026 [{"post_id": 7330, "ts": "2026-06-12T07:02:48Z", "hours": 1.0992, "text": "Added notes app with localStorage"}, {"post_id": 6787, "ts": "2026-06-11T11:30:43Z", "hours": 1.8639, "text": "Jam number 4, my custom app was a pocketwatch"}, {"post_id": 6094, "ts": "2026-06-10T07:41:41Z", "hours": 0.6475, "text": "Completed “jam” number 3, and added a header bar to the window."}, {"post_id": 6080, "ts": "2026-06-10T06:57:52Z", "hours": 0.5878, "text": "First two “jams” completed. A welcome window and top bar are complete."}]...
|
Title: FennecOS by @kingsuper195 | Stardance
Devl Title: FennecOS by @kingsuper195 | Stardance
Devlogs:
First two “jams” completed. A welcome window and top bar are complete.
Completed “jam” number 3, and added a header bar to the window.
Jam number 4, my custom app was a pocketwatch
Added notes app with localStorage
Ships:
FennecOS webEdition is a mock-up gui version of the true FennecOS that is yet to be created....
|
1793512334.0745173
|
1793598734.0745173
|
|
28814
|
My own site! by @Arsen | Stardance
|
Arsen
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T18:21:04Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I made a personal portfolio website using HTML and CSS to show my projects, skills, and contact information. What was challenging? The CSS was hard. At first I thought it would be easy, but while making the design and styling everything, I realized it was much harder than I expected. What are you proud of? I am proud that I built the whole website myself and made it match the design idea I had in mind. What should people know so they can test your project? The website is fully deployed online. You can open different pages, check my projects, and use the links to test demos and GitHub repositories.", "repo": "https://github.com/Arsen-Gevorgyan/Personal-Web-Site", "demo": "https://arsen-gevorgyan.github.io/Personal-Web-Site/"}]...
|
[{"post_id": 20153, "ts": "202 [{"post_id": 20153, "ts": "2026-07-01T18:13:22Z", "hours": 1.8733, "text": "Made solid progress on the website Added a navigation bar for easier movement across the site Created multiple pages including Home (Index), Contact, and Projects Worked on the overall styling/design to improve the UI Added CSS animations to make interactions and page transitions feel smoother and more dynamic"}, {"post_id": 19236, "ts": "2026-06-30T14:31:52Z", "hours": 0.8144, "text": "Today I worked on building the structure of my website using HTML. I created the basic layout of the page, added sections, a footer, links, and images, while learning how different HTML elements are used to organize and design a webpage."}]...
|
Title: My own site! by @Arsen | Stardance
Devlogs Title: My own site! by @Arsen | Stardance
Devlogs:
Today I worked on building the structure of my website using HTML. I created the basic layout of the page, added sections, a footer, links, and images, while learning how different HTML elements are used to organize and design a webpage.
Made solid progress on the website Added a navigation bar for easier movement across the site Created multiple pages including Home (Index), Contact, and Projects Worked on the overall styling/design to improve the UI Added CSS animations to make interactions and page transitions feel smoother and more dynamic
Ships:
What did you make? I made a personal portfolio website using HTML and CSS to show my projects, skills, and contact information. What was challenging? The CSS was hard. At first I thought it would be easy, but while making the design and styling everything, I realized it was much harder than I expected. What are you proud of? I am proud that I built the whole website myself and made it match the design idea I had in mind. What should people know so they can test your project? The website is fully deployed online. You can open different pages, check my projects, and use the links to test demos and GitHub repositories....
|
1793512335.287833
|
1793598735.287833
|
|
37242
|
OlympiaCode by @Uxyamo | Stardance
|
Uxyamo
|
1
|
10.0
|
29
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-21T18:32:18Z", "hours": 10.0, "multiplier": 2.82, "payout": 29, "blessing": "neutral", "text": "I MADE AN APP THAT HELPS STUDENTS TO IMPROVE THEY’RE MATHS SKILLS. THEY WILL CAN TRAIN FOR OLYMPIADS AND KNAGOROU CONTEST FOR FREE WITH AI GENERATED PROBLEMS", "repo": "https://github.com/mbbs-iam/AIMRoyale", "demo": "https://aimroyale-production.up.railway.app/"}]...
|
[{"post_id": 32483, "ts": "202 [{"post_id": 32483, "ts": "2026-07-21T18:12:45Z", "hours": 0.4, "text": "The app is 💯 correct. I improve some things, and now, we can generate math olympiads problems. That’s nice 🔥🔥"}, {"post_id": 32356, "ts": "2026-07-21T14:02:55Z", "hours": 0.3694, "text": "I implemented an AI that’s free to generate good problems of maths, that let us do maths faster, using Ai for increment productivity and for free"}, {"post_id": 31730, "ts": "2026-07-20T11:23:15Z", "hours": 9.4406, "text": "I am working at a project to help students that love learning maths, while doing funny exercices. I have been improving my project, and now I think that I will add more features"}]...
|
Title: OlympiaCode by @Uxyamo | Stardance
Devlogs Title: OlympiaCode by @Uxyamo | Stardance
Devlogs:
I am working at a project to help students that love learning maths, while doing funny exercices. I have been improving my project, and now I think that I will add more features
I implemented an AI that’s free to generate good problems of maths, that let us do maths faster, using Ai for increment productivity and for free
The app is 💯 correct. I improve some things, and now, we can generate math olympiads problems. That’s nice 🔥🔥
Ships:
I MADE AN APP THAT HELPS STUDENTS TO IMPROVE THEY’RE MATHS SKILLS. THEY WILL CAN TRAIN FOR OLYMPIADS AND KNAGOROU CONTEST FOR FREE WITH AI GENERATED PROBLEMS...
|
1793512336.492177
|
1793598736.492177
|
|
19993
|
DOSEFIELD by @Zhanik | Stardance
|
Zhanik
|
1
|
18.36
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-20T06:48:20Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Today was all about making the site tell the truth about itself instead of just describing itself. I added a Methods and Limitations page that pulls directly from METHODS.md and the README instead of being rewritten into friendly marketing copy. If the documentation and the code ever disagree, the documentation loses immediately because they are now the exact same file. Every page also got an automated footer showing the commit hash, the test count, and the exact verification date. It would have taken five minutes to hardcode a string like “111 tests passing” and move on. Instead, the build script runs the actual test suite first, and if anything fails, the entire build stops cold. This ensures the footer can never claim a passing state that is not true at that exact moment. Wiring a build to gate on its own test results took most of the afternoon because it required thinking through what happens during a failure, not just when everything goes smoothly, but the absolute transparency is worth it. What I like most is that the limitations table on the public site is word-for-word what is in the repository. There is no filtered summary for visitors. The 0.67x gap between my modeled absorbed dose and NASA’s measured RAD numbers reads just as blunt on the public page as it does in the source code. Transparency matters more than hype. Additionally, charts now export at 3200px, and the configuration that produced them gets baked directly into the image itself, meaning a PNG cannot wander off from the settings that generated it. If you want to test it yourself, you can check the live app at DOSEFIELD. Look at the footer for a real commit hash and test count, open the Methods and Limitations page to count the 12 rows in the limitations table, or export a chart to verify the resolution against what is rendered on your screen. The complete source code is also available on GitHub.", "repo": "https://github.com/izbanovj3-prog/DOSEFIELD", "demo": "https://izbanovj3-prog.github.io/DOSEFIELD/"}]...
|
[{"post_id": 81574, "ts": "202 [{"post_id": 81574, "ts": "2026-10-21T18:39:31Z", "hours": 6.3597, "text": "Hey Stardance crew! Three months since my last devlog, so grab a snack and let me catch you up. DOSEFIELD estimates how much radiation an astronaut gets behind shielding on a trip to Mars, then checks itself against real data from NASA’s Curiosity cruise (MSL/RAD). The big news: I found a mistake in my own results. In my first public version, the solar modulation value (W = 30) could not be reproduced from the derivation I had written down. So I went back to the Oulu neutron-monitor data, matched the exact time window RAD used, skipped the solar-storm days, and got W = 47.50. The new numbers look worse, and I kept them: absorbed dose: 0.264 vs 0.458 mGy/day measured (0.58x) dose equivalent: 1.318 vs 1.75 mSv/day (0.75x) mean quality factor: 4.995 vs 3.82 (1.31x) My model skips secondary particles and neutrons, so it under-predicts the dose. I report the gap and leave it alone. Also shipped: a check against the full NIST PSTAR table (max deviation 1.55% from 10 to 1000 MeV), 190 passing tests, a code archive on Zenodo (DOI 10.5281/zenodo.23433384), a revised paper on SSRN, and a website that links to all of it."}, {"post_id": 30550, "ts": "2026-07-18T06:51:49Z", "hours": 2.6992, "text": "DEVLOG #6 Hey everyone!This is probably the last devlog for DOSEFIELD, at least for a while. It’s been an incredible journey—from the first rough prototype to something I’m genuinely proud to share. Thank you to everyone who followed along, tested the project, gave feedback, or simply read these updates. It really meant a lot.v2.3 is the “show your work” release. Nothing changed in the physics—and that’s exactly the point.The biggest addition is a new Methods page that renders the repository’s own METHODS.md and limitations table directly. That means anyone reading the website sees the exact same equations, assumptions, and all 12 limitations that exist in the source code. If the website and the repository ever disagree, the repository is the source of truth.Every page now also includes a provenance footer that’s generated automatically during the build. Instead of typing in a version number by hand, the site runs git rev-parse and the full test suite, then stamps something like:commit e22ef18 · 111/111 tests · verified 2026-07-18The build will actually fail if the tests don’t pass, so it’s impossible to accidentally display a “green” verification badge on a broken build.I also improved chart exports. Figures now render at 3200 px, and each exported chart includes its full configuration in the caption. That makes it much easier to trace a plot back to the exact settings that produced it, whether it’s used in a poster, report, or presentation.One thing I want to be completely clear about: this verification is about the software, not the physics. Passing 111 tests means the implementation behaves as expected according to those tests—it doesn’t prove the scientific model is perfect. The current validation remains the same: about 2× agreement with MSL/RAD, and the 0.67× absorbed-dose gap is still there, clearly documented.That’s exactly what this release is about: transparency over hype, reproducibility over screenshots, and being honest about what the model can—and can’t—do.Thanks for following this project. ❤️"}, {"post_id": 24869, "ts": "2026-07-08T18:38:22Z", "hours": 2.4278, "text": "DEVLOG #5 (might be the last devlog) Hey! It’s been 11 days since the last devlog. DOSEFIELD wasn’t abandoned—I was just busy building instead of writing.This update was really about two things: making the code cleaner and making the site feel like it belongs in a space mission.The first issue was hidden in the background. The NASA validation numbers on the website were calculated separately from the ones used in my research. The math was identical, but it existed in multiple places. That meant one future change could easily make the numbers disagree.So I refactored everything to use a single source of truth. Now every result comes from the same function, making the site much easier to maintain and much harder to break.Then I focused on the design. The old version worked, but it didn’t feel like DOSEFIELD. I redesigned the interface with a mission-control style, added a cleaner layout, and simplified the visuals. I also removed a lot of unnecessary effects—less glow, fewer gradients, and a more purposeful look.After all those changes, I reran every test. All 107 tests still pass, and the stopping-power calculations remain within 1.55% of NIST reference data, exactly as before.There’s still one limitation: my model predicts about 67% of the radiation dose measured by NASA during the trip to Mars. That’s because it doesn’t yet simulate secondary particle production inside spacecraft shielding. It’s an important limitation, and it’s clearly explained on the website rather than hidden.The biggest lesson from this update wasn’t about physics—it was about revisiting old work. Good code doesn’t duplicate logic, and good design doesn’t rely on effects to look impressive. Sometimes the best improvement is simply cleaning up what you already built."}, {"post_id": 16881, "ts": "2026-06-27T12:17:57Z", "hours": 1.2136, "text": "Devlog #4 — Heavy Elements Cut, Liquid Hydrogen Locked In Lead and titanium were off by 50%. I didn’t hide it. My model tracks how particles slow down inside matter. For heavy elements like lead and titanium, you need a correction for the atom’s electron shells — skip it, and your numbers drift by half the actual value. I haven’t built that correction yet. Faking the results to look clean would gut the whole point of the model. So heavy elements are out for now. Liquid hydrogen sits at the opposite extreme. One electron, no shell complexity — the model handles it without shortcuts. I checked against NIST’s official proton data: 0.14% deviation across the full energy range. In physics terms, that’s a bullseye. Five Materials, One Hierarchy I ran five materials together — liquid hydrogen, methane, polyethylene, water, and aluminum — and tested them as a chain. Two things had to hold: thicker shielding means lower dose, and going from hydrogen to aluminum, dose has to climb, because light elements stop protons better. Both held, with no exceptions. Polyethylene and water differ by just 3% in electrons per gram — the model caught even that gap correctly. The sharpest result: at 40 g/cm², liquid hydrogen cuts dose by 44% compared to aluminum. That’s why some spacecraft designs wrap the crew compartment in hydrogen tanks — fuel and radiation shield in one. All five materials are now locked into regression tests. Total: 103 green tests in CI. One Function, One Truth The dashboard and the generated reports used to calculate their numbers separately. Two parallel code paths mean two places for drift to appear. Now both pull from a single shared function. The number on screen and the number in the report are physically incapable of disagreeing."}, {"post_id": 14174, "ts": "2026-06-23T05:11:04Z", "hours": 2.5839, "text": "Devlog #3 — DOSEFIELD Is Live 🚀Hi! Long time no see.DOSEFIELD is now live: https://izbanovj3-prog.github.io/DOSEFIELD/ The entire dosimeter now runs directly in your browser — no installation required. That includes the controls, dose-vs-thickness chart, particle fragmentation toggle, and validation panel.Under the hood, the project is built with Vite and automatically deployed to GitHub Pages through a GitHub Actions workflow. Every push to the main branch triggers a fresh build and deployment. The setup is intentionally simple: deployment uses GitHub’s built-in Actions token, with no external services and no additional secrets.The only challenge in this release wasn’t physics — it was infrastructure. The first deployment failed because GitHub Actions cannot automatically enable GitHub Pages for a repository. The workflow reached that permission boundary and stopped. After enabling Pages in the repository settings and rerunning the workflow, everything deployed successfully.Once the site was live, I verified that all critical assets were being served correctly. The page, stylesheets, and, most importantly, the Web Worker bundle all return HTTP 200 responses with the correct content types.That Web Worker is particularly important because it handles the species-by-species dose integration calculations off the main UI thread. In practice, this means the interface remains responsive while the physics calculations run in the background.No physics models changed in this release, and the known limitations remain the same. This phase was focused entirely on one goal: shipping a fully accessible browser version of DOSEFIELD.The live demo link is now featured at the top of the README."}, {"post_id": 11802, "ts": "2026-06-19T06:41:00Z", "hours": 1.3047, "text": "DOSEFIELD DAY #2:Fragmentation is now in the live app. Until today the web dosimeter only ran the primary-only transport — the most interesting result, that breaking up heavy ions is why hydrogen-rich shielding wins, was buried in a console script. Now there’s a “Primaries only ⇄ + Fragmentation” toggle, and flipping it visibly bends the curves: polyethylene pulls away from aluminium and the mean quality factor drops. Concretely, at solar minimum behind 20 g/cm², polyethylene’s edge over aluminium jumps from 12% to 34% the moment fragmentation turns on — the same figure the validation script prints, read from the same function, not hardcoded. Mean ⟨Q⟩ behind 16 g/cm² of aluminium falls 4.47 → 4.14. Nothing was tuned; the toggle just calls the existing Bradt–Peters model. And the honest ceiling stays put: still no secondary neutrons, so the absorbed-dose gap vs the real MSL/RAD measurement (~0.31 vs 0.46 mGy/day) remains — and the UI footnote says so out loud. 76/76 tests green, build clean. Next: surface the NIST + RAD validation inside the app itself."}, {"post_id": 10579, "ts": "2026-06-17T11:53:38Z", "hours": 1.5142, "text": "Day #1: the hard part is in, now I find out if it’s right I’m building DOSEFIELD, a 1D model that estimates how much radiation an astronaut absorbs on a deep-space mission — and how much shielding actually helps. Cosmic rays in, dose-equivalent out. What’s already solid: the stopping-power core matches NIST PSTAR reference data to within 1.6%, and behind 10 g/cm² of aluminium at solar minimum the model gives 1.96 mSv/day — about 0.70 Sv over a 360-day Mars cruise. That’s 17% past NASA’s 600 mSv career limit. A round trip to Mars quietly blows through the radiation an astronaut is allowed for their entire career. That’s the reason this project exists. But the first version only tracked primary particles, and it showed: my aluminium, polyethylene and water curves were sitting almost on top of each other. That’s physically wrong — polyethylene should shield noticeably better, because hydrogen is good at breaking up heavy ions. The missing piece is nuclear fragmentation. So this week I implemented it — real fragmentation cross sections (Bradt–Peters), not a fudge factor tuned to match NASA’s measured value. The material difference has to come out of the physics: hydrogen has the shortest nuclear interaction length per g/cm², so it should win on its own. No parameter is fit to the answer. Now I’m validating it, and I’m writing the test down BEFORE the result so I can’t quietly move the goalposts. If the physics is right, I should see four things: the curves separate (polyethylene below aluminium), aluminium flatten out at depth, the mean quality factor drop from 4.82 toward ~3.5–4, and the dose move closer to the real MSL/RAD cruise measurement. If they don’t, the model is wrong and I’ll say so. Numbers in the next entry. Either it works or it doesn’t — that’s the whole point of logging the test first. What it still isn’t: 1D, simplified fragmentation, not a replacement for NASA’s HZETRN. Every value traces to a cited source, and the validation suite re-runs on every change."}]...
|
Title: DOSEFIELD by @Zhanik | Stardance
Devlogs:
Title: DOSEFIELD by @Zhanik | Stardance
Devlogs:
Day #1: the hard part is in, now I find out if it’s right I’m building DOSEFIELD, a 1D model that estimates how much radiation an astronaut absorbs on a deep-space mission — and how much shielding actually helps. Cosmic rays in, dose-equivalent out. What’s already solid: the stopping-power core matches NIST PSTAR reference data to within 1.6%, and behind 10 g/cm² of aluminium at solar minimum the model gives 1.96 mSv/day — about 0.70 Sv over a 360-day Mars cruise. That’s 17% past NASA’s 600 mSv career limit. A round trip to Mars quietly blows through the radiation an astronaut is allowed for their entire career. That’s the reason this project exists. But the first version only tracked primary particles, and it showed: my aluminium, polyethylene and water curves were sitting almost on top of each other. That’s physically wrong — polyethylene should shield noticeably better, because hydrogen is good at breaking up heavy ions. The missing piece is nuclear fragmentation. So this week I implemented it — real fragmentation cross sections (Bradt–Peters), not a fudge factor tuned to match NASA’s measured value. The material difference has to come out of the physics: hydrogen has the shortest nuclear interaction length per g/cm², so it should win on its own. No parameter is fit to the answer. Now I’m validating it, and I’m writing the test down BEFORE the result so I can’t quietly move the goalposts. If the physics is right, I should see four things: the curves separate (polyethylene below aluminium), aluminium flatten out at depth, the mean quality factor drop from 4.82 toward ~3.5–4, and the dose move closer to the real MSL/RAD cruise measurement. If they don’t, the model is wrong and I’ll say so. Numbers in the next entry. Either it works or it doesn’t — that’s the whole point of logging the test first. What it still isn’t: 1D, simplified fragmentation, not a replacement for NASA’s HZETRN. Every value traces to a cited source, and the validation suite re-runs on every change.
DOSEFIELD DAY #2:Fragmentation is now in the live app. Until today the web dosimeter only ran the primary-only transport — the most interesting result, that breaking up heavy ions is why hydrogen-rich shielding wins, was buried in a console script. Now there’s a “Primaries only ⇄ + Fragmentation” toggle, and flipping it visibly bends the curves: polyethylene pulls away from aluminium and the mean quality factor drops. Concretely, at solar minimum behind 20 g/cm², polyethylene’s edge over aluminium jumps from 12% to 34% the moment fragmentation turns on — the same figure the validation script prints, read from the same function, not hardcoded. Mean ⟨Q⟩ behind 16 g/cm² of aluminium falls 4.47 → 4.14. Nothing was tuned; the toggle just calls the existing Bradt–Peters model. And the honest ceiling stays put: still no secondary neutrons, so the absorbed-dose gap vs the real MSL/RAD measurement (~0.31 vs 0.46 mGy/day) remains — and the UI footnote says so out loud. 76/76 tests green, build clean. Next: surface the NIST + RAD validation inside the app itself.
Devlog #3 — DOSEFIELD Is Live 🚀Hi! Long time no see.DOSEFIELD is now live: https://izbanovj3-prog.github.io/DOSEFIELD/ The entire dosimeter now runs directly in your browser — no installation required. That includes the controls, dose-vs-thickness chart, particle fragmentation toggle, and validation panel.Under the hood, the project is built with Vite and automatically deployed to GitHub Pages through a GitHub Actions workflow. Every push to the main branch triggers a fresh build and deployment. The setup is intentionally simple: deployment uses GitHub’s built-in Actions token, with no external services and no additional secrets.The only challenge in this release wasn’t physics — it was infrastructure. The first deployment failed because GitHub Actions cannot automatically enable GitHub Pages for a repository. The workflow reached that permission boundary and stopped. After enabling Pages in the repository settings and rerunning the workflow, everything deployed successfully.Once the site was live, I verified that all critical assets were being served correctly. The page, stylesheets, and, most importantly, the Web Worker bundle all return HTTP 200 responses with the correct content types.That Web Worker is particularly important because it handles the species-by-species dose integration calculations off the main UI thread. In practice, this means the interface remains responsive while the physics calculations run in the background.No physics models changed in this release, and the known limitations remain the same. This phase was focused entirely on one goal: shipping a fully accessible browser version of DOSEFIELD.The live demo link is now featured at the top of the README.
Devlog #4 — Heavy Elements Cut, Liquid Hydrogen Locked In Lead and titanium were off by 50%. I didn’t hide it. My model tracks how particles slow down inside matter. For heavy elements like lead and titanium, you need a correction for the atom’s electron shells — skip it, and your numbers drift by half the actual value. I haven’t built that correction yet. Faking the results to look clean would gut the whole point of the model. So heavy elements are out for now. Liquid hydrogen sits at the opposite extreme. One electron, no shell complexity — the model handles it without shortcuts. I checked against NIST’s official proton data: 0.14% deviation across the full energy range. In physics terms, that’s a bullseye. Five Materials, One Hierarchy I ran five materials together — liquid hydrogen, methane, polyethylene, water, and aluminum — and tested them as a chain. Two things had to hold: thicker shielding means lower dose, and going from hydrogen to aluminum, dose has to climb, because light elements stop protons better. Both held, with no exceptions. Polyethylene and water differ by just 3% in electrons per gram — the model caught even that gap correctly. The sharpest result: at 40 g/cm², liquid hydrogen cuts dose by 44% compared to aluminum. That’s why some spacecraft designs wrap the crew compartment in hydrogen tanks — fuel and radiation shield in one. All five materials are now locked into regression tests. Total: 103 green tests in CI. One Function, One Truth The dashboard and the generated reports used to calculate their numbers separately. Two parallel code paths mean two places for drift to appear. Now both pull from a single shared function. The number on screen and the number in the report are physically incapable of disagreeing.
DEVLOG #5 (might be the last devlog) Hey! It’s been 11 days since the last devlog. DOSEFIELD wasn’t abandoned—I was just busy building instead of writing.This update was really about two things: making the code cleaner and making the site feel like it belongs in a space mission.The first issue was hidden in the background. The NASA validation numbers on the website were calculated separately from the ones used in my research. The math was identical, but it existed in multiple places. That meant one future change could easily make the numbers disagree.So I refactored everything to use a single source of truth. Now every result comes from the same function, making the site much easier to maintain and much harder to break.Then I focused on the design. The old version worked, but it didn’t feel like DOSEFIELD. I redesigned the interface with a mission-control style, added a cleaner layout, and simplified the visuals. I also removed a lot of unnecessary effects—less glow, fewer gradients, and a more purposeful look.After all those changes, I reran every test. All 107 tests still pass, and the stopping-power calculations remain within 1.55% of NIST reference data, exactly as before.There’s still one limitation: my model predicts about 67% of the radiation dose measured by NASA during the trip to Mars. That’s because it doesn’t yet simulate secondary particle production inside spacecraft shielding. It’s an important limitation, and it’s clearly explained on the website rather than hidden.The biggest lesson from this update wasn’t about physics—it was about revisiting old work. Good code doesn’t duplicate logic, and good design doesn’t rely on effects to look impressive. Sometimes the best improvement is simply cleaning up what you already built.
DEVLOG #6 Hey everyone!This is probably the last devlog for DOSEFIELD, at least for a while. It’s been an incredible journey—from the first rough prototype to something I’m genuinely proud to share. Thank you to everyone who followed along, tested the project, gave feedback, or simply read these updates. It really meant a lot.v2.3 is the “show your work” release. Nothing changed in the physics—and that’s exactly the point.The biggest addition is a new Methods page that renders the repository’s own METHODS.md and limitations table directly. That means anyone reading the website sees the exact same equations, assumptions, and all 12 limitations that exist in the source code. If the website and the repository ever disagree, the repository is the source of truth.Every page now also includes a provenance footer that’s generated automatically during the build. Instead of typing in a version number by hand, the site runs git rev-parse and the full test suite, then stamps something like:commit e22ef18 · 111/111 tests · verified 2026-07-18The build will actually fail if the tests don’t pass, so it’s impossible to accidentally display a “green” verification badge on a broken build.I also improved chart exports. Figures now render at 3200 px, and each exported chart includes its full configuration in the caption. That makes it much easier to trace a plot back to the exact settings that produced it, whether it’s used in a poster, report, or presentation.One thing I want to be completely clear about: this verification is about the software, not the physics. Passing 111 tests means the implementation behaves as expected according to those tests—it doesn’t prove the scientific model is perfect. The current validation remains the same: about 2× agreement with MSL/RAD, and the 0.67× absorbed-dose gap is still there, clearly documented.That’s exactly what this release is about: transparency over hype, reproducibility over screenshots, and being honest about what the model can—and can’t—do.Thanks for following this project. ❤️
Hey Stardance crew! Three months since my last devlog, so grab a snack and let me catch you up. DOSEFIELD estimates how much radiation an astronaut gets behind shielding on a trip to Mars, then checks itself against real data from NASA’s Curiosity cruise (MSL/RAD). The big news: I found a mistake in my own results. In my first public version, the solar modulation value (W = 30) could not be reproduced from the derivation I had written down. So I went back to the Oulu neutron-monitor data, matched the exact time window RAD used, skipped the solar-storm days, and got W = 47.50. The new numbers look worse, and I kept them: absorbed dose: 0.264 vs 0.458 mGy/day measured (0.58x) dose equivalent: 1.318 vs 1.75 mSv/day (0.75x) mean quality factor: 4.995 vs 3.82 (1.31x) My model skips secondary particles and neutrons, so it under-predicts the dose. I report the gap and leave it alone. Also shipped: a check against the full NIST PSTAR table (max deviation 1.55% from 10 to 1000 MeV), 190 passing tests, a code archive on Zenodo (DOI 10.5281/zenodo.23433384), a revised paper on SSRN, and a website that links to all of it.
Ships:
Today was all about making the site tell the truth about itself instead of just describing itself. I added a Methods and Limitations page that pulls directly from METHODS.md and the README instead of being rewritten into friendly marketing copy. If the documentation and the code ever disagree, the documentation loses immediately because they are now the exact same file. Every page also got an automated footer showing the commit hash, the test count, and the exact verification date. It would have taken five minutes to hardcode a string like “111 tests passing” and move on. Instead, the build script runs the actual test suite first, and if anything fails, the entire build stops cold. This ensures the footer can never claim a passing state that is not true at that exact moment. Wiring a build to gate on its own test results took most of the afternoon because it required thinking through what happens during a failure, not just when everything goes smoothly, but the absolute transparency is worth it. What I like most is that the limitations table on the public site is word-for-word what is in the repository. There is no filtered summary for visitors. The 0.67x gap between my modeled absorbed dose and NASA’s measured RAD numbers reads just as blunt on the public page as it does in the source code. Transparency matters more than hype. Additionally, charts now export at 3200px, and the configuration that produced them gets baked directly into the image itself, meaning a PNG cannot wander off from the settings that generated it. If you want to test it yourself, you can check the live app at DOSEFIELD. Look at the footer for a real commit hash and test count, open the Methods and Limitations page to count the 12 rows in the limitations table, or export a chart to verify the resolution against what is rendered on your screen. The complete source code is also available on GitHub....
|
1793512337.6544058
|
1793598737.6544058
|
|
16968
|
My very own WebOS by @Sair | Stardance
|
Sair
|
2
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T11:30:11Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own WebOS named SairOS. Functions that were for WebOS 1 mission: Live clock Notes app Calculator My Portfolio(connected https://sairsides.github.io/ through iframe) Welcome window(you can open it back by pressing “SairOS” on the top bar) Functions for the WebOS 2 mission: Settings(where you can change the wallpaper) Calculator Boot animation with sound effect I recommend pressing ctrl+shift+R in github page if something does not work. Also the green button is both maximise and minimise buttons.", "repo": "https://github.com/Sairsides/SairOS", "demo": "https://sairsides.github.io/SairOS/"}, {"ship_num": 2, "ts": "2026-06-15T18:02:30Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own WebOS named SairOS. Functions: Live clock Notes app Calculator Settings(where you can change the wallpaper) My Portfolio(connected https://sairsides.github.io/ through iframe) Welcome window(you can open it back by pressing “SairOS” on the top bar) Most challenging part was making my first own Welcome window, after I finished it and understood how everything works, I did not have problem making more windows. I really had fun making a this protect!", "repo": "https://github.com/Sairsides/SairOS", "demo": "https://sairsides.github.io/SairOS/"}]...
|
[{"post_id": 15602, "ts": "202 [{"post_id": 15602, "ts": "2026-06-25T11:22:34Z", "hours": 0.7783, "text": "Added boot animation with sound. Fixed maximise and minimise bug with window(btw green button is both maximise and minimise button)"}, {"post_id": 9376, "ts": "2026-06-15T18:29:55Z", "hours": 0.2731, "text": "Fixed buttons, now there are 2 working buttons, close and maximize buttons"}, {"post_id": 9338, "ts": "2026-06-15T17:46:47Z", "hours": 1.3722, "text": "Added calculator, Settings, and connection to https://sairsides.github.io/"}, {"post_id": 9188, "ts": "2026-06-15T12:49:35Z", "hours": 1.0311, "text": "Made hover animation. An app(note app). To open it you need to double click like in a real OS. Added also little details like, that the window and go under or over the top bar. If for example the Welcome Window is blocking the Notes app, just click the Notes app to bring it back to the front. Did not make the other buttons work yet."}, {"post_id": 8717, "ts": "2026-06-14T14:12:33Z", "hours": 1.2919, "text": "Fixed a bug with the background. Welcome window is now draggable, closable and openable. You can open the Welcome Window by pressing the SairOS on the top bar. Next I suppose I will make the other buttons work also."}, {"post_id": 8406, "ts": "2026-06-13T23:38:10Z", "hours": 1.97, "text": "Today I added a window, wallpaper, top bar with an OS name and a live ticking clock with JS. Next time I will make windows closable, openable and draggable."}, {"post_id": 7498, "ts": "2026-06-12T14:38:08Z", "hours": 1.1861, "text": "Progress so far, added SairOS logo and basic Welcome Screen. Next i will add Wallpaper, Window, Top bar, Tracking time with JS. You can also check out the the OS here: https://sairsides.github.io/SairOS/"}]...
|
Title: My very own WebOS by @Sair | Stardance
Dev Title: My very own WebOS by @Sair | Stardance
Devlogs:
Progress so far, added SairOS logo and basic Welcome Screen. Next i will add Wallpaper, Window, Top bar, Tracking time with JS. You can also check out the the OS here: https://sairsides.github.io/SairOS/
Today I added a window, wallpaper, top bar with an OS name and a live ticking clock with JS. Next time I will make windows closable, openable and draggable.
Fixed a bug with the background. Welcome window is now draggable, closable and openable. You can open the Welcome Window by pressing the SairOS on the top bar. Next I suppose I will make the other buttons work also.
Made hover animation. An app(note app). To open it you need to double click like in a real OS. Added also little details like, that the window and go under or over the top bar. If for example the Welcome Window is blocking the Notes app, just click the Notes app to bring it back to the front. Did not make the other buttons work yet.
Added calculator, Settings, and connection to https://sairsides.github.io/
Fixed buttons, now there are 2 working buttons, close and maximize buttons
Added boot animation with sound. Fixed maximise and minimise bug with window(btw green button is both maximise and minimise button)
Ships:
I made my own WebOS named SairOS. Functions: Live clock Notes app Calculator Settings(where you can change the wallpaper) My Portfolio(connected https://sairsides.github.io/ through iframe) Welcome window(you can open it back by pressing “SairOS” on the top bar) Most challenging part was making my first own Welcome window, after I finished it and understood how everything works, I did not have problem making more windows. I really had fun making a this protect!
I made my own WebOS named SairOS. Functions that were for WebOS 1 mission: Live clock Notes app Calculator My Portfolio(connected https://sairsides.github.io/ through iframe) Welcome window(you can open it back by pressing “SairOS” on the top bar) Functions for the WebOS 2 mission: Settings(where you can change the wallpaper) Calculator Boot animation with sound effect I recommend pressing ctrl+shift+R in github page if something does not work. Also the green button is both maximise and minimise buttons....
|
1793512338.822672
|
1793598738.822672
|
|
19342
|
Pulse VR by @rylvion | Stardance
|
rylvion
|
1
|
31.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T21:46:08Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i created a web app for Unit 15: Website Development as part of my coursework, hosted on GitHub Pages, with multiple pages and a 4-step booking flow. a major challenge was working under time constraints while fixing bugs, improving the website, documenting, writing up the report and way way more than i expected. I am most proud of the booking system, advanced GitHub Actions, and achieving 90+ on PageSpeed Insights. To test the project, users should explore different pages and try the full booking flow (bookings tab) on both mobile and desktop. also there is 1 devlog and im shipping it rn to gather end user feedback for the next stage of u15 (review + refinement + documenting + bug fixing + more )", "repo": "https://github.com/rylvion/pulse-vr/", "demo": "https://rylvion.github.io/pulse-vr/"}]...
|
[{"post_id": 9467, "ts": "2026 [{"post_id": 9467, "ts": "2026-06-15T20:29:21Z", "hours": 30.7233, "text": "booking flow (4 steps process) home/pricing/loads of other pages rlly advanced github actions more stuff that i cant remember wireframes: https://app.moqups.com/7pztHxaFX9Yz5oI0v58osy9wUSSnmtnt/view/page/aaef4bdbf"}]...
|
Title: Pulse VR by @rylvion | Stardance
Devlogs:
Title: Pulse VR by @rylvion | Stardance
Devlogs:
booking flow (4 steps process) home/pricing/loads of other pages rlly advanced github actions more stuff that i cant remember wireframes: https://app.moqups.com/7pztHxaFX9Yz5oI0v58osy9wUSSnmtnt/view/page/aaef4bdbf
Ships:
i created a web app for Unit 15: Website Development as part of my coursework, hosted on GitHub Pages, with multiple pages and a 4-step booking flow. a major challenge was working under time constraints while fixing bugs, improving the website, documenting, writing up the report and way way more than i expected. I am most proud of the booking system, advanced GitHub Actions, and achieving 90+ on PageSpeed Insights. To test the project, users should explore different pages and try the full booking flow (bookings tab) on both mobile and desktop. also there is 1 devlog and im shipping it rn to gather end user feedback for the next stage of u15 (review + refinement + documenting + bug fixing + more )...
|
1793512340.0547364
|
1793598740.0547364
|
|
13360
|
Xinyu Lyu Website by @xinyulyu | Stardance
|
xinyulyu
|
1
|
1.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T19:07:45Z", "hours": 1.0, "multiplier": 2.57, "payout": 3, "blessing": "neutral", "text": "I created my own website where people can learn more about me and the projects I am working on. I even bought a custom domain for it. The website took around 23 hours to build with the help of GitHub Copilot, and I spent a lot of time designing, coding, and improving it. I am most proud that I was able to turn my idea into a real website that is online and accessible to everyone. I hope people enjoy exploring it and learning about my projects. I spent around 23 hours building this project, so I would really appreciate any kind feedback or suggestions. Thank you for checking it out!", "repo": "https://github.com/xinyulyuonline/xinyulyu_webseite", "demo": "https://xinyulyu.de/"}]...
|
[{"post_id": 10140, "ts": "202 [{"post_id": 10140, "ts": "2026-06-16T19:00:45Z", "hours": 0.4206, "text": "The website is finished. I might add more services later."}, {"post_id": 6231, "ts": "2026-06-10T14:05:30Z", "hours": 0.8461, "text": "Improving the website and expanding various services, such as the Xinyu Convert service for file conversion."}]...
|
Title: Xinyu Lyu Website by @xinyulyu | Stardance
Title: Xinyu Lyu Website by @xinyulyu | Stardance
Devlogs:
Improving the website and expanding various services, such as the Xinyu Convert service for file conversion.
The website is finished. I might add more services later.
Ships:
I created my own website where people can learn more about me and the projects I am working on. I even bought a custom domain for it. The website took around 23 hours to build with the help of GitHub Copilot, and I spent a lot of time designing, coding, and improving it. I am most proud that I was able to turn my idea into a real website that is online and accessible to everyone. I hope people enjoy exploring it and learning about my projects. I spent around 23 hours building this project, so I would really appreciate any kind feedback or suggestions. Thank you for checking it out!...
|
1793512340.9785483
|
1793598740.9785483
|
|
20769
|
Openclip by @Aionix | Stardance
|
Aionix
|
1
|
28.01
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T18:54:23Z", "hours": 25.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created and open-sourced “OpenClip” - a complete local-first AI video clipping engine that runs entirely on your machine. No subscriptions. No watermarks. No cloud uploads. Just paste a YouTube URL and get AI-generated short clips ready for TikTok, Reels, and Shorts. It automatically turns long YouTube videos into ready-to-post short clips using AI (Whisper for transcription, MediaPipe for face tracking, LLMs for captioning). Tech: Next.js + FastAPI + yt-dlp + FFmpeg Fully open-source under MIT license with detailed README, setup scripts and active development. GitHub: https://github.com/aionixOS/OpenclipV-", "repo": "https://github.com/aionixOS/OpenclipV-", "demo": "https://openclip-v.vercel.app/"}]...
|
[{"post_id": 14235, "ts": "202 [{"post_id": 14235, "ts": "2026-06-23T07:49:35Z", "hours": 3.0119, "text": "Recent Updates Browser-Side API Keys: Your LLM API keys are now stored securely in your browser’s localStorage. They never touch the backend database, making this safe to host publicly. YouTube Bot Bypass: Added pytubefix as an automated fallback to bypass YouTube’s aggressive “Sign in to prove you’re not a bot” datacenter blocks (PO Token support enabled). Vercel Compatibility: The real-time progress tracker now seamlessly falls back to fast HTTP Polling if Vercel’s Edge network blocks the WebSocket connection."}, {"post_id": 13204, "ts": "2026-06-21T17:02:22Z", "hours": 24.7883, "text": "I created and open-sourced “OpenClip” - a complete local-first AI video clipping engine. It automatically turns long YouTube videos into ready-to-post short clips using AI (Whisper for transcription, MediaPipe for face tracking, LLMs for captioning). Tech: Next.js + FastAPI + yt-dlp + FFmpeg Fully open-source under MIT license with detailed README, setup scripts and active development. GitHub: https://github.com/aionixOS/OpenclipV-"}]...
|
Title: Openclip by @Aionix | Stardance
Devlogs:
I Title: Openclip by @Aionix | Stardance
Devlogs:
I created and open-sourced “OpenClip” - a complete local-first AI video clipping engine. It automatically turns long YouTube videos into ready-to-post short clips using AI (Whisper for transcription, MediaPipe for face tracking, LLMs for captioning). Tech: Next.js + FastAPI + yt-dlp + FFmpeg Fully open-source under MIT license with detailed README, setup scripts and active development. GitHub: https://github.com/aionixOS/OpenclipV-
Recent Updates Browser-Side API Keys: Your LLM API keys are now stored securely in your browser’s localStorage. They never touch the backend database, making this safe to host publicly. YouTube Bot Bypass: Added pytubefix as an automated fallback to bypass YouTube’s aggressive “Sign in to prove you’re not a bot” datacenter blocks (PO Token support enabled). Vercel Compatibility: The real-time progress tracker now seamlessly falls back to fast HTTP Polling if Vercel’s Edge network blocks the WebSocket connection.
Ships:
I created and open-sourced “OpenClip” - a complete local-first AI video clipping engine that runs entirely on your machine. No subscriptions. No watermarks. No cloud uploads. Just paste a YouTube URL and get AI-generated short clips ready for TikTok, Reels, and Shorts. It automatically turns long YouTube videos into ready-to-post short clips using AI (Whisper for transcription, MediaPipe for face tracking, LLMs for captioning). Tech: Next.js + FastAPI + yt-dlp + FFmpeg Fully open-source under MIT license with detailed README, setup scripts and active development. GitHub: https://github.com/aionixOS/OpenclipV-...
|
1793512342.1317995
|
1793598742.1317995
|
|
67595
|
WebBrowser by @BlueScreen | Stardance
|
BlueScreen
|
1
|
26.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-24T16:57:46Z", "hours": 26.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Gluon Browser is now fully available with the release of version 1.1.0! It is a command line browser which can read websites and search the web through DuckDuckGo. It has many features, such as tabs, saving pages, and downloading files!", "repo": "https://github.com/Clippy-CLI/CMD-Browser", "demo": "https://github.com/Clippy-CLI/Gluon-Browser/releases/tag/Release_v1.1.1"}]...
|
[{"post_id": 82335, "ts": "202 [{"post_id": 82335, "ts": "2026-10-24T16:24:57Z", "hours": 0.3422, "text": "Nothing much, just some small formatting and the browser demo at https://codehs.com/sandbox/yellowotter2314/browser/run has been updated. Thinking I may ship my project"}, {"post_id": 82283, "ts": "2026-10-24T13:38:17Z", "hours": 0.2911, "text": "Small change but bot traffic was fixed, full search results work now"}, {"post_id": 82139, "ts": "2026-10-24T02:34:45Z", "hours": 2.8392, "text": "Search engine now exists and works! It uses duckduckgo in order to search the web and provide links to whatever you may need! It does often cut off or stop working though due to being detected as bot traffic so I need to fix that."}, {"post_id": 81887, "ts": "2026-10-22T21:05:25Z", "hours": 0.535, "text": "Small feature, the browser can now download files! This includes images, text, installers, or whatever!"}, {"post_id": 81681, "ts": "2026-10-22T01:19:04Z", "hours": 0.9733, "text": "New release version 1.0.1 with bug fixes and small improvements"}, {"post_id": 81346, "ts": "2026-10-20T22:05:52Z", "hours": 3.0056, "text": "Working web demo now available, press run and wait for it to load: https://codehs.com/sandbox/yellowotter2314/browser/run"}, {"post_id": 80479, "ts": "2026-10-17T19:58:37Z", "hours": 7.3764, "text": "Every good browser needs a game, so I added a simple game in based off of one of my first ever coding projects! Control * with arrow keys to avoid !"}, {"post_id": 78425, "ts": "2026-10-10T19:29:58Z", "hours": 5.2208, "text": "Image/Images commands are actually working now! (Image more than images) example below with Hackclub logo:"}, {"post_id": 77428, "ts": "2026-10-06T23:03:08Z", "hours": 1.2331, "text": "Images command is added so now images from a site can be viewed! It prints them in text characters, example below of Linux penguin."}, {"post_id": 76907, "ts": "2026-10-05T01:12:06Z", "hours": 1.9431, "text": "So that I at least have something to add, I worked (I think mostly on, I can’t remember what I had by my last devlog) on bug fixes and formatting. New features should be up next"}, {"post_id": 76759, "ts": "2026-10-04T14:44:54Z", "hours": 1.1803, "text": "Finished linkscan command, which displays a list of all links at a chosen URL, this also lays some groundwork for adding images later as images are stored at source urls"}, {"post_id": 76530, "ts": "2026-10-03T20:54:16Z", "hours": 0.6633, "text": "Added more commands and planned out a way to show images, but still in the terminal!"}, {"post_id": 76463, "ts": "2026-10-03T16:33:19Z", "hours": 0.3031, "text": "Imported the project, improved the readme, and added a new command"}]...
|
Title: WebBrowser by @BlueScreen | Stardance
Devl Title: WebBrowser by @BlueScreen | Stardance
Devlogs:
Imported the project, improved the readme, and added a new command
Added more commands and planned out a way to show images, but still in the terminal!
Finished linkscan command, which displays a list of all links at a chosen URL, this also lays some groundwork for adding images later as images are stored at source urls
So that I at least have something to add, I worked (I think mostly on, I can’t remember what I had by my last devlog) on bug fixes and formatting. New features should be up next
Images command is added so now images from a site can be viewed! It prints them in text characters, example below of Linux penguin.
Image/Images commands are actually working now! (Image more than images) example below with Hackclub logo:
Every good browser needs a game, so I added a simple game in based off of one of my first ever coding projects! Control * with arrow keys to avoid !
Working web demo now available, press run and wait for it to load: https://codehs.com/sandbox/yellowotter2314/browser/run
New release version 1.0.1 with bug fixes and small improvements
Small feature, the browser can now download files! This includes images, text, installers, or whatever!
Search engine now exists and works! It uses duckduckgo in order to search the web and provide links to whatever you may need! It does often cut off or stop working though due to being detected as bot traffic so I need to fix that.
Small change but bot traffic was fixed, full search results work now
Nothing much, just some small formatting and the browser demo at https://codehs.com/sandbox/yellowotter2314/browser/run has been updated. Thinking I may ship my project
Ships:
Gluon Browser is now fully available with the release of version 1.1.0! It is a command line browser which can read websites and search the web through DuckDuckGo. It has many features, such as tabs, saving pages, and downloading files!...
|
1793512343.8345857
|
1793598743.8345857
|
|
1874
|
Capybara Game by @itsleonwang1 | Stardance
|
itsleonwang1
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T10:30:01Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a capybara roguelike action game in Godot!", "repo": "https://github.com/leonwangg1/capybara-evolved", "demo": "https://capybara-evolved.vercel.app/"}]...
|
[{"post_id": 3605, "ts": "2026 [{"post_id": 3605, "ts": "2026-06-06T16:37:46Z", "hours": 1.5247, "text": "Developing a capybara roguelike survivor-like game in Godot. Player character and basic hud done."}]...
|
Title: Capybara Game by @itsleonwang1 | Stardance
Title: Capybara Game by @itsleonwang1 | Stardance
Devlogs:
Developing a capybara roguelike survivor-like game in Godot. Player character and basic hud done.
Ships:
I made a capybara roguelike action game in Godot!...
|
1793512347.6862779
|
1793598747.6862779
|
|
2873
|
project timeline creator by @az01pak | Stardance
|
az01pak
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T19:25:57Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a project timeline creator that helps people manage their events with a team or by themselves. The hardest part was picking a set of matching colors", "repo": "https://github.com/az01pak/projectimelinecreator", "demo": "https://projectimeline.w3spaces.com/"}]...
|
[{"post_id": 553, "ts": "2026- [{"post_id": 553, "ts": "2026-06-02T01:31:37Z", "hours": 1.0086, "text": "Basically i have made the barebones of this project i am going to continue working on editing the colors etc. Making the work flow better soon after the next devlog"}]...
|
Title: project timeline creator by @az01pak | Star Title: project timeline creator by @az01pak | Stardance
Devlogs:
Basically i have made the barebones of this project i am going to continue working on editing the colors etc. Making the work flow better soon after the next devlog
Ships:
I made a project timeline creator that helps people manage their events with a team or by themselves. The hardest part was picking a set of matching colors...
|
1793512351.2714312
|
1793598751.2714312
|
|
30210
|
My website 2.0 by @Hamuz | Stardance
|
Hamuz
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T09:17:52Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I redesigned my website because I wanted to complete the mission, which I had forgotten to attach to my previous project. That is why I updated the redesign to complite the mission.", "repo": "https://github.com/Hamuz09/My-website-2.0", "demo": "https://hamuz09.github.io/My-website-2.0/"}]...
|
[{"post_id": 22040, "ts": "202 [{"post_id": 22040, "ts": "2026-07-04T09:14:01Z", "hours": 1.2811, "text": "I redesigned my website because I wanted to complete the mission, which I had forgot to attach to my previous project. That is why I updated the design to complite the mission."}]...
|
Title: My website 2.0 by @Hamuz | Stardance
Devlo Title: My website 2.0 by @Hamuz | Stardance
Devlogs:
I redesigned my website because I wanted to complete the mission, which I had forgot to attach to my previous project. That is why I updated the design to complite the mission.
Ships:
I redesigned my website because I wanted to complete the mission, which I had forgotten to attach to my previous project. That is why I updated the redesign to complite the mission....
|
1793512352.1851447
|
1793598752.1851447
|
|
7194
|
Echo by @Hamna | Stardance
|
Hamna
|
2
|
16.0
|
46
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-02T12:42:56Z", "hours": 6.0, "multiplier": 15.67, "payout": 23, "blessing": "neutral", "text": "I’ve made a slack Echo bot, which let the user do the Q/A, online search, summarize the chat for the team, let the users do search about a some project in a chat if they’ve talked about that in the chat or mentioned anything, and help to understand some concept from the official documentation (cool ri8) In a nutshell, Echo bot is assistant, it’s helper with anime girl personality. This is Echo version 0.2 where I’ve added online search Feature so that AI won’t hallucinate about the question and give the latest info about the query.", "repo": "https://github.com/lilithCode/Echo", "demo": "https://hackclub.enterprise.slack.com/archives/C0BDSKADE75"}, {"ship_num": 2, "ts": "2026-06-29T12:47:33Z", "hours": 10.0, "multiplier": 2.87, "payout": 23, "blessing": "neutral", "text": "I built a Slack bot named “Echo” with Node.js and Slack Bolt API, it handles instant Q&A, web search with summaries, conversation summarization, project context retrieval, and documentation lookup. The Challenges e biggest challenge was contextual intelligence: teaching an AI to sift through messy channel histories and pinned messages to understand a project’s current state without getting distracted by unrelated chatter. I’m particularly proud of the /echo-project command; it analyzes real-time team discussions to generate structured status reports, identifying active members, key decisions, and blockers automatically. It effectively turns a chaotic Slack thread into a professional project brief in seconds. What I’m Proud Of The speed. Getting answers in 2 seconds is no joke when you’re juggling AI inference + web search + Slack’s API. I’m also proud of the conversation summarization. it actually understands context, not just pulling random snippets. How to Test It Add Echo to your Slack workspace and try these commands: /echo-ask \"your question\" , /echo-search \"topic\" , /echo-summary (in a thread), /echo-project (in a channel), /echo-docs \"what you need\" . Start with simple queries, then get creative. DM me what breaks or what you wish it could do.", "repo": "https://github.com/lilithCode/Echo", "demo": "https://hackclub.enterprise.slack.com/archives/C0BDSKADE75"}]...
|
[{"post_id": 39454, "ts": "202 [{"post_id": 39454, "ts": "2026-08-02T12:34:43Z", "hours": 6.2753, "text": "I’ve added a new feature in the bot, which is online search . It searches the question online so that it gives the latest info about the question Added online search Here’s what was happening with previous version,Echo could only answer from the model’s own knowledge before, so I thought we need to fix this.I added a proper web search feature so she can actually go look things up. Wired up the Exa API for /echo-search — it searches the web, pulls the top results, fetches the actual page content, and feeds that back into the AI so the answer is grounded instead of hallucinated. Made sure sources always get cited back with clickable links in the Slack message Split search into two steps: search (get URLs) then contents (get the actual text), since Exa’s search endpoint alone only gives snippets, not enough to actually summarize from. Deployed the project on Nest Finally deployed it on Nest like the previous version and yo Echo became 24/7 online :) I’ve also shared a tutorial video on YouTube to help you understand any command and how to use Echo on Slack: Echo Tutorial Video"}, {"post_id": 18252, "ts": "2026-06-29T10:24:46Z", "hours": 5.0558, "text": "I finished the last two most complex commands — /echo-summary and /echo-project and then finally deployed it on Nest with Hackclub 1. Finished the final commands /echo-summary The command accepts today , yesterday , last N , and unread . I had to translate each of these into Unix timestamps for Slack’s conversations.history API Filtering bot messages: The API returns bot messages too. Added .filter(m => !m.bot_id) to skip Echo’s own messages, otherwise Echo would summarize its own responses as if they were team decisions. 2. Deployed the project on Nest Finally deployed it on Nest as this Pushed all my project to Git (except my .env file) Made a container in nest and got the key Logged in my laptop using that key ssh [email protected] Made a folder for Echo and downloaded all the neccessary dependencies Clone the repo from my git and ran systemctl start echo.service and Echo became 24/7 online :) I’ve also shared a tutorial video on youtube to help you understand any command and how to use Echo on slack https://youtu.be/Wu7u665-Njo"}, {"post_id": 16169, "ts": "2026-06-26T08:44:27Z", "hours": 2.3225, "text": "I gave some real commands and functions to Echo and connect it to the Hackclub workspace. By the end of the my work today , Echo had: A working /echo-ask command — ask it anything, get an AI answer A working /echo-help command — shows all commands A working /echo-search command — live web search with cited sources A working /echo-docs command — searches technical documentation An onboarding event — sends a welcome message when added to any channel A proper utils.js service for shared helpers What I Did 1. Built the AI Brain services/ai.js The first thing I needed was a way for Echo to actually think and give responses. I built a single getAIResponse() function that every command would call: HackClub AI API as the backend, it let me use OpenAI and Google LLMs, and I could use it with my HackClub key temperature: 0.7 I’ve used temperature attribute so make model more creative in responsing. Default model gpt-4o-mini for speed and cost, but I made the model parameter swappable so different commands can use better models when needed. Cool personality , I gave Echo an anime girl personality with soft expressions. This was intentional — bots that feel like characters are more fun to use and easier to remember 2. Built services/utils.js , Helpers module Before building commands, I wrote the utilities they’d all share. I’ve used a cache logic so that commands like /echo-summary loop through 50-100 messages and need user names for each one. Without caching, that’s 100 API calls. With caching, it’s only as many unique users as exist. 3. Built command files Then I built the files for each command in ordered manner in my project so that I can manage them easily. You can see the code of each file on my git repo Problems I Hit and Fixed Slack’s 3-second ack timeout : Slack requires every slash command to be acknowledged within 3 seconds or it shows a timeout error to the user. AI calls take 3-10 seconds. Solution: await ack() immediately at the top of every handler, then do the slow work after. This was the first bug I had to fix. User IDs in messages : Slack stores messages with raw user IDs like <@U123ABC> instead of names. When I was building search, I realized the AI would receive these IDs and not know who said what. so I built resolveUserMentions() to replace them with real names before sending to the AI."}, {"post_id": 15490, "ts": "2026-06-25T05:50:16Z", "hours": 2.8906, "text": "What I Built Today I started Echo , an AI Slack bot that acts as a teammate inside your workspace. The idea hit me because our team was constantly switching tabs to look things up, ask questions, check what happened in a channel yesterday. I thought what if there was a bot that just lives in Slack and handles all of that? What I Did 1. Created the Slack App Went to api.slack.com/apps and created a new app from scratch. Chose Socket Mode instead of HTTP webhooks, this means the bot connects outbound to Slack, so I don’t need to expose a server or set up ngrok during development. Way easier for local dev. Added the required OAuth scopes : chat:write , commands , channels:history , users:read etc everything Echo would need to read messages and respond. Grabbed the three tokens I’d need: SLACK_BOT_TOKEN (xoxb-…) SLACK_SIGNING_SECRET SLACK_APP_TOKEN (xapp-… for Socket Mode) 2. Initialized the Node.js Project I’ve used Node.js for my project npm install @slack/bolt dotenv axios cheerio Dependencies I’m working with: @slack/bolt — Slack’s official framework for building bots. Handles all the event routing, slash commands, and ack() timing . dotenv — keep tokens out of the code axios — for hitting the HackClub AI API later cheerio — for parsing web content (I’ve planned for search in some cmds) Problem I Had: Socket Mode confusion , at first I wasn’t sure whether to use Socket Mode or HTTP. Read through the Bolt docs and realized Socket Mode is the right call for development because I don’t need a public URL. HTTP is for production deployments."}]...
|
Title: Echo by @Hamna | Stardance
Devlogs:
What I Title: Echo by @Hamna | Stardance
Devlogs:
What I Built Today I started Echo , an AI Slack bot that acts as a teammate inside your workspace. The idea hit me because our team was constantly switching tabs to look things up, ask questions, check what happened in a channel yesterday. I thought what if there was a bot that just lives in Slack and handles all of that? What I Did 1. Created the Slack App Went to api.slack.com/apps and created a new app from scratch. Chose Socket Mode instead of HTTP webhooks, this means the bot connects outbound to Slack, so I don’t need to expose a server or set up ngrok during development. Way easier for local dev. Added the required OAuth scopes : chat:write , commands , channels:history , users:read etc everything Echo would need to read messages and respond. Grabbed the three tokens I’d need: SLACK_BOT_TOKEN (xoxb-…) SLACK_SIGNING_SECRET SLACK_APP_TOKEN (xapp-… for Socket Mode) 2. Initialized the Node.js Project I’ve used Node.js for my project npm install @slack/bolt dotenv axios cheerio Dependencies I’m working with: @slack/bolt — Slack’s official framework for building bots. Handles all the event routing, slash commands, and ack() timing . dotenv — keep tokens out of the code axios — for hitting the HackClub AI API later cheerio — for parsing web content (I’ve planned for search in some cmds) Problem I Had: Socket Mode confusion , at first I wasn’t sure whether to use Socket Mode or HTTP. Read through the Bolt docs and realized Socket Mode is the right call for development because I don’t need a public URL. HTTP is for production deployments.
I gave some real commands and functions to Echo and connect it to the Hackclub workspace. By the end of the my work today , Echo had: A working /echo-ask command — ask it anything, get an AI answer A working /echo-help command — shows all commands A working /echo-search command — live web search with cited sources A working /echo-docs command — searches technical documentation An onboarding event — sends a welcome message when added to any channel A proper utils.js service for shared helpers What I Did 1. Built the AI Brain services/ai.js The first thing I needed was a way for Echo to actually think and give responses. I built a single getAIResponse() function that every command would call: HackClub AI API as the backend, it let me use OpenAI and Google LLMs, and I could use it with my HackClub key temperature: 0.7 I’ve used temperature attribute so make model more creative in responsing. Default model gpt-4o-mini for speed and cost, but I made the model parameter swappable so different commands can use better models when needed. Cool personality , I gave Echo an anime girl personality with soft expressions. This was intentional — bots that feel like characters are more fun to use and easier to remember 2. Built services/utils.js , Helpers module Before building commands, I wrote the utilities they’d all share. I’ve used a cache logic so that commands like /echo-summary loop through 50-100 messages and need user names for each one. Without caching, that’s 100 API calls. With caching, it’s only as many unique users as exist. 3. Built command files Then I built the files for each command in ordered manner in my project so that I can manage them easily. You can see the code of each file on my git repo Problems I Hit and Fixed Slack’s 3-second ack timeout : Slack requires every slash command to be acknowledged within 3 seconds or it shows a timeout error to the user. AI calls take 3-10 seconds. Solution: await ack() immediately at the top of every handler, then do the slow work after. This was the first bug I had to fix. User IDs in messages : Slack stores messages with raw user IDs like <@U123ABC> instead of names. When I was building search, I realized the AI would receive these IDs and not know who said what. so I built resolveUserMentions() to replace them with real names before sending to the AI.
I finished the last two most complex commands — /echo-summary and /echo-project and then finally deployed it on Nest with Hackclub 1. Finished the final commands /echo-summary The command accepts today , yesterday , last N , and unread . I had to translate each of these into Unix timestamps for Slack’s conversations.history API Filtering bot messages: The API returns bot messages too. Added .filter(m => !m.bot_id) to skip Echo’s own messages, otherwise Echo would summarize its own responses as if they were team decisions. 2. Deployed the project on Nest Finally deployed it on Nest as this Pushed all my project to Git (except my .env file) Made a container in nest and got the key Logged in my laptop using that key ssh [email protected] Made a folder for Echo and downloaded all the neccessary dependencies Clone the repo from my git and ran systemctl start echo.service and Echo became 24/7 online :) I’ve also shared a tutorial video on youtube to help you understand any command and how to use Echo on slack https://youtu.be/Wu7u665-Njo
I’ve added a new feature in the bot, which is online search . It searches the question online so that it gives the latest info about the question Added online search Here’s what was happening with previous version,Echo could only answer from the model’s own knowledge before, so I thought we need to fix this.I added a proper web search feature so she can actually go look things up. Wired up the Exa API for /echo-search — it searches the web, pulls the top results, fetches the actual page content, and feeds that back into the AI so the answer is grounded instead of hallucinated. Made sure sources always get cited back with clickable links in the Slack message Split search into two steps: search (get URLs) then contents (get the actual text), since Exa’s search endpoint alone only gives snippets, not enough to actually summarize from. Deployed the project on Nest Finally deployed it on Nest like the previous version and yo Echo became 24/7 online :) I’ve also shared a tutorial video on YouTube to help you understand any command and how to use Echo on Slack: Echo Tutorial Video
Ships:
I built a Slack bot named “Echo” with Node.js and Slack Bolt API, it handles instant Q&A, web search with summaries, conversation summarization, project context retrieval, and documentation lookup. The Challenges e biggest challenge was contextual intelligence: teaching an AI to sift through messy channel histories and pinned messages to understand a project’s current state without getting distracted by unrelated chatter. I’m particularly proud of the /echo-project command; it analyzes real-time team discussions to generate structured status reports, identifying active members, key decisions, and blockers automatically. It effectively turns a chaotic Slack thread into a professional project brief in seconds. What I’m Proud Of The speed. Getting answers in 2 seconds is no joke when you’re juggling AI inference + web search + Slack’s API. I’m also proud of the conversation summarization. it actually understands context, not just pulling random snippets. How to Test It Add Echo to your Slack workspace and try these commands: /echo-ask "your question" , /echo-search "topic" , /echo-summary (in a thread), /echo-project (in a channel), /echo-docs "what you need" . Start with simple queries, then get creative. DM me what breaks or what you wish it could do.
I’ve made a slack Echo bot, which let the user do the Q/A, online search, summarize the chat for the team, let the users do search about a some project in a chat if they’ve talked about that in the chat or mentioned anything, and help to understand some concept from the official documentation (cool ri8) In a nutshell, Echo bot is assistant, it’s helper with anime girl personality. This is Echo version 0.2 where I’ve added online search Feature so that AI won’t hallucinate about the question and give the latest info about the query....
|
1793512353.3942294
|
1793598753.3942294
|
|
24858
|
something??? os by @jin | Stardance
|
jin
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T21:49:11Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finished my hampter os. I think given more time and effort I would’ve made it look a lot more stylised to the hamster art style, and also would’ve made it more comprehensive. It currently only has 2 apps, and if I were to work on it in the future I would make it both function and look like an actual operating system.", "repo": "https://github.com/jinenchen/hampterOS", "demo": "https://jinenchen.github.io/hampterOS/"}]...
|
[{"post_id": 18700, "ts": "202 [{"post_id": 18700, "ts": "2026-06-29T21:44:27Z", "hours": 0.7556, "text": "Added my own cursor customisation app. This is a cool project, but I think I’m done with it for now. I might improve it in the future, adding more apps and making it look prettier."}, {"post_id": 17999, "ts": "2026-06-28T23:28:23Z", "hours": 1.7494, "text": "finished the guide, hopefully going to make it look all nice and add some apps!"}, {"post_id": 15437, "ts": "2026-06-25T02:48:26Z", "hours": 1.6525, "text": "Still working on the barebones as per the guide on my web os…. Will add my own customisations when I finish. Still deciding on what to do…. Feast your eyes on what I have thus far:"}]...
|
Title: something??? os by @jin | Stardance
Devlog Title: something??? os by @jin | Stardance
Devlogs:
Still working on the barebones as per the guide on my web os…. Will add my own customisations when I finish. Still deciding on what to do…. Feast your eyes on what I have thus far:
finished the guide, hopefully going to make it look all nice and add some apps!
Added my own cursor customisation app. This is a cool project, but I think I’m done with it for now. I might improve it in the future, adding more apps and making it look prettier.
Ships:
Finished my hampter os. I think given more time and effort I would’ve made it look a lot more stylised to the hamster art style, and also would’ve made it more comprehensive. It currently only has 2 apps, and if I were to work on it in the future I would make it both function and look like an actual operating system....
|
1793512354.6508074
|
1793598754.6508074
|
|
53066
|
WarioGame by @wxie223 | Stardance
|
wxie223
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioGame by @wxie223 | Stardance
|
1792734755.5846286
|
1793598755.5846286
|
|
33653
|
My own site! by @angelo_ | Stardance
|
angelo_
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T19:16:39Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Today i finalized building my website. I made it with the purpose of presenting myself, from what i learn at school and skills, to my future plans. I made it using only raw HTML + CSS, without using Javascript and any sort of framework.", "repo": "https://github.com/AngeloPerera07/My-Website", "demo": "https://angeloperera07.github.io/My-Website/"}]...
|
[{"post_id": 30296, "ts": "202 [{"post_id": 30296, "ts": "2026-07-17T19:05:43Z", "hours": 0.2958, "text": "Links and Social page done !"}, {"post_id": 30285, "ts": "2026-07-17T18:46:29Z", "hours": 1.2472, "text": "Projects page done!"}, {"post_id": 29432, "ts": "2026-07-16T11:39:50Z", "hours": 1.5342, "text": "About me page done!"}, {"post_id": 28976, "ts": "2026-07-15T16:37:33Z", "hours": 2.5372, "text": "First devlog of my Own Site. Added the welcome page of the website. Next objective: refactor and change to a new font"}]...
|
Title: My own site! by @angelo_ | Stardance
Devlo Title: My own site! by @angelo_ | Stardance
Devlogs:
First devlog of my Own Site. Added the welcome page of the website. Next objective: refactor and change to a new font
About me page done!
Projects page done!
Links and Social page done !
Ships:
Today i finalized building my website. I made it with the purpose of presenting myself, from what i learn at school and skills, to my future plans. I made it using only raw HTML + CSS, without using Javascript and any sort of framework....
|
1793512355.8067033
|
1793598755.8067033
|
|
31169
|
My first slack bot! by @benny | Stardance
|
benny
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T21:45:33Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a slack bot called “FishWish” that basically tells you all about cats from gifs and images to facts. The name was called “FishWish” because cats always love fish and wish to eat them you know. There are 6 different commands that you can feel free to check out and this is just a cool little slack bot that will be dedicated to cats :)", "repo": "https://github.com/bangzishu-huang/FishWish-Slack-Bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354?skip_today=1"}]...
|
[{"post_id": 23755, "ts": "202 [{"post_id": 23755, "ts": "2026-07-06T21:43:16Z", "hours": 1.1797, "text": "I was able to figure out how to get my slack bot onto nest 24/7 and then started to add some more commands such as /fishwish-greet (a cat will greet you with a “wassuppp”, /fishwish-catfilter (random filters will be thrown onto a cat picture), /fishwish-help (overview of all the commands), /fishwish-catpic (random picture of a cat). I spent a lot of time debugging the problems with all the image showing and the most complex one was with the /fishwish-catfilter because I had to randomize a lot of the values such as the saturation, and brightness. I was able to finally finish it though and everything was working as intended so it was super cool to see!"}, {"post_id": 23245, "ts": "2026-07-06T02:23:39Z", "hours": 0.8411, "text": "At first I was just following the guide in order to set up everything properly for the slack bot. Then, I was able to start coding on the js file in order to make the slack bot start responding. I tried to use the cataas api but I was having some trouble so for a very long time I had to keep debugging. The image on the right you can see before the gif was workign I was having a lot of failed attempts with it outputing links that were all undefined. There were a lot of debugging until I got the gifs to actually work. I also updated the slack bot icon and colors to make it look cool!"}]...
|
Title: My first slack bot! by @benny | Stardance
Title: My first slack bot! by @benny | Stardance
Devlogs:
At first I was just following the guide in order to set up everything properly for the slack bot. Then, I was able to start coding on the js file in order to make the slack bot start responding. I tried to use the cataas api but I was having some trouble so for a very long time I had to keep debugging. The image on the right you can see before the gif was workign I was having a lot of failed attempts with it outputing links that were all undefined. There were a lot of debugging until I got the gifs to actually work. I also updated the slack bot icon and colors to make it look cool!
I was able to figure out how to get my slack bot onto nest 24/7 and then started to add some more commands such as /fishwish-greet (a cat will greet you with a “wassuppp”, /fishwish-catfilter (random filters will be thrown onto a cat picture), /fishwish-help (overview of all the commands), /fishwish-catpic (random picture of a cat). I spent a lot of time debugging the problems with all the image showing and the most complex one was with the /fishwish-catfilter because I had to randomize a lot of the values such as the saturation, and brightness. I was able to finally finish it though and everything was working as intended so it was super cool to see!
Ships:
I made a slack bot called “FishWish” that basically tells you all about cats from gifs and images to facts. The name was called “FishWish” because cats always love fish and wish to eat them you know. There are 6 different commands that you can feel free to check out and this is just a cool little slack bot that will be dedicated to cats :)...
|
1793512357.0296512
|
1793598757.0296512
|
|
3568
|
Red String by @Joseph-T | Stardance
|
Joseph-T
|
1
|
6.8
|
48
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T02:26:37Z", "hours": 5.0, "multiplier": 10.29, "payout": 48, "blessing": "neutral", "text": "I made a google chrome / Firefox extension that gives the user the MLA 8 citation of the page they are currently on. Its just a simple quality of life app for English Essays and whatnot. I struggled and continue to find the author of the page because each website does it differently.", "repo": "https://github.com/joseph-tighe/red-string", "demo": "https://addons.mozilla.org/en-US/firefox/addon/red-string-reaserch/"}]...
|
[{"post_id": 25656, "ts": "202 [{"post_id": 25656, "ts": "2026-07-10T02:07:58Z", "hours": 0.7242, "text": "Changes Made Report broken site link Report Broken Site Because there is no standard for what metadata should look like for websites. Some websites need exceptions and their own special code so I made a report broken site button that reports any broken sites to me. So I can get that website working in the next version"}, {"post_id": 24840, "ts": "2026-07-08T17:45:01Z", "hours": 1.0789, "text": "Changes Made The application now allows for several citation formats New formats The application used to have just MLA 8 citation but it now has support for ADA, and Chicago citations as well as a settings page to change the citation you prefer to use."}, {"post_id": 21898, "ts": "2026-07-04T02:20:16Z", "hours": 0.5417, "text": "Changes Made FInalized a few details and made it work with google chrome Google Chrome Support Google chrome prefers that when using the browser API you use the chrome class instead of the browser class, it also costs 5$ to put it onto the marketplace."}, {"post_id": 1191, "ts": "2026-06-03T01:31:12Z", "hours": 0.5628, "text": "Changes Made added a readme and made a version for firefox readme The readme is very simple it just explains the project Firefox Hopefully I get the extension onto the marketplace it has to go through a review process before it can be on there."}, {"post_id": 1156, "ts": "2026-06-03T00:24:01Z", "hours": 0.5256, "text": "Changes Made made a nicer GUI for the citation extension. The nicer GUI I used a mix of AI and myself for this just because I always do too much with CSS, but I think it is simple and nice for once."}, {"post_id": 1131, "ts": "2026-06-02T23:29:34Z", "hours": 1.5161, "text": "Changes Made Added a simple memory system to remember previous citations The memory system The memory system uses the browser.storage API to save previous citations I need to add a delete button next but it does save the citations."}, {"post_id": 569, "ts": "2026-06-02T02:01:41Z", "hours": 1.55, "text": "Changes Made I was getting base functionality of the citer working The Citer The Citer only does MLA 8 citations right now but there maybe more in the future. How it works It uses a lot of the metadata in the page gathered headers of the html, but it will also look for top level heading “h1” to determian the name of the article."}]...
|
Title: Red String by @Joseph-T | Stardance
Devlog Title: Red String by @Joseph-T | Stardance
Devlogs:
Changes Made I was getting base functionality of the citer working The Citer The Citer only does MLA 8 citations right now but there maybe more in the future. How it works It uses a lot of the metadata in the page gathered headers of the html, but it will also look for top level heading “h1” to determian the name of the article.
Changes Made Added a simple memory system to remember previous citations The memory system The memory system uses the browser.storage API to save previous citations I need to add a delete button next but it does save the citations.
Changes Made made a nicer GUI for the citation extension. The nicer GUI I used a mix of AI and myself for this just because I always do too much with CSS, but I think it is simple and nice for once.
Changes Made added a readme and made a version for firefox readme The readme is very simple it just explains the project Firefox Hopefully I get the extension onto the marketplace it has to go through a review process before it can be on there.
Changes Made FInalized a few details and made it work with google chrome Google Chrome Support Google chrome prefers that when using the browser API you use the chrome class instead of the browser class, it also costs 5$ to put it onto the marketplace.
Changes Made The application now allows for several citation formats New formats The application used to have just MLA 8 citation but it now has support for ADA, and Chicago citations as well as a settings page to change the citation you prefer to use.
Changes Made Report broken site link Report Broken Site Because there is no standard for what metadata should look like for websites. Some websites need exceptions and their own special code so I made a report broken site button that reports any broken sites to me. So I can get that website working in the next version
Ships:
I made a google chrome / Firefox extension that gives the user the MLA 8 citation of the page they are currently on. Its just a simple quality of life app for English Essays and whatnot. I struggled and continue to find the author of the page because each website does it differently....
|
1793512358.2350168
|
1793598758.2350168
|
|
20966
|
My very own WebOS by @rosandrox | Stardance
|
rosandrox
|
2
|
8.0
|
27
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T22:34:21Z", "hours": 4.0, "multiplier": 7.24, "payout": 27, "blessing": "neutral", "text": "Basically the whole OS Quest archive: descriptions of imaginary quests and monsters About me: information about me and my journey through coding and robotics. Pomodoro Timer: a focus timer Coffee Minder: an app that reminds you to drink coffee every 45 minutes with one hour Music player: place one medieval folk music anthem. WarriorOS top bar button: opens the welcome window for WarriorOS The date in the top bar: opens up the calendar A clock in the middle of the screen I also tried to add draggable apps. And I started getting into two-vector grid organizing. But then I got really frustrated really quickly because there were a lot of problems and it was time-consuming. I believe I lost one hour trying to figure it out. Because something would always overlap even if it wasn’t that visible however these are the functions that the OS serves. If you want more info, you can access my previous devlogs, which I believe I’ve done very analytically. The GitHub page has an analytic breakdown of what I did, the idea, and the coding behind every app.", "repo": "https://github.com/prodevmod/prodevmod.github.io", "demo": "https://prodevmod.github.io/WarriorOS/"}, {"ship_num": 2, "ts": "2026-06-23T23:43:59Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I tried to personalize it as much as possible. I have added four apps. The welcome up the Quest Archive the About Me app end the Pomodoro timer. The top bar has the opening icon for Warrior OS. At the middle it has the quote: “Mens et manus”. That is a very important quote to me. I think it describes best my hardware and software ability till now and how much I want to combine the theoretical with the practical. And on the right of the top bar there is the date and time. Then I have three apps that are analytically explained in the GitHub. I found it very challenging adapting to these new languages. First of all because I didn’t at first understand the point of style.css but now I understand it. Also I found it a bit difficult setting all the parameters and sizes to be exact and correct. And sometimes I got caught up in the documentation. Even though I believe other WebOSes out there are 10 times better than mine, at least I tried and I’m very happy with what I got out of it. I will always update it so that’s a good thing. Please let me know anything I should fix so I can make better updates.", "repo": "https://github.com/prodevmod/prodevmod.github.io", "demo": "https://prodevmod.github.io/WarriorOS/"}]...
|
[{"post_id": 15948, "ts": "202 [{"post_id": 15948, "ts": "2026-06-25T22:12:03Z", "hours": 3.7789, "text": "So after 3 hours of tirelessly working on this, It isfinally over. So here’s what I did over those three hours. Because I looked into some other projects, I got the idea of adding a double tap for all the desktop apps. So now you must double-click all the desktop apps in order to open them. Then there is the top bar that you must only do a single click on. I added a clock on the background. I thought it would be cooler than having it on the top bar. On the top bar I left the date and when you click it, it opens the calendar. Then I added a coffee minder. So the idea occurred to me a while back when I saw a water-cup tracker in a Linux distro. And I like the idea of it and what I did is basically, when you open up the coffee minder, if 45 minutes pass the Gargoyle will get a bit tired. And when 60 minutes pass, he will pass away and you will have to revive him by drinking another cup of coffee. I thought it was a fun idea. I also added the music player. I used this YouTube video along with some of my prior knowledge to change up some things. https://www.youtube.com/watch?v=JtrFzoL1joI and I also used this artist’s song for the medieval theme. https://pixabay.com/users/tunetank-50201703/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=412748 . I’m very proud to have designed most of the art inside the OS. I was a bit tired and I wasn’t feeling like making the rest of the icons so I just put two emojis for the coffee minder and the music player. I think it came out really solid. I also added a highlight around its box’s border. That’s all pretty much."}, {"post_id": 14755, "ts": "2026-06-23T23:40:31Z", "hours": 0.3744, "text": "I added the pomodoro timer app because it felt too empty. This is my last dev log before uploading and shipping the WebOS. I know I will make more updates to this so even though it is in a very primal state, it’s still good because I didn’t know that much about JavaScript and HTML and now I’ve learned."}, {"post_id": 14730, "ts": "2026-06-23T22:51:35Z", "hours": 0.3492, "text": "So I added three tabs in the About Me app: A really small description of me My contacts My portfolio My portfolio is kind of lacking. I would like to put more things in it; however I have to search up how to make a scroll bar, etc. For now the OS is constructed of: the top bar that has the “Warrior OS” welcome up the months, et cetera, quote at the top right the date and time the side quest journal that has quests of ancient warriors and imaginary quests and imaginary monsters while also having the “About Me” icon That is another app. I’m very happy because except for the chief in the Warrior OS welcome screen and the background, every other art is done by me, either by code or by design on the pixil site. I think the project is ready to ship."}, {"post_id": 14664, "ts": "2026-06-23T21:02:54Z", "hours": 2.7942, "text": "So I followed the entire guide and it was pretty easy to follow. I tried very hard and stumbled upon a lot of problems along the way but I think I have a nice prototype. Now I’m trying to make the About Me app a little bit better. I don’t know why every header is yellow. I think it’s kind off putting but I will fix that. I just really wanted to do a yellow one. I don’t know why. However it seems pretty legit and was pretty easy to follow as I said previously. Here I basically set up the background, the top bar, and the windows and the app openers, the icons, which I used mostly JavaScript. The JavaScript file is 300 lines and the HTML one is only 100 lines long. Also at first I couldn’t quite understand the point of the CSS but now I think I get it. So I’ll continue and probably I will ship it soon."}]...
|
Title: My very own WebOS by @rosandrox | Stardance Title: My very own WebOS by @rosandrox | Stardance
Devlogs:
So I followed the entire guide and it was pretty easy to follow. I tried very hard and stumbled upon a lot of problems along the way but I think I have a nice prototype. Now I’m trying to make the About Me app a little bit better. I don’t know why every header is yellow. I think it’s kind off putting but I will fix that. I just really wanted to do a yellow one. I don’t know why. However it seems pretty legit and was pretty easy to follow as I said previously. Here I basically set up the background, the top bar, and the windows and the app openers, the icons, which I used mostly JavaScript. The JavaScript file is 300 lines and the HTML one is only 100 lines long. Also at first I couldn’t quite understand the point of the CSS but now I think I get it. So I’ll continue and probably I will ship it soon.
So I added three tabs in the About Me app: A really small description of me My contacts My portfolio My portfolio is kind of lacking. I would like to put more things in it; however I have to search up how to make a scroll bar, etc. For now the OS is constructed of: the top bar that has the “Warrior OS” welcome up the months, et cetera, quote at the top right the date and time the side quest journal that has quests of ancient warriors and imaginary quests and imaginary monsters while also having the “About Me” icon That is another app. I’m very happy because except for the chief in the Warrior OS welcome screen and the background, every other art is done by me, either by code or by design on the pixil site. I think the project is ready to ship.
I added the pomodoro timer app because it felt too empty. This is my last dev log before uploading and shipping the WebOS. I know I will make more updates to this so even though it is in a very primal state, it’s still good because I didn’t know that much about JavaScript and HTML and now I’ve learned.
So after 3 hours of tirelessly working on this, It isfinally over. So here’s what I did over those three hours. Because I looked into some other projects, I got the idea of adding a double tap for all the desktop apps. So now you must double-click all the desktop apps in order to open them. Then there is the top bar that you must only do a single click on. I added a clock on the background. I thought it would be cooler than having it on the top bar. On the top bar I left the date and when you click it, it opens the calendar. Then I added a coffee minder. So the idea occurred to me a while back when I saw a water-cup tracker in a Linux distro. And I like the idea of it and what I did is basically, when you open up the coffee minder, if 45 minutes pass the Gargoyle will get a bit tired. And when 60 minutes pass, he will pass away and you will have to revive him by drinking another cup of coffee. I thought it was a fun idea. I also added the music player. I used this YouTube video along with some of my prior knowledge to change up some things. https://www.youtube.com/watch?v=JtrFzoL1joI and I also used this artist’s song for the medieval theme. https://pixabay.com/users/tunetank-50201703/?utm_source=link-attribution&utm_medium=referral&utm_campaign=music&utm_content=412748 . I’m very proud to have designed most of the art inside the OS. I was a bit tired and I wasn’t feeling like making the rest of the icons so I just put two emojis for the coffee minder and the music player. I think it came out really solid. I also added a highlight around its box’s border. That’s all pretty much.
Ships:
I tried to personalize it as much as possible. I have added four apps. The welcome up the Quest Archive the About Me app end the Pomodoro timer. The top bar has the opening icon for Warrior OS. At the middle it has the quote: “Mens et manus”. That is a very important quote to me. I think it describes best my hardware and software ability till now and how much I want to combine the theoretical with the practical. And on the right of the top bar there is the date and time. Then I have three apps that are analytically explained in the GitHub. I found it very challenging adapting to these new languages. First of all because I didn’t at first understand the point of style.css but now I understand it. Also I found it a bit difficult setting all the parameters and sizes to be exact and correct. And sometimes I got caught up in the documentation. Even though I believe other WebOSes out there are 10 times better than mine, at least I tried and I’m very happy with what I got out of it. I will always update it so that’s a good thing. Please let me know anything I should fix so I can make better updates.
Basically the whole OS Quest archive: descriptions of imaginary quests and monsters About me: information about me and my journey through coding and robotics. Pomodoro Timer: a focus timer Coffee Minder: an app that reminds you to drink coffee every 45 minutes with one hour Music player: place one medieval folk music anthem. WarriorOS top bar button: opens the welcome window for WarriorOS The date in the top bar: opens up the calendar A clock in the middle of the screen I also tried to add draggable apps. And I started getting into two-vector grid organizing. But then I got really frustrated really quickly because there were a lot of problems and it was time-consuming. I believe I lost one hour trying to figure it out. Because something would always overlap even if it wasn’t that visible however these are the functions that the OS serves. If you want more info, you can access my previous devlogs, which I believe I’ve done very analytically. The GitHub page has an analytic breakdown of what I did, the idea, and the coding behind every app....
|
1793512359.414227
|
1793598759.414227
|
|
40300
|
BeerReact by @siemvk | Stardance
|
siemvk
|
1
|
32.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T14:31:37Z", "hours": 32.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a react wrapper for beercss. The hardest part was making the types work for input fields.", "repo": "https://github.com/siemvk/veryCoolGoogleUiV3", "demo": "https://beerreact-demo.netlify.app/"}]...
|
[{"post_id": 74422, "ts": "202 [{"post_id": 74422, "ts": "2026-09-27T11:09:54Z", "hours": 1.0622, "text": "I made StyledIcon so you don’t have to do much to use the icons displayed on the homepage and fixed tooltips for buttons."}, {"post_id": 74184, "ts": "2026-09-26T21:20:23Z", "hours": 0.9306, "text": "Made a small new homepage and resources page. Images are missing but its better then just having the demo be tests."}, {"post_id": 74161, "ts": "2026-09-26T20:02:58Z", "hours": 4.2781, "text": "Made steppers, added centered to NavRail , added spread to NavBar , fixed a bug where clicking ON a dialog popup made it close, made the wrapper for Steppers , and updated classNames"}, {"post_id": 37736, "ts": "2026-07-30T17:26:36Z", "hours": 1.9006, "text": "I asked gemini to make me a demo site then fixed a few bugs in it and started work on classNames this will contain all classnames you can use in beer css. its for when custom css is overkill but weird to include in the main project"}, {"post_id": 37509, "ts": "2026-07-30T09:42:50Z", "hours": 2.1039, "text": "technically this is v2 bc of how versioning works Nav is now NavRail , NavBar and NavTabs You can now use <Flex> for flexboxes I made <List> <SplitButton> now has better types (I am now extending <Button> instead of <button> ) I remade <Card> so you have more options You can now use no-space under size at <Space> There is still lots of work to do but I am happy with how development is going!"}, {"post_id": 36332, "ts": "2026-07-28T11:47:32Z", "hours": 1.28, "text": "fixed a bug where you could not give form items all of the prams they have and I wrote some docs"}, {"post_id": 35417, "ts": "2026-07-26T20:10:33Z", "hours": 20.7669, "text": "Wow look a project i forgot to add to a YSWS but is like kinda cool and not jet done (it looks done but its not)"}]...
|
Title: BeerReact by @siemvk | Stardance
Devlogs:
Title: BeerReact by @siemvk | Stardance
Devlogs:
Wow look a project i forgot to add to a YSWS but is like kinda cool and not jet done (it looks done but its not)
fixed a bug where you could not give form items all of the prams they have and I wrote some docs
technically this is v2 bc of how versioning works Nav is now NavRail , NavBar and NavTabs You can now use <Flex> for flexboxes I made <List> <SplitButton> now has better types (I am now extending <Button> instead of <button> ) I remade <Card> so you have more options You can now use no-space under size at <Space> There is still lots of work to do but I am happy with how development is going!
I asked gemini to make me a demo site then fixed a few bugs in it and started work on classNames this will contain all classnames you can use in beer css. its for when custom css is overkill but weird to include in the main project
Made steppers, added centered to NavRail , added spread to NavBar , fixed a bug where clicking ON a dialog popup made it close, made the wrapper for Steppers , and updated classNames
Made a small new homepage and resources page. Images are missing but its better then just having the demo be tests.
I made StyledIcon so you don’t have to do much to use the icons displayed on the homepage and fixed tooltips for buttons.
Ships:
I made a react wrapper for beercss. The hardest part was making the types work for input fields....
|
1793512360.6770537
|
1793598760.6770537
|
|
28636
|
Reverse Bike by @Jaydenjiang | Stardance
|
Jaydenjiang
|
1
|
17.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T23:21:49Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello everyone! I made a reverse bike in the CAD software: Onshape. Unlike a normal bike, the reverse bike’s pedals steer while the handles pedal. Something challenging is the start of the project/getting the frame ready. Finding a way for the frame to be accurate while having the ability to have the different mechanisms was hard to build. Something Im proud of the the the mechanism for the handles. They have a good amount of detail, the handles look nice, the pipes act as a bearing and more. A quick thing before you test out the project, if you would like to move the tires, handles, steer the pedals, go in the Assembly tab on the bottom if you aren’t in it already. Then use the mouse and drag on different parts of the project (handles and pedals) Thank you for reading. Enjoy!", "repo": "", "demo": ""}]...
|
[{"post_id": 27989, "ts": "202 [{"post_id": 27989, "ts": "2026-07-13T23:10:48Z", "hours": 0.4058, "text": "Finishing Touches I named everything that weren’t named. For example, the fastens and revolutes in assembly. Then I went back and tried to make some of the sketches defined. Thank you for reading these! This is the final devlog for the “reverse bike” project!"}, {"post_id": 27545, "ts": "2026-07-13T06:23:50Z", "hours": 3.02, "text": "Finish (Almost) Almost everything is done, of course, I would love to go back and add more details to the bike but here is what is done: - The assembly is finished, meaning the movement of the bike can be shown by turning the handles and steering the pedals. - The seat is done, the back pipe is connected to the cushion. - Gear/Pedals done, its connected to the bottom of the bike, making pedals that have a maximum and minimum direction for when its steering. - Added back the fillets for the bike, making it cleaner. - Cleaned up the names, I added the names for every extrude, sketch, etc."}, {"post_id": 23894, "ts": "2026-07-07T03:07:27Z", "hours": 1.815, "text": "* Finished Handles and Started Assembly Currently, I finished the handles and the seat is still a work in progress as I figure out how it works and how I should start building it. However, I also started the assembly. Basically, when you turn the handle, it turns the back wheel as shown in the video. Next, I have to finish up the seat and make it adjustable. Also, the belt is for looks, it doesnt work, its like a visual representation of what is supposed to be there."}, {"post_id": 23179, "ts": "2026-07-06T00:15:31Z", "hours": 2.6058, "text": "Handle Crank and Wheel Update It took a long time but after many iterations for the way the hand was going to spin the back wheel, I landed on the belt method. I wished I could have the belt with teeth and have gears instead. But this looks pretty good anyways. The next part I added was the pin that connects the wheels to the frame of the bike."}, {"post_id": 21326, "ts": "2026-07-03T06:21:37Z", "hours": 1.6389, "text": "Wheel Strings Today, I worked on the strings for the wheels, I tried to make it so that the strings come from the rings, then go towards the middle of the inner wheels. I did this to both sides of the inner gear. Next up, the handle for the bike."}, {"post_id": 20586, "ts": "2026-07-02T06:25:55Z", "hours": 0.3431, "text": "Clean-up This will be a really quick devlog but I cleaned up the names for all of the sketches, extrudes, etc, and simplfied some parts of the sketches, I decided that I will fillet the entire model at the very end to make everything more simple."}, {"post_id": 20568, "ts": "2026-07-02T05:44:22Z", "hours": 2.7514, "text": "Backtracking, New Pipes, and Better Ideas I had to do a bunch of backtracking. I had to make the things that connect the wheels to the frame equal so that they could work, removed all of the fillets since they got in the way when I was fixing things. The main problem was how I was going to steer the wheels with the legs. Ideas: The first idea was using a rack and pinion. Connecting it by putting another on the other side of the gear. But I figured to go simple and turn the pedaling mechanism to its side. Currently, I made the two pipes, one for the front wheel and the other for the height of the bicycle seat. Another problem that I fixed is the size for the gear when you pedal, so I had to shorten the back length."}, {"post_id": 20182, "ts": "2026-07-01T18:49:11Z", "hours": 2.9133, "text": "Basic Extrude Even though the side sketch is a giant mess, the extrude finally worked after it kept splitting into multiple parts. I refrenced actual bikes for my model. Next, I have to add the seat, handles, and leg steering."}, {"post_id": 19613, "ts": "2026-06-30T23:50:23Z", "hours": 0.8411, "text": "Sketch Completed for the Side Previously, the bike had errors (represented by the blue lines). After some fixing, it looked ready for 3D modeling. I gathered information about what the bike’s body looked like at different angles. I tried to make the angles and lengths on the bike as clean as possible, rounding up or down. I also added more detail to the model."}, {"post_id": 19428, "ts": "2026-06-30T19:05:31Z", "hours": 0.6567, "text": "Rough Sketch I got a image off of google and did a quick sketch based on the image directly. I tried to make the bike as accurate as I can. I made the width of the bike’s length 60-70 inches. Then I simplified the numbers, rounding them up or down."}]...
|
Title: Reverse Bike by @Jaydenjiang | Stardance
D Title: Reverse Bike by @Jaydenjiang | Stardance
Devlogs:
Rough Sketch I got a image off of google and did a quick sketch based on the image directly. I tried to make the bike as accurate as I can. I made the width of the bike’s length 60-70 inches. Then I simplified the numbers, rounding them up or down.
Sketch Completed for the Side Previously, the bike had errors (represented by the blue lines). After some fixing, it looked ready for 3D modeling. I gathered information about what the bike’s body looked like at different angles. I tried to make the angles and lengths on the bike as clean as possible, rounding up or down. I also added more detail to the model.
Basic Extrude Even though the side sketch is a giant mess, the extrude finally worked after it kept splitting into multiple parts. I refrenced actual bikes for my model. Next, I have to add the seat, handles, and leg steering.
Backtracking, New Pipes, and Better Ideas I had to do a bunch of backtracking. I had to make the things that connect the wheels to the frame equal so that they could work, removed all of the fillets since they got in the way when I was fixing things. The main problem was how I was going to steer the wheels with the legs. Ideas: The first idea was using a rack and pinion. Connecting it by putting another on the other side of the gear. But I figured to go simple and turn the pedaling mechanism to its side. Currently, I made the two pipes, one for the front wheel and the other for the height of the bicycle seat. Another problem that I fixed is the size for the gear when you pedal, so I had to shorten the back length.
Clean-up This will be a really quick devlog but I cleaned up the names for all of the sketches, extrudes, etc, and simplfied some parts of the sketches, I decided that I will fillet the entire model at the very end to make everything more simple.
Wheel Strings Today, I worked on the strings for the wheels, I tried to make it so that the strings come from the rings, then go towards the middle of the inner wheels. I did this to both sides of the inner gear. Next up, the handle for the bike.
Handle Crank and Wheel Update It took a long time but after many iterations for the way the hand was going to spin the back wheel, I landed on the belt method. I wished I could have the belt with teeth and have gears instead. But this looks pretty good anyways. The next part I added was the pin that connects the wheels to the frame of the bike.
* Finished Handles and Started Assembly Currently, I finished the handles and the seat is still a work in progress as I figure out how it works and how I should start building it. However, I also started the assembly. Basically, when you turn the handle, it turns the back wheel as shown in the video. Next, I have to finish up the seat and make it adjustable. Also, the belt is for looks, it doesnt work, its like a visual representation of what is supposed to be there.
Finish (Almost) Almost everything is done, of course, I would love to go back and add more details to the bike but here is what is done: - The assembly is finished, meaning the movement of the bike can be shown by turning the handles and steering the pedals. - The seat is done, the back pipe is connected to the cushion. - Gear/Pedals done, its connected to the bottom of the bike, making pedals that have a maximum and minimum direction for when its steering. - Added back the fillets for the bike, making it cleaner. - Cleaned up the names, I added the names for every extrude, sketch, etc.
Finishing Touches I named everything that weren’t named. For example, the fastens and revolutes in assembly. Then I went back and tried to make some of the sketches defined. Thank you for reading these! This is the final devlog for the “reverse bike” project!
Ships:
Hello everyone! I made a reverse bike in the CAD software: Onshape. Unlike a normal bike, the reverse bike’s pedals steer while the handles pedal. Something challenging is the start of the project/getting the frame ready. Finding a way for the frame to be accurate while having the ability to have the different mechanisms was hard to build. Something Im proud of the the the mechanism for the handles. They have a good amount of detail, the handles look nice, the pipes act as a bearing and more. A quick thing before you test out the project, if you would like to move the tires, handles, steer the pedals, go in the Assembly tab on the bottom if you aren’t in it already. Then use the mouse and drag on different parts of the project (handles and pedals) Thank you for reading. Enjoy!...
|
1793512361.8972158
|
1793598761.8972158
|
|
927
|
Squirrel by @Koei | Stardance
|
Koei
|
3
|
104.0
|
1915
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T13:34:37Z", "hours": 29.0, "multiplier": 17.36, "payout": 598, "blessing": "neutral", "text": "v1.0.0 Squirrel is a clipboard manager for Windows and X11 Linux that is meant to be simple and intuitive. This major release overhauls the data storage schema to be more efficient, faster, and reliable. There are significant performance improvements. This release also adds configurability to Squirrel, allowing basic but much needed customization, and polishes up the overall app. Check the README for more information.", "repo": "https://github.com/Koei32/squirrel", "demo": "https://github.com/Koei32/squirrel/releases/latest"}, {"ship_num": 2, "ts": "2026-07-26T14:30:06Z", "hours": 30.0, "multiplier": 13.88, "payout": 499, "blessing": "neutral", "text": "v0.3.0 Squirrel is a clipboard manager that is meant to be simple and intuitive. 2 new features in this version, namely pinning and image support. There are performance improvements as well as slight visual tweaks. Read the README for more info.", "repo": "https://github.com/Koei32/squirrel", "demo": "https://github.com/Koei32/squirrel/releases/latest"}, {"ship_num": 3, "ts": "2026-06-23T16:48:48Z", "hours": 45.0, "multiplier": 18.23, "payout": 818, "blessing": "neutral", "text": "v0.1.0 Squirrel is a clipboard manager that is meant to be simple and intuitive. It remembers all the text you copy allowing you to paste whatever into wherever. You can also quickly search through your history. Squirrel is meant to be cross-platform, but for this release, Linux support on Wayland is very iffy (X11 is fine for the most part). I would highly recommend using Windows for testing this ship, sorry for the inconvenience. Expect potentially better support next ship.", "repo": "https://github.com/Koei32/squirrel", "demo": "https://github.com/Koei32/squirrel/releases/latest"}]...
|
[{"post_id": 63114, "ts": "202 [{"post_id": 63114, "ts": "2026-09-06T18:50:53Z", "hours": 4.0806, "text": "v1.0.0 It’s official. Squirrel is now v1. devlog time is adding logging, updating readme, fixing some small tidbits and polishing up some areas of the app. Squirrel now prints pretty logs to console when running in development mode and writes logs to a file if running in release. Project status i realistically can not get a GUI settings panel done due to me needing to divert my attention to more important life stuff. this right here is probably going to be the extent of work done on Squirrel in stardance. i definitely do plan on working on this in the long term. for example, im not entirely happy and satisfied with the current UI, and global hotkey still does not work on wayland. but right now, more pressing issues are at hand and i cannot give it my all on this project. that said, i do believe that Squirrel is in a very usable 1.0 state, which was my goal. i might push minor updates if the reviews call for fixes/improvements, but definitely no major features. thanks for reading if you made it here."}, {"post_id": 54719, "ts": "2026-08-25T19:56:34Z", "hours": 3.9647, "text": "History persistence configuration now works. setting it to false means history is not retained between sessions. comes with true as default. pinned entries always persist. attachment shows the behavior when persistence is off. Implementation i ended up deciding not to do the in memory database method for this since it was a bit too much added complexity which could be avoided by just adding an additional is_persistent column to the db. im not the happiest about how i’ve implemented this right now but im willing to take that hit right now if it means i dont have to deal with databases. Next all of the config options are now implemented. we are very close to v1.0. expect progress to be rather slow from here on out. i’ve had to divert my attention towards other things and haven’t been able to spend a lot of time working on my projects. maybe i will work on a settings panel. depends on how much work it requires. it’s a maybe. i may just ship it as it stands right now."}, {"post_id": 51853, "ts": "2026-08-21T18:35:09Z", "hours": 0.8633, "text": "Item expiry and pin-preservation expired items are now automatically deleted on program startup. an entry is considered expired when the current time is more than its expires_at value. when pinned, the expires_at attribute is nulled, meaning this entry will never expire. the “Clear all” shortcut Ctrl+Shift+Del now respects pinned entries. it clears everything but leaves pinned entries untouched. Next the ephemeral db shenanigans. also, i have decided that Squirrel needs a settings panel in the frontend for easier config modification. that may or may not happen but it is tempting to do it."}, {"post_id": 51243, "ts": "2026-08-20T19:36:27Z", "hours": 5.9658, "text": "(i genuinely have no idea what to show in the devlog attachment, nothing’s changed visually. so have this stupid ass screenshot.) Massive refactor, breaking changes now that i’ve given myself the liberty to rethink and redesign Squirrel’s data models and storage in a breaking fashion for v1, we have managed to make a good amount of improvements across the board. database schema has been modified to better suit current needs and make it possible to implement the features I desire for v1. it has been a very satisfying refactor. What’s new: use UNIX microsecond timestamp for event ids instead of relying on sqlite autoincrement. this allows us to immediately send a captured event to the frontend without having to await a db write to obtain the event id. this also eliminates the timestamp column for events since the id is also the timestamp. a dedicated BLOB column for image entries to store raw image bytes instead of b64 encoded strings. this makes images weigh about ~33% lighter. decent perf boost. new expires_at column to store when an entry expires. pinned entries have an expiry of NULL . provides the base to actually implement expiring entries. get rid of ClipboardEventNotice since we no longer do the notify frontend -> write to db -> send data to frontend dance. it is now simply send whole event to frontend -> write to db . we enjoy simplifications. (!) as it stands now, old data (if it exists) would immediately be wiped when launching Squirrel v1. i could write some migration code but we’ll see. maybe clipboard data isn’t important enough to bother with migration. Next: actually implement entry expiration: should be trivial, just delete expired entries on launch. ephemeral/persistent toggle: this one is a bit tricky, and will involve some in memory database shenanigans. more details in the devlog when i implement this."}, {"post_id": 47102, "ts": "2026-08-14T19:04:13Z", "hours": 0.8614, "text": "Ignore programs you can specify programs in which Squirrel should not listen to clipboard events. this is useful when you’re working in a program wherein you need to use copy and paste a bunch. ignoring that program would keep your Squirrel history clean. also useful to ignore a program that you regularly copy secrets from. example of notepad being ignored:"}, {"post_id": 46488, "ts": "2026-08-13T18:43:57Z", "hours": 3.6642, "text": "devlog attachment obligation: here is me pasting some files i copied a couple minutes ago after i copied stuff on top of that. that out of the way, devlog. Several things app theme is now configurable from config, so you are not stuck with the system theme if you want to change it. cleanup across the backend; comments, TODOs, error handling, and stuff of the sort. performance enhancement in the clipboard event emitter loop. bugfix in the same loop where the thread panicked if you copied something while the app was launching. merged the config branch. the remaining config options would be better to implement in their own branches. dependabot updates"}, {"post_id": 46172, "ts": "2026-08-13T06:19:26Z", "hours": 3.2672, "text": "Configuration (wip) Squirrel now has a configuration file. squirrel.toml is created in the config directory of your OS (i.e. %appdata%/Squirrel on windows and /home/username/.config/Squirrel on linux), finally allowing some amount of customization support. right now, only the types and the max_image_size config options work. types allows you to choose which kind of clipboard items are captured/ignored. max_image_size is self explanatory. attached is the full config file. the remaining options require a bit of work to implement."}, {"post_id": 44184, "ts": "2026-08-09T19:34:47Z", "hours": 0.5053, "text": "Turns out, copy and paste support for files was a one line diff. also, Squirrel is now v0.4.0, yippee. anyways, moving swiftly on. Planning for a v1.0 Squirrel is now in a state where we have most of the major features i wanted it to have: support for essential clipboard data types, pinning and search. however, it is not quite in a v1.0 state. there are a bunch of things i want to add to polish up the program and make it feel sort of “complete”, which is mainly focusing on some basic configuration ability. since sensible defaults are hard to figure out, i’d rather let the user break things instead of being stuck with my arbitrary decisions. thus, i present the current planned feature list for v1: Configuration : enabling basic behavior customization through a config file (TOML most likely) Program exceptions : dont capture clipboard data on certain programs Auto delete/never store : ability to specify a “shelf life” for items, or whether to store them persistently at all. Disable specific types : ability to pick which kind of clipboard events to capture, i.e. only text or text and images, etc. Configurable image size threshold : currently locked to 5mb, this would allow to specify a custom value. (?) Custom data storage format : still torn on this, but there may be performance to be gained by moving to a data store more geared for our purposes. this list ofcourse, might change. implementing these features would make Squirrel much more flexible, and make it v1 worthy."}, {"post_id": 43522, "ts": "2026-08-08T20:50:19Z", "hours": 5.0344, "text": "Rudimentary file support we now have the most basic kind of file support there could be. which is just storing the path to the file. we then provide a link to the file in the frontend, clicking on which reveals the file in your explorer. we also now have tiny little icons on the entries which indicate the entry type. all icons thanks to https://lucide.dev/ files ofcourse, need a bit more work. right now, you cant really do much except revealing in explorer. i will work on adding copy and paste support for files next, as well as maybe improve the overall performance a bit."}, {"post_id": 40907, "ts": "2026-08-04T18:49:27Z", "hours": 0.4922, "text": "Acting on feedback a shipwright recommended i change my banner to include a screenshot of the program. so we now have a shiny new banner that should look good everywhere on the site. this required me to figure out what dimensions the banner is shown at across the site. i’ve attached a rough template for banners. fitting everything inside the marked areas should make sure your banner isn’t cut off anywhere that matters. one reviewer rightfully couldn’t figure out how to quick paste items. this is a miss on my part because i didn’t really have a list of shortcuts anywhere and kind of just mentioned them in passing in the README. that has been rectified by adding a Shortcuts section to the readme."}, {"post_id": 35201, "ts": "2026-07-26T13:57:06Z", "hours": 0.8461, "text": "Set for ship release is made, README updated. should be good to go."}, {"post_id": 33659, "ts": "2026-07-23T19:06:47Z", "hours": 0.9039, "text": "Basic image cache we now cache the last 32 images, fetching from the backend when required and updating the cache. made the image re-rendering issue instantly better. attached is the demo video i forgot to upload in the second to last devlog showing images in action. Performance images are a difficult thing to handle, especially when dealing with the system clipboard. i’ve made Squirrel as performant as i could to the best of my abilities, which is to say, it’s not the best. it isn’t as rich as i would like it to be, so i might return to this feature to improve it in the future. one restriction i’ve put on images to control some of the chaos is limiting the size to 5 megabytes, meaning any image above 5 megs isn’t registered. i could push that to 10, which is still practically instant. but Squirrel is intended to be a quick clipboard, and not dropbox. so this is my cheaty little escape. maybe i’ll relax the limit in the future if 5mb is really restrictive. Next? i’ll probably bump the minor version and ship (i wouldn’t dare a v1.0 currently). i’d say pinning and image support is enough to warrant a second ship. beyond that though, stands file(s) support, so a lot of decision making on how i want it to work to have a good balance of performance and usefulness. a bit of a lengthy devlog this one, and i appreciate if you read all that. but i wanted to clear up some things for myself and just have a frame of reference where Squirrel stands right now after returning from a development break."}, {"post_id": 33376, "ts": "2026-07-23T08:11:18Z", "hours": 0.3458, "text": "Image branch is merged yay, yippee even. next i need to implement a frontend cache to store the last X entries’ contents, particularly for images. the way it works right now, every time the images are re-rendered (due to being filtered by search, for example), content is fetched from the backend. this ofcourse, is less than ideal. but shouldnt be a lot of trouble to fix."}, {"post_id": 32539, "ts": "2026-07-21T19:47:15Z", "hours": 4.9058, "text": "Bunch of things Image Improvements some performance enhancements with images. made the clipboard image data fetching happen in Tauri’s dedicated thread pool, effectively parallelizing the operation. this made image copying a lot faster. image support should be merged into master soon enough. Lazy loading we now have lazy loading for images. image data isn’t loaded until it is scrolled into view. makes startup quick. CI enabled Dependabot updates and optimized the lint workflows for PRs. previously, all of the project was lint+checked on PR when changing anything. now it only checks the part that’s changed (i.e. frontend or backend)"}, {"post_id": 31397, "ts": "2026-07-19T18:47:59Z", "hours": 4.4964, "text": "Progress on images we finally have some form of working image support in Squirrel. This required even more sweeping refactoring changes to the codebase, which was a bit painful and im sure the new code isn’t the best quality either and will bite me later, but we’ll deal with it when we deal with it. getting images is a bit slow however, as right now we’re storing the image as base64 encoded PNGs. i plan to use the SQLite blob type to just store the raw bytes and pass that back and forth to improve the performance a bit (maybe some sort of caching as well?). there are also other areas where that are to be improved but i wanted to get a somewhat working prototype as fast as i can. explaining the silence i’ve been distracted by some life stuff, making me neglect my projects a bit. i also got distracted by the ESP32, fun little device. that is where the 9 days went. but, expect me to work semi-regularly again. thanks for reading."}, {"post_id": 26042, "ts": "2026-07-10T16:57:23Z", "hours": 3.0411, "text": "Lots of refactoring (apologies for the uneventful devlog attachment, i have nothing interesting to show except just code) to make it a bit more manageable when adding image support, a bunch of refactoring and reorganizing has been done in the backend. like i’ve previously mentioned, the codebase leaned too hard into only supporting text events. this fixes that. today’s changes also make the internal communication a bit more efficient. there are a couple more places where performance can be improved. and we will need every bit of performance we can get when dealing with image data. Changelog (shoutout @Hridya for stardance utils, just discovered this) 5b3f285 refactor: move clipboard structures into separate file b3ab1c8 perf: only get required data from db when copying an item 69dc003 refactor: modify data types to enable addition of image support Release CI (wip) currently writing the Release workflow for Squirrel. i have to figure out how to upload the artifacts to a github release with proper versioning and all that. the strategy is to run the workflow whenever something is pushed to the release branch. that is all for today."}, {"post_id": 25496, "ts": "2026-07-09T20:07:22Z", "hours": 0.7936, "text": "Version bump and docs bumped the minor version. Squirrel is officially v0.2.0, yippi. plus, updated the README, adding more explanation about the Wayland issue. also showcased the pin feature. i’ll try to whip up a release workflow to add to my CI tomorrow. I’m debating whether i should ship v0.2.0. the only major change from 0.1.0 is the addition of pinning. i might wait until i have image support and ship later, or i might change my mind, im unsure."}, {"post_id": 24896, "ts": "2026-07-08T19:03:24Z", "hours": 1.2706, "text": "Closed 1 (one) issue moved the global launch hotkey logic from the frontend to the backend. it didn’t behave well in certain situations, failing to activate and bringing up the Squirrel window. Starting work on images we’re experimenting with images. the current functionality is very much caveman and needs a lot of attention to make it actually usable. i’ve decided to stick with clipboard_rs for now, we’ll see how that pans out."}, {"post_id": 24277, "ts": "2026-07-07T18:55:23Z", "hours": 4.1067, "text": "Sadness so i just found out that Tauri’s global shortcut plugin does not yet support Wayland, which is sad to discover this deep into development. but, there is an active PR addressing this issue , which is nice. what this means for Squirrel is that proper Wayland support will unfortunately have to wait until this is merged. the joys of using a not-yet-completely-matured framework i suppose. though it does make me feel a bit guilty for calling Squirrel “cross-platform”. in other news (changelog): Squirrel now has a --silent launch flag that makes it start with the window hidden. useful when the app is set to launch on system startup. Squirrel now makes sure there is only one instance of it running. The shortcut Ctrl+Shift+Del will clear history permanently. (i forgot about clear history functionality in the first ship even though the code for it existed, there just wasnt a button in the frontend to call it)"}, {"post_id": 22186, "ts": "2026-07-04T14:50:25Z", "hours": 4.1014, "text": "CI dipped my toes into github workflows, messed around, an got check&lint workflows working on pull requests. will make a release workflow some time later. this change however, was only a part of this devlog’s time. Bad decisions catching up turns out, using clipboard_rs might’ve been the subpar choice for interfacing with the system clipboard. while clipboard_rs provides a easy way to listen to clipboard changes and get text from it, fetching raw clipboard data is buggy and inconvenient. when i sat down to work on image support, i was immediately brick-walled by how messy it is to just get raw data first. it would’ve been simple if i was building for just one target os but considering both windows and linux, it’s less than ideal. on top of this, the documentation for the crate is very lackluster. all this to say, i am very much debating migrating my clipboard stuff to using arboard . arboard doesnt provide direct functionality to listen to clipboard changes so i will have to implement that myself. but, it does have first class support for wayland. a very enticing choice, but we will see."}, {"post_id": 18315, "ts": "2026-06-29T12:51:11Z", "hours": 2.7625, "text": "Navigation improvements slight refactoring and bugfixes for frontend navigation. the navigation was kinda wonky before this and sometimes wouldn’t highlight the entry that was actually selected in the background. most of this devlog’s work was to make it so that what you see is what you get. also, a touch of color has been added to pinned entries (tentative)."}, {"post_id": 17064, "ts": "2026-06-27T18:22:53Z", "hours": 2.5814, "text": "Pins we now have basic entry pinning support. this was a bit less difficult than i thought it was going to be. but now you can pin an item and it always stays at the top of the list (unless you’re searching). anyways, that is one item ticked off the todo list. apart from that, i had to do some minor backend refactoring and reorganizing so that it is easier to build more upon. next? image and/or file copy support. this is one monumental task. i think the way we’ll approach this is by storing the entire file if it’s smaller than, say 5mb, and if it is larger, we just store the path to the file. we dont want to store the user’s 5gb video file they just copied. for images, i think the play is to generate a low quality thumbnail of the image to display in the app. for files, if it is a text file, we can show just the first 5 or so lines with a link to the file, other wise we’ll just give a link. until now, the code i’ve written sadly relies too much on the fact that every event is a text copy as we ignore everything else. it’s going to be a rather painstaking experience refactoring the codebase. the challenge is going to be keeping Squirrel quick and responsive while supporting all of this additional functionality."}, {"post_id": 14387, "ts": "2026-06-23T14:34:01Z", "hours": 2.1467, "text": "even more bugfixes ofcourse critical bugs pop up when im trying to release. the system tray icon wouldnt show up when running the single-file executable on any platform. that is now fixed. plus a couple more things have been done to make Squirrel behave like a good cross platform app, like storing the data in the OS’s appdata directory. there are some more things i would like to do but i think the app is in a releasable state and i’ve wanted to ship it for a while. I’ve set up the GitHub release and all the relevant instructions in the README. might be last devlog before ship #1."}, {"post_id": 11396, "ts": "2026-06-18T17:34:03Z", "hours": 1.2267, "text": "more polish and minor fixes more readme refining, linux support clarity, and installation instructions. also, i completely forgot about the tray icon actually needing an image icon, so until now it was just blank. anyways, we now have an icon. next, we put out releases on github and ship, hopefully. unfortunately we have to wait until tomorrow for linux builds."}, {"post_id": 10100, "ts": "2026-06-16T18:11:51Z", "hours": 1.3953, "text": "readme and polishing preparing to ship, writing docs, recording demos and stuff. there are a couple other things i want to sort out but i might ship in a few days."}, {"post_id": 9339, "ts": "2026-06-15T17:46:59Z", "hours": 2.4394, "text": "Dark theme! just glorious there isn’t a theme toggle button yet, it just goes off of your system’s theme for now. now that the colors are roughly standardized across the ui, tweaking the contrast and palette is a much more pleasant experience."}, {"post_id": 8830, "ts": "2026-06-14T18:02:58Z", "hours": 0.6531, "text": "wip dark theme support i want squirrel to use whatever theme the system is set to. currently it’s forced light mode but dark mode is something i’d be crucified for not adding. unfortunately, I in my infinite wisdom didn’t have the foresight to have consistent colors across even the light theme itself. there’s just random #aaa , #666 , etc colors everywhere where i went with what looked good. so work needs to be done to standardize the colors with css variables. then just modify the variables for dark theme accordingly. yes, i’m aware this is standard practice."}, {"post_id": 8047, "ts": "2026-06-13T12:50:39Z", "hours": 1.6972, "text": "Ticked a couple of items off the todo list: Squirrel now loads the history on launch. doing this was easier than i expected, but it’s a very naive way to do it (literally just send all of the history on launch). we also now have a logo. im no graphic designer by any means so this is the best i could do. shows in the titlebar and when your history is empty. check the project banner for a larger version if you feel like it. i might change the logo in the future, i just wanted an icon. todo pinning items test on linux"}, {"post_id": 7571, "ts": "2026-06-12T17:36:06Z", "hours": 1.2175, "text": "nothing significant. just docs and comments and cleanup. slowly making progress planning wise into loading the history at launch. the idea is to use a custom Tauri IPC Channel for incrementally streaming data to the frontend on app start. channels are supposedly faster for this and are meant for continuous messages like this in comparison to events. from the Tauri docs: Channels are designed to be fast and deliver ordered data. They are used internally for streaming operations such as download progress, child process output and WebSocket messages. i may implement a lazy loading system if i feel like it. i have nothing interesting to show so have a squirrel again"}, {"post_id": 6978, "ts": "2026-06-11T18:27:06Z", "hours": 4.3067, "text": "Item search i’ve wanted to add this for a long time but it needed a lot of refactoring in the frontend so i put it off for later. it is now later. we have instant search. press / or any of the non shortcut keys to start searching. frontend logic has had a big refactor making navigation and other operations more predictable and less wonky. it took a bit of battling with the specifics of Svelte’s each loop and bind:this directive but it was worth it. there is still some cleanup that can be done, the code is not idiomatic by a long shot, but im happy we have a very essential feature complete. changelog: add search fix broken arrow navigation and copy/delete operations applying to wrong entries. make window size a bit bigger by default (might change later) make copy icon turn into a green checkmark so that there is some visual feedback on copying make the database file always save at the executable’s location. todo ! still need to test linux ! load history on launch app icon and branding"}, {"post_id": 6358, "ts": "2026-06-10T18:17:34Z", "hours": 5.3111, "text": "Frontend improvements we now have buttons on the clipboard entries so you can also use the mouse to perform the basic functions like copy, delete, etc. (pins wip). there have also been a bunch of UI improvements and tweaks in general. deleting feels instant. navigation is fixed (for the most part). Backend slight optimization in the pasting operation, plus a couple of fixes and doc comments."}, {"post_id": 5833, "ts": "2026-06-09T19:30:37Z", "hours": 0.4139, "text": "custom scroll bar that is it, enjoy."}, {"post_id": 5013, "ts": "2026-06-08T17:39:05Z", "hours": 2.1789, "text": "UI tweaks as i mentioned before, im in the process of simplifying the UI. i hid the native titlebar and made a custom one. also tweaked the shape of the window to feel more like a clipboard. that is all that’s changed significantly this devlog. development will probably slow down a little bit in the coming days because i have irl stuff to deal with."}, {"post_id": 4379, "ts": "2026-06-07T18:13:01Z", "hours": 4.3942, "text": "more backend there isnt any significant change in the frontend but there’s a ton of backend refactoring and bugfixes. performance should be slightly better now with large copy/pastes. changelog: associate IDs with clipboard events so that we only have to pass IDs between the frontend and backend instead of the whole content. make paste operation more efficient ignore clipboard events caused by Squirrel itself (a bit hacky to achieve this but good enough) Quit button in tray icon menu so Squirrel can actually be closed (there was no way to close it before except killing it) make the shortcut to bring up Squirrel work in almost all situations refactor AppState + some other things more cleanup and comments anyways, attached image is the tentative color palette i might implement. i have no idea how to do this and which colors to use where or if it would even look good so i might just ditch it in the future. we’ll see. todo still have to test on linux and load history on app launch. probably will work on that next."}, {"post_id": 3711, "ts": "2026-06-06T19:20:52Z", "hours": 3.0414, "text": "we got shortcuts we now have Ctrl+Shift+V as the shortcut to bring up Squirrel. (i know it’s used for “Paste as plain text” in some programs and used for “Paste in place” in photoshop but whatever). once up, you can select items from your history using arrow keys. pressing Return pastes the selected item into your last window. we’re having some issues with permissions but i’ll look into it. i’m now slowly simplifying the UI to be geared more towards improving user ergonomics and make it something that is not cluttered and easy to use. apart from this, i’ve cleaned up the code a bit removing stray debug prints and random commented code, it was getting out of hand. will write proper doc comments soon. todo i have to make the app load the user’s past clipboard history on startup lmao i totally forgot i have to start testing on linux, urgently. i feel i should make devlogs more often. even if nothing’s changed in the actual project, detailing plans helps me keep track of things personally. that’s pretty much it, stay tuned. edit: please ignore the VC_UNDEFINED keys in the input overlay in the attached video, it’s Enigo inputs not translating well."}, {"post_id": 2305, "ts": "2026-06-04T18:30:06Z", "hours": 4.1042, "text": "a bunch of backend improvements: store timestamps for copy events more efficient message passing between frontend and backend Clear History functionality system tray (!) (pls ignore the missing icon in the tray, we don’t have an icon for the app yet) slightly better UI on the topic of UI, i’m getting around to deciding a color palette for the app. i will probably work more on the UI for a bit before switching gears to add more functionality (like image support). if i decide i want to ship early, v0.1 will probably go without image support and just get a lot of polish with text only functionality."}, {"post_id": 1590, "ts": "2026-06-03T18:26:51Z", "hours": 3.9078, "text": "frontend improvements! spent some time battling css for this relatively simple UI but it’s atleast somewhat pleasant to look at. will work on either image support or making it the app run in the background next."}, {"post_id": 922, "ts": "2026-06-02T17:41:08Z", "hours": 4.1017, "text": "nothing much has changed visually, but we now have a database to store the user’s clipboard actions. plus some refactoring changes and a bunch of minor improvements here and there. i have nothing to show for it except code so instead have an image of a squirrel"}, {"post_id": 261, "ts": "2026-06-01T13:38:29Z", "hours": 2.5611, "text": "init. figuring out Tauri’s emit/invoke mechanism and capturing clipboard copy events. slow start. we’ll do the color palette and icon and all the frontend pleasantries at a later date."}]...
|
Title: Squirrel by @Koei | Stardance
Devlogs:
ini Title: Squirrel by @Koei | Stardance
Devlogs:
init. figuring out Tauri’s emit/invoke mechanism and capturing clipboard copy events. slow start. we’ll do the color palette and icon and all the frontend pleasantries at a later date.
nothing much has changed visually, but we now have a database to store the user’s clipboard actions. plus some refactoring changes and a bunch of minor improvements here and there. i have nothing to show for it except code so instead have an image of a squirrel
frontend improvements! spent some time battling css for this relatively simple UI but it’s atleast somewhat pleasant to look at. will work on either image support or making it the app run in the background next.
a bunch of backend improvements: store timestamps for copy events more efficient message passing between frontend and backend Clear History functionality system tray (!) (pls ignore the missing icon in the tray, we don’t have an icon for the app yet) slightly better UI on the topic of UI, i’m getting around to deciding a color palette for the app. i will probably work more on the UI for a bit before switching gears to add more functionality (like image support). if i decide i want to ship early, v0.1 will probably go without image support and just get a lot of polish with text only functionality.
we got shortcuts we now have Ctrl+Shift+V as the shortcut to bring up Squirrel. (i know it’s used for “Paste as plain text” in some programs and used for “Paste in place” in photoshop but whatever). once up, you can select items from your history using arrow keys. pressing Return pastes the selected item into your last window. we’re having some issues with permissions but i’ll look into it. i’m now slowly simplifying the UI to be geared more towards improving user ergonomics and make it something that is not cluttered and easy to use. apart from this, i’ve cleaned up the code a bit removing stray debug prints and random commented code, it was getting out of hand. will write proper doc comments soon. todo i have to make the app load the user’s past clipboard history on startup lmao i totally forgot i have to start testing on linux, urgently. i feel i should make devlogs more often. even if nothing’s changed in the actual project, detailing plans helps me keep track of things personally. that’s pretty much it, stay tuned. edit: please ignore the VC_UNDEFINED keys in the input overlay in the attached video, it’s Enigo inputs not translating well.
more backend there isnt any significant change in the frontend but there’s a ton of backend refactoring and bugfixes. performance should be slightly better now with large copy/pastes. changelog: associate IDs with clipboard events so that we only have to pass IDs between the frontend and backend instead of the whole content. make paste operation more efficient ignore clipboard events caused by Squirrel itself (a bit hacky to achieve this but good enough) Quit button in tray icon menu so Squirrel can actually be closed (there was no way to close it before except killing it) make the shortcut to bring up Squirrel work in almost all situations refactor AppState + some other things more cleanup and comments anyways, attached image is the tentative color palette i might implement. i have no idea how to do this and which colors to use where or if it would even look good so i might just ditch it in the future. we’ll see. todo still have to test on linux and load history on app launch. probably will work on that next.
UI tweaks as i mentioned before, im in the process of simplifying the UI. i hid the native titlebar and made a custom one. also tweaked the shape of the window to feel more like a clipboard. that is all that’s changed significantly this devlog. development will probably slow down a little bit in the coming days because i have irl stuff to deal with.
custom scroll bar that is it, enjoy.
Frontend improvements we now have buttons on the clipboard entries so you can also use the mouse to perform the basic functions like copy, delete, etc. (pins wip). there have also been a bunch of UI improvements and tweaks in general. deleting feels instant. navigation is fixed (for the most part). Backend slight optimization in the pasting operation, plus a couple of fixes and doc comments.
Item search i’ve wanted to add this for a long time but it needed a lot of refactoring in the frontend so i put it off for later. it is now later. we have instant search. press / or any of the non shortcut keys to start searching. frontend logic has had a big refactor making navigation and other operations more predictable and less wonky. it took a bit of battling with the specifics of Svelte’s each loop and bind:this directive but it was worth it. there is still some cleanup that can be done, the code is not idiomatic by a long shot, but im happy we have a very essential feature complete. changelog: add search fix broken arrow navigation and copy/delete operations applying to wrong entries. make window size a bit bigger by default (might change later) make copy icon turn into a green checkmark so that there is some visual feedback on copying make the database file always save at the executable’s location. todo ! still need to test linux ! load history on launch app icon and branding
nothing significant. just docs and comments and cleanup. slowly making progress planning wise into loading the history at launch. the idea is to use a custom Tauri IPC Channel for incrementally streaming data to the frontend on app start. channels are supposedly faster for this and are meant for continuous messages like this in comparison to events. from the Tauri docs: Channels are designed to be fast and deliver ordered data. They are used internally for streaming operations such as download progress, child process output and WebSocket messages. i may implement a lazy loading system if i feel like it. i have nothing interesting to show so have a squirrel again
Ticked a couple of items off the todo list: Squirrel now loads the history on launch. doing this was easier than i expected, but it’s a very naive way to do it (literally just send all of the history on launch). we also now have a logo. im no graphic designer by any means so this is the best i could do. shows in the titlebar and when your history is empty. check the project banner for a larger version if you feel like it. i might change the logo in the future, i just wanted an icon. todo pinning items test on linux
wip dark theme support i want squirrel to use whatever theme the system is set to. currently it’s forced light mode but dark mode is something i’d be crucified for not adding. unfortunately, I in my infinite wisdom didn’t have the foresight to have consistent colors across even the light theme itself. there’s just random #aaa , #666 , etc colors everywhere where i went with what looked good. so work needs to be done to standardize the colors with css variables. then just modify the variables for dark theme accordingly. yes, i’m aware this is standard practice.
Dark theme! just glorious there isn’t a theme toggle button yet, it just goes off of your system’s theme for now. now that the colors are roughly standardized across the ui, tweaking the contrast and palette is a much more pleasant experience.
readme and polishing preparing to ship, writing docs, recording demos and stuff. there are a couple other things i want to sort out but i might ship in a few days.
more polish and minor fixes more readme refining, linux support clarity, and installation instructions. also, i completely forgot about the tray icon actually needing an image icon, so until now it was just blank. anyways, we now have an icon. next, we put out releases on github and ship, hopefully. unfortunately we have to wait until tomorrow for linux builds.
even more bugfixes ofcourse critical bugs pop up when im trying to release. the system tray icon wouldnt show up when running the single-file executable on any platform. that is now fixed. plus a couple more things have been done to make Squirrel behave like a good cross platform app, like storing the data in the OS’s appdata directory. there are some more things i would like to do but i think the app is in a releasable state and i’ve wanted to ship it for a while. I’ve set up the GitHub release and all the relevant instructions in the README. might be last devlog before ship #1.
Pins we now have basic entry pinning support. this was a bit less difficult than i thought it was going to be. but now you can pin an item and it always stays at the top of the list (unless you’re searching). anyways, that is one item ticked off the todo list. apart from that, i had to do some minor backend refactoring and reorganizing so that it is easier to build more upon. next? image and/or file copy support. this is one monumental task. i think the way we’ll approach this is by storing the entire file if it’s smaller than, say 5mb, and if it is larger, we just store the path to the file. we dont want to store the user’s 5gb video file they just copied. for images, i think the play is to generate a low quality thumbnail of the image to display in the app. for files, if it is a text file, we can show just the first 5 or so lines with a link to the file, other wise we’ll just give a link. until now, the code i’ve written sadly relies too much on the fact that every event is a text copy as we ignore everything else. it’s going to be a rather painstaking experience refactoring the codebase. the challenge is going to be keeping Squirrel quick and responsive while supporting all of this additional functionality.
Navigation improvements slight refactoring and bugfixes for frontend navigation. the navigation was kinda wonky before this and sometimes wouldn’t highlight the entry that was actually selected in the background. most of this devlog’s work was to make it so that what you see is what you get. also, a touch of color has been added to pinned entries (tentative).
CI dipped my toes into github workflows, messed around, an got check&lint workflows working on pull requests. will make a release workflow some time later. this change however, was only a part of this devlog’s time. Bad decisions catching up turns out, using clipboard_rs might’ve been the subpar choice for interfacing with the system clipboard. while clipboard_rs provides a easy way to listen to clipboard changes and get text from it, fetching raw clipboard data is buggy and inconvenient. when i sat down to work on image support, i was immediately brick-walled by how messy it is to just get raw data first. it would’ve been simple if i was building for just one target os but considering both windows and linux, it’s less than ideal. on top of this, the documentation for the crate is very lackluster. all this to say, i am very much debating migrating my clipboard stuff to using arboard . arboard doesnt provide direct functionality to listen to clipboard changes so i will have to implement that myself. but, it does have first class support for wayland. a very enticing choice, but we will see.
Sadness so i just found out that Tauri’s global shortcut plugin does not yet support Wayland, which is sad to discover this deep into development. but, there is an active PR addressing this issue , which is nice. what this means for Squirrel is that proper Wayland support will unfortunately have to wait until this is merged. the joys of using a not-yet-completely-matured framework i suppose. though it does make me feel a bit guilty for calling Squirrel “cross-platform”. in other news (changelog): Squirrel now has a --silent launch flag that makes it start with the window hidden. useful when the app is set to launch on system startup. Squirrel now makes sure there is only one instance of it running. The shortcut Ctrl+Shift+Del will clear history permanently. (i forgot about clear history functionality in the first ship even though the code for it existed, there just wasnt a button in the frontend to call it)
Closed 1 (one) issue moved the global launch hotkey logic from the frontend to the backend. it didn’t behave well in certain situations, failing to activate and bringing up the Squirrel window. Starting work on images we’re experimenting with images. the current functionality is very much caveman and needs a lot of attention to make it actually usable. i’ve decided to stick with clipboard_rs for now, we’ll see how that pans out.
Version bump and docs bumped the minor version. Squirrel is officially v0.2.0, yippi. plus, updated the README, adding more explanation about the Wayland issue. also showcased the pin feature. i’ll try to whip up a release workflow to add to my CI tomorrow. I’m debating whether i should ship v0.2.0. the only major change from 0.1.0 is the addition of pinning. i might wait until i have image support and ship later, or i might change my mind, im unsure.
Lots of refactoring (apologies for the uneventful devlog attachment, i have nothing interesting to show except just code) to make it a bit more manageable when adding image support, a bunch of refactoring and reorganizing has been done in the backend. like i’ve previously mentioned, the codebase leaned too hard into only supporting text events. this fixes that. today’s changes also make the internal communication a bit more efficient. there are a couple more places where performance can be improved. and we will need every bit of performance we can get when dealing with image data. Changelog (shoutout @Hridya for stardance utils, just discovered this) 5b3f285 refactor: move clipboard structures into separate file b3ab1c8 perf: only get required data from db when copying an item 69dc003 refactor: modify data types to enable addition of image support Release CI (wip) currently writing the Release workflow for Squirrel. i have to figure out how to upload the artifacts to a github release with proper versioning and all that. the strategy is to run the workflow whenever something is pushed to the release branch. that is all for today.
Progress on images we finally have some form of working image support in Squirrel. This required even more sweeping refactoring changes to the codebase, which was a bit painful and im sure the new code isn’t the best quality either and will bite me later, but we’ll deal with it when we deal with it. getting images is a bit slow however, as right now we’re storing the image as base64 encoded PNGs. i plan to use the SQLite blob type to just store the raw bytes and pass that back and forth to improve the performance a bit (maybe some sort of caching as well?). there are also other areas where that are to be improved but i wanted to get a somewhat working prototype as fast as i can. explaining the silence i’ve been distracted by some life stuff, making me neglect my projects a bit. i also got distracted by the ESP32, fun little device. that is where the 9 days went. but, expect me to work semi-regularly again. thanks for reading.
Bunch of things Image Improvements some performance enhancements with images. made the clipboard image data fetching happen in Tauri’s dedicated thread pool, effectively parallelizing the operation. this made image copying a lot faster. image support should be merged into master soon enough. Lazy loading we now have lazy loading for images. image data isn’t loaded until it is scrolled into view. makes startup quick. CI enabled Dependabot updates and optimized the lint workflows for PRs. previously, all of the project was lint+checked on PR when changing anything. now it only checks the part that’s changed (i.e. frontend or backend)
Image branch is merged yay, yippee even. next i need to implement a frontend cache to store the last X entries’ contents, particularly for images. the way it works right now, every time the images are re-rendered (due to being filtered by search, for example), content is fetched from the backend. this ofcourse, is less than ideal. but shouldnt be a lot of trouble to fix.
Basic image cache we now cache the last 32 images, fetching from the backend when required and updating the cache. made the image re-rendering issue instantly better. attached is the demo video i forgot to upload in the second to last devlog showing images in action. Performance images are a difficult thing to handle, especially when dealing with the system clipboard. i’ve made Squirrel as performant as i could to the best of my abilities, which is to say, it’s not the best. it isn’t as rich as i would like it to be, so i might return to this feature to improve it in the future. one restriction i’ve put on images to control some of the chaos is limiting the size to 5 megabytes, meaning any image above 5 megs isn’t registered. i could push that to 10, which is still practically instant. but Squirrel is intended to be a quick clipboard, and not dropbox. so this is my cheaty little escape. maybe i’ll relax the limit in the future if 5mb is really restrictive. Next? i’ll probably bump the minor version and ship (i wouldn’t dare a v1.0 currently). i’d say pinning and image support is enough to warrant a second ship. beyond that though, stands file(s) support, so a lot of decision making on how i want it to work to have a good balance of performance and usefulness. a bit of a lengthy devlog this one, and i appreciate if you read all that. but i wanted to clear up some things for myself and just have a frame of reference where Squirrel stands right now after returning from a development break.
Set for ship release is made, README updated. should be good to go.
Acting on feedback a shipwright recommended i change my banner to include a screenshot of the program. so we now have a shiny new banner that should look good everywhere on the site. this required me to figure out what dimensions the banner is shown at across the site. i’ve attached a rough template for banners. fitting everything inside the marked areas should make sure your banner isn’t cut off anywhere that matters. one reviewer rightfully couldn’t figure out how to quick paste items. this is a miss on my part because i didn’t really have a list of shortcuts anywhere and kind of just mentioned them in passing in the README. that has been rectified by adding a Shortcuts section to the readme.
Rudimentary file support we now have the most basic kind of file support there could be. which is just storing the path to the file. we then provide a link to the file in the frontend, clicking on which reveals the file in your explorer. we also now have tiny little icons on the entries which indicate the entry type. all icons thanks to https://lucide.dev/ files ofcourse, need a bit more work. right now, you cant really do much except revealing in explorer. i will work on adding copy and paste support for files next, as well as maybe improve the overall performance a bit.
Turns out, copy and paste support for files was a one line diff. also, Squirrel is now v0.4.0, yippee. anyways, moving swiftly on. Planning for a v1.0 Squirrel is now in a state where we have most of the major features i wanted it to have: support for essential clipboard data types, pinning and search. however, it is not quite in a v1.0 state. there are a bunch of things i want to add to polish up the program and make it feel sort of “complete”, which is mainly focusing on some basic configuration ability. since sensible defaults are hard to figure out, i’d rather let the user break things instead of being stuck with my arbitrary decisions. thus, i present the current planned feature list for v1: Configuration : enabling basic behavior customization through a config file (TOML most likely) Program exceptions : dont capture clipboard data on certain programs Auto delete/never store : ability to specify a “shelf life” for items, or whether to store them persistently at all. Disable specific types : ability to pick which kind of clipboard events to capture, i.e. only text or text and images, etc. Configurable image size threshold : currently locked to 5mb, this would allow to specify a custom value. (?) Custom data storage format : still torn on this, but there may be performance to be gained by moving to a data store more geared for our purposes. this list ofcourse, might change. implementing these features would make Squirrel much more flexible, and make it v1 worthy.
Configuration (wip) Squirrel now has a configuration file. squirrel.toml is created in the config directory of your OS (i.e. %appdata%/Squirrel on windows and /home/username/.config/Squirrel on linux), finally allowing some amount of customization support. right now, only the types and the max_image_size config options work. types allows you to choose which kind of clipboard items are captured/ignored. max_image_size is self explanatory. attached is the full config file. the remaining options require a bit of work to implement.
devlog attachment obligation: here is me pasting some files i copied a couple minutes ago after i copied stuff on top of that. that out of the way, devlog. Several things app theme is now configurable from config, so you are not stuck with the system theme if you want to change it. cleanup across the backend; comments, TODOs, error handling, and stuff of the sort. performance enhancement in the clipboard event emitter loop. bugfix in the same loop where the thread panicked if you copied something while the app was launching. merged the config branch. the remaining config options would be better to implement in their own branches. dependabot updates
Ignore programs you can specify programs in which Squirrel should not listen to clipboard events. this is useful when you’re working in a program wherein you need to use copy and paste a bunch. ignoring that program would keep your Squirrel history clean. also useful to ignore a program that you regularly copy secrets from. example of notepad being ignored:
(i genuinely have no idea what to show in the devlog attachment, nothing’s changed visually. so have this stupid ass screenshot.) Massive refactor, breaking changes now that i’ve given myself the liberty to rethink and redesign Squirrel’s data models and storage in a breaking fashion for v1, we have managed to make a good amount of improvements across the board. database schema has been modified to better suit current needs and make it possible to implement the features I desire for v1. it has been a very satisfying refactor. What’s new: use UNIX microsecond timestamp for event ids instead of relying on sqlite autoincrement. this allows us to immediately send a captured event to the frontend without having to await a db write to obtain the event id. this also eliminates the timestamp column for events since the id is also the timestamp. a dedicated BLOB column for image entries to store raw image bytes instead of b64 encoded strings. this makes images weigh about ~33% lighter. decent perf boost. new expires_at column to store when an entry expires. pinned entries have an expiry of NULL . provides the base to actually implement expiring entries. get rid of ClipboardEventNotice since we no longer do the notify frontend -> write to db -> send data to frontend dance. it is now simply send whole event to frontend -> write to db . we enjoy simplifications. (!) as it stands now, old data (if it exists) would immediately be wiped when launching Squirrel v1. i could write some migration code but we’ll see. maybe clipboard data isn’t important enough to bother with migration. Next: actually implement entry expiration: should be trivial, just delete expired entries on launch. ephemeral/persistent toggle: this one is a bit tricky, and will involve some in memory database shenanigans. more details in the devlog when i implement this.
Item expiry and pin-preservation expired items are now automatically deleted on program startup. an entry is considered expired when the current time is more than its expires_at value. when pinned, the expires_at attribute is nulled, meaning this entry will never expire. the “Clear all” shortcut Ctrl+Shift+Del now respects pinned entries. it clears everything but leaves pinned entries untouched. Next the ephemeral db shenanigans. also, i have decided that Squirrel needs a settings panel in the frontend for easier config modification. that may or may not happen but it is tempting to do it.
History persistence configuration now works. setting it to false means history is not retained between sessions. comes with true as default. pinned entries always persist. attachment shows the behavior when persistence is off. Implementation i ended up deciding not to do the in memory database method for this since it was a bit too much added complexity which could be avoided by just adding an additional is_persistent column to the db. im not the happiest about how i’ve implemented this right now but im willing to take that hit right now if it means i dont have to deal with databases. Next all of the config options are now implemented. we are very close to v1.0. expect progress to be rather slow from here on out. i’ve had to divert my attention towards other things and haven’t been able to spend a lot of time working on my projects. maybe i will work on a settings panel. depends on how much work it requires. it’s a maybe. i may just ship it as it stands right now.
v1.0.0 It’s official. Squirrel is now v1. devlog time is adding logging, updating readme, fixing some small tidbits and polishing up some areas of the app. Squirrel now prints pretty logs to console when running in development mode and writes logs to a file if running in release. Project status i realistically can not get a GUI settings panel done due to me needing to divert my attention to more important life stuff. this right here is probably going to be the extent of work done on Squirrel in stardance. i definitely do plan on working on this in the long term. for example, im not entirely happy and satisfied with the current UI, and global hotkey still does not work on wayland. but right now, more pressing issues are at hand and i cannot give it my all on this project. that said, i do believe that Squirrel is in a very usable 1.0 state, which was my goal. i might push minor updates if the reviews call for fixes/improvements, but definitely no major features. thanks for reading if you made it here.
Ships:
v0.1.0 Squirrel is a clipboard manager that is meant to be simple and intuitive. It remembers all the text you copy allowing you to paste whatever into wherever. You can also quickly search through your history. Squirrel is meant to be cross-platform, but for this release, Linux support on Wayland is very iffy (X11 is fine for the most part). I would highly recommend using Windows for testing this ship, sorry for the inconvenience. Expect potentially better support next ship.
v0.3.0 Squirrel is a clipboard manager that is meant to be simple and intuitive. 2 new features in this version, namely pinning and image support. There are performance improvements as well as slight visual tweaks. Read the README for more info.
v1.0.0 Squirrel is a clipboard manager for Windows and X11 Linux that is meant to be simple and intuitive. This major release overhauls the data storage schema to be more efficient, faster, and reliable. There are significant performance improvements. This release also adds configurability to Squirrel, allowing basic but much needed customization, and polishes up the overall app. Check the README for more information....
|
1793512363.1123292
|
1793598763.1123292
|
|
3140
|
禅文 Zenwen by @dylank | Stardance
|
dylank
|
1
|
21.0
|
243
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-03T00:49:03Z", "hours": 21.0, "multiplier": 11.65, "payout": 243, "blessing": "neutral", "text": "🏯 禅文 Zenwen Ship #1 Learning Chinese is hard, Zenwen makes it easier. Use the live page here: Zenwen Demo Bear in mind, it’s a demo, so no data is saved. As soon as you reload it’ll be lost. More info on running locally here: Main Repository What even is 禅文 Zenwen? Zenwen is an app to help you learn Chinese, and other languages if you wish. As of this ship, Zenwen is a vocab system designed to work for just about any need a user wants, while simple and easy to use. What was challenging First and foremost, learning Flutter was challenging. Dart is simple enough, but Flutter was something I had never seen before. The second challenge was figuring out an efficient data structure to store the many things users can create. This was challenging because I had to figure out how to store many decks with many vocab, while also being able to sort through them, search them, delete data, and access them quickly. Why I am proud! What makes me proud is that I learned an entire new framework and a lot about data storage that I had previously never touched. Learning this unlocks a whole world of coding opportunities that I’m excited to explore! Another thing I’m proud about is that I’ve learned how to debug better. I have learned how to use print functions usefully as well as things I previously didn’t know would cause errors.", "repo": "https://github.com/RandoWhoCodes/Zenwen/", "demo": "https://randowhocodes.github.io/Zenwen_Demo/"}]...
|
[{"post_id": 21193, "ts": "202 [{"post_id": 21193, "ts": "2026-07-03T00:20:20Z", "hours": 0.4414, "text": "🏯 禅文 Zenwen Day 11: SHIIIIIIIP!!!! Finally! Zenwen is shipped for the first time! (but expect lots more to come) Live demo here: Zenwen Demo , bear in mind all data is temporary and will be lost if you refresh. QoL Improvements Learning languages is no longer tedious. Handle everything you need in 1 place without complications. Supports every language! There are 3 things you can add when creating vocab: character, pronunciation, meaning. This means you could translate Egyptian hieroglyphics to Hindi as a French speaker if you really wanted to. Search for decks, and vocab! Forgot what deck some vocab is in, or just have way too many decks? No worries, just search for it! My Dictionary, all your vocab in 1 place! Simply want to see how much vocab you have or are just skimming through what you know? This is the perfect feature for you. 🐉 Chinese word of the day: 进步: progress, to make progress Pronounced: jìnbù Example: “我有了一点进步”, “I have made a little progress”"}, {"post_id": 20482, "ts": "2026-07-02T02:45:29Z", "hours": 0.7764, "text": "🏯 禅文 Zenwen Day 10: EVERYTHING WORKS!!! Finally! What I did during these 44 minutes Long story short, there was an indexing error when a search result wasn’t found. It was supposed to give a message like “no results matched your search”, but instead, it gave a big scary red screen saying “index is supposed to be less than 1: 1”. I had no clue what was wrong. Took a while to figure it out. Turns out I was stupid and trying to do widget.myDictionary.length when I was supposed to do widget.myDictionary[\"vocab\"].length . What’s coming next Ship! Everything is ready. Expect a ship tomorrow if I can set up the demo correctly! 🀄 Chinese word of the day Word: 买 Pronounced: mǎi Example: “我买了筷子。“ - “I bought chopsticks.”"}, {"post_id": 16117, "ts": "2026-06-26T06:28:13Z", "hours": 0.8953, "text": "🏯 Zenwen Day 9: everything works! Well, for now, at least. Overall, pretty quick and easy day. Simple bug fixes, simple feature expansions. What I did Fixed logic for when it was searching through My Dictionary for Strings that match the search Switched some 0s to 1s and stuff so it wouldn’t make duplicate search results or have indexing errors Added a search bar to the edit deck page so now you can search from every screen! What this means I’m almost ready to ship! Project works well enough to be tested, GitHub is up to date with commits. All I need to do is make the README and get a live web demo up and running! 🀄 Chinese word of the day 绿茶 (lǜ chá): Green Tea 我喜欢喝绿茶! I like drinking green tea!"}, {"post_id": 13968, "ts": "2026-06-22T22:33:18Z", "hours": 2.3914, "text": "🏯 禅文 Zenwen Day 8, SEARCH BAR WORKS (mostly)!!!! Learning Chinese is hard. Zenwen makes it easier. Create infinite decks and vocab and find them easily! Apparently Expanded() widgets can only go in certain other widgets, so I was stuck solving bugs for nearly 45 minutes. Sometimes I question why I like coding. The logic for searching vocab is broken, but that was just me being dumb. Should be easy enough to fix. Will need to do heavy optimizing after I ship because I wrote it in probably the least efficient way possible, but it’s fine for now. Chinese word of the day: 飞机 (fēi jī) Means “airplane” ”这是飞机” = “this is an airplane”"}, {"post_id": 12895, "ts": "2026-06-21T03:44:53Z", "hours": 3.4953, "text": "🏯 禅文 Zenwen Day 6 & 7 (I swear that isn’t on purpose) TL;DR Finished My Dictionary; now there’s a master list of all your vocab! Great for if you want to see your progress or just forget a word. Starded working on a search bar! Worked on making my computer less laggy (no time logged for this) The Search Bar What’s the point in being able to make a bunch of decks and vocab if it takes too long to find them? Exactly, there is none. Today I started working on adding a search bar to the header of the app. Surprisingly, the logic behind it is pretty simple. Just iterate through the Maps and Lists . If an item matches your search, add it to a results Map . What I Learned You know those simple, boring headers at the top of basically every app? That’s what us Flutter devs call an AppBar . Apparently, AppBars have multiple parts: leading title (already knew about this one) trailing actions bottom The bottom is what I use for the search bar. Essentially, the bottom is an extension of widgets that are below the title. In order to make it work, you need to give the Scaffold (the parent of the AppBar ) specific details about the extension so that it renders properly. Specifically the height, which can’t be dynamic. 🀄 Since you made it this far Chinese word of the day: 吗 (pronounced “ma”) used to turn a statement into a yes or no question 你喜欢茶: You like tea. 你喜欢茶 吗 : Do you like tea?"}, {"post_id": 11430, "ts": "2026-06-18T18:14:30Z", "hours": 2.6472, "text": "🏯 禅文 Zenwen Day 5: documenting & my favorite feature! (and fixing 1028 issues with my computer) ⌚ TL;DR I added lots of comments to the code so that future me & other people can easily understand the code. Also started adding a cool feature called My Dictionary. 📝 Adding comments (finally) Wanna know something I never do? Add comments. Well at least not until today. Today I spent most of my time doing a well needed cleanup of the codebase, adding comments and making it readable to future me and other people. Since flutter can quickly start looking like a random jumble of widgets, adding these comments really helped me understand exactly what everything is doing and will help others understand as well. 📕 My Dictionary, my favorite feature! I also started working on adding a major QoL improvement, a deck that contains all the vocab you’ve created. Have you ever had a word on the tip of your tongue but just can’t quite remember it? That’s no longer a problem. With My Dictionary, you can open it up and quickly search up that word in just 3 clicks. You can also see how much vocab you have created, which feels amazing when you see how much you’ve learned! 🪲 1028 issues with my computer Don’t ask. I don’t have any answers for you. I checked Lenovo Vantage and now it finally makes sense why my computer struggled to run the file explorer. After a few hours of a well needed scan and fix by Lenovo Smart Performance, my computer now runs (mostly) smoothly once again."}, {"post_id": 10470, "ts": "2026-06-17T06:26:24Z", "hours": 2.2861, "text": "🏯 禅文 Zenwen - Devlog 4️⃣ 👋 你好! Zenwen is an app to help people learn Chinese. As someone with a 970 day Duolingo streak, I know what us language learners need. ⌚ TL;DR HIT THE 10 HOUR MARK 🎉 Today I made the vocab page and made it so you can delete decks. I also polished up the graphics a bit. 📕 What I Learned Today I learned lots of useful things! I learned about some new styling for Material() widgets, along with 4 new widgets: Stack() IntrinsicHeight() Expanded() Padding() Also learned how to make if else statements in ListView.builders! 🗣️ In depth summary Today’s main objective was making the vocab page. To do this I used a simple ListView.builder to iterate through the vocab lists. One issue I had was the layout of the vocab. I wanted an equally spaced horizontal layout with a delete button floating at the right. This was a problem because I only knew about the Row() widget. In order to get the layout I wanted, I had to learn about Stack() and IntrinsicHeight() and Padding() and Expanded(). Another thing I ran into was that it crashed when I deleted all the decks or all the vocab. In order to fix this I learned about if else statements to create different widgets based on the conditions! 👣 Next Steps I’m almost ready to ship! I still have to make a few things though: a master vocab deck, and ideally a search bar. If the search bar goes well then I can also add filters for the decks if I decide it’s worth it."}, {"post_id": 9750, "ts": "2026-06-16T05:30:36Z", "hours": 2.9556, "text": "🏯 禅文 Zenwen - Devlog 3️⃣ 你好! Zenwen is an app to help people ACTUALLY learn languages. As someone with a 970 day Duolingo streak, I know what us learners need. The first thing I’m making for the app is vocab decks, and I’m almost ready to ship this! Today was focused on displaying the actual vocab in the decks as well as being able to add new vocab. Learned a lot about how to handle inputs in Flutter. This morning I realized my button layout wasn’t very convenient for users, so I had to rearrange it, which forced me to learn about InkWell, which will help me learn a lot moving forward."}, {"post_id": 9005, "ts": "2026-06-15T00:43:06Z", "hours": 1.8233, "text": "🏯 禅文 Zenwen - Devlog 2️⃣ 你好! Zenwen is an app I’m making with Flutter to help people ACRUALLY learn languages. As someone with a 970 day Duolingo streak, I know what us language learners need to actually be successful. Made a lot of progress today! I developed a basic display of vocab decks, which includes: title, description, practice button, edit button. Also made a way to create new vocab decks, by clicking the button at the bottom right. You can’t view or add vocab yet, that’s hopefully coming tomorrow. The UI is pretty bare bones right now. I’m focused on functionality before I make it look good. As for bugs I encountered, the entire app crashed when I switched from using a stateless widget to a stateful widget. Quickly discovered this was me being stupid because I forgot to restart the app. Apparently hot reload doesn’t like big changes between stateless and stateful."}, {"post_id": 8526, "ts": "2026-06-14T05:35:36Z", "hours": 3.3131, "text": "🏯 禅文 Zenwen - Devlog 1️⃣ Zenwen is (will be) an app to help people ACTUALLY learn languages like Chinese. As someone with a 960 day Duolingo streak, I know exactly what us language learners need. My first ship will be a tool for making and studying vocab decks to seamlessly fit in with your day. Today was a short but productive. The app is basically just a blank screen on the front end, but the systems are falling into place in the code. Today I developed the system for storing vocab decks. Now it should be fairly easy to add flashcards and other study tools. The first hour or so of the day was spent fixing VSCode because lots of things were breaking. It said my phone was connected, but it wouldn’t show up. The Flutter extension also stopped working. Changed the name from Zhenwen to Zenwen. Zhenwen has religious cultural meanings, so I want to respect that. 真文 means “true text”, which has meanings in Taoism. 禅文 (technically chánwén) essentially means “peaceful language”. For your entertainment here is a screenshot of a stupid bug that confused me for 30 minutes. 99k pixel overflow. Can’t wait to see what the next week will bring and watch this app come to life!"}]...
|
Title: 禅文 Zenwen by @dylank | Stardance
Devlogs:
Title: 禅文 Zenwen by @dylank | Stardance
Devlogs:
🏯 禅文 Zenwen - Devlog 1️⃣ Zenwen is (will be) an app to help people ACTUALLY learn languages like Chinese. As someone with a 960 day Duolingo streak, I know exactly what us language learners need. My first ship will be a tool for making and studying vocab decks to seamlessly fit in with your day. Today was a short but productive. The app is basically just a blank screen on the front end, but the systems are falling into place in the code. Today I developed the system for storing vocab decks. Now it should be fairly easy to add flashcards and other study tools. The first hour or so of the day was spent fixing VSCode because lots of things were breaking. It said my phone was connected, but it wouldn’t show up. The Flutter extension also stopped working. Changed the name from Zhenwen to Zenwen. Zhenwen has religious cultural meanings, so I want to respect that. 真文 means “true text”, which has meanings in Taoism. 禅文 (technically chánwén) essentially means “peaceful language”. For your entertainment here is a screenshot of a stupid bug that confused me for 30 minutes. 99k pixel overflow. Can’t wait to see what the next week will bring and watch this app come to life!
🏯 禅文 Zenwen - Devlog 2️⃣ 你好! Zenwen is an app I’m making with Flutter to help people ACRUALLY learn languages. As someone with a 970 day Duolingo streak, I know what us language learners need to actually be successful. Made a lot of progress today! I developed a basic display of vocab decks, which includes: title, description, practice button, edit button. Also made a way to create new vocab decks, by clicking the button at the bottom right. You can’t view or add vocab yet, that’s hopefully coming tomorrow. The UI is pretty bare bones right now. I’m focused on functionality before I make it look good. As for bugs I encountered, the entire app crashed when I switched from using a stateless widget to a stateful widget. Quickly discovered this was me being stupid because I forgot to restart the app. Apparently hot reload doesn’t like big changes between stateless and stateful.
🏯 禅文 Zenwen - Devlog 3️⃣ 你好! Zenwen is an app to help people ACTUALLY learn languages. As someone with a 970 day Duolingo streak, I know what us learners need. The first thing I’m making for the app is vocab decks, and I’m almost ready to ship this! Today was focused on displaying the actual vocab in the decks as well as being able to add new vocab. Learned a lot about how to handle inputs in Flutter. This morning I realized my button layout wasn’t very convenient for users, so I had to rearrange it, which forced me to learn about InkWell, which will help me learn a lot moving forward.
🏯 禅文 Zenwen - Devlog 4️⃣ 👋 你好! Zenwen is an app to help people learn Chinese. As someone with a 970 day Duolingo streak, I know what us language learners need. ⌚ TL;DR HIT THE 10 HOUR MARK 🎉 Today I made the vocab page and made it so you can delete decks. I also polished up the graphics a bit. 📕 What I Learned Today I learned lots of useful things! I learned about some new styling for Material() widgets, along with 4 new widgets: Stack() IntrinsicHeight() Expanded() Padding() Also learned how to make if else statements in ListView.builders! 🗣️ In depth summary Today’s main objective was making the vocab page. To do this I used a simple ListView.builder to iterate through the vocab lists. One issue I had was the layout of the vocab. I wanted an equally spaced horizontal layout with a delete button floating at the right. This was a problem because I only knew about the Row() widget. In order to get the layout I wanted, I had to learn about Stack() and IntrinsicHeight() and Padding() and Expanded(). Another thing I ran into was that it crashed when I deleted all the decks or all the vocab. In order to fix this I learned about if else statements to create different widgets based on the conditions! 👣 Next Steps I’m almost ready to ship! I still have to make a few things though: a master vocab deck, and ideally a search bar. If the search bar goes well then I can also add filters for the decks if I decide it’s worth it.
🏯 禅文 Zenwen Day 5: documenting & my favorite feature! (and fixing 1028 issues with my computer) ⌚ TL;DR I added lots of comments to the code so that future me & other people can easily understand the code. Also started adding a cool feature called My Dictionary. 📝 Adding comments (finally) Wanna know something I never do? Add comments. Well at least not until today. Today I spent most of my time doing a well needed cleanup of the codebase, adding comments and making it readable to future me and other people. Since flutter can quickly start looking like a random jumble of widgets, adding these comments really helped me understand exactly what everything is doing and will help others understand as well. 📕 My Dictionary, my favorite feature! I also started working on adding a major QoL improvement, a deck that contains all the vocab you’ve created. Have you ever had a word on the tip of your tongue but just can’t quite remember it? That’s no longer a problem. With My Dictionary, you can open it up and quickly search up that word in just 3 clicks. You can also see how much vocab you have created, which feels amazing when you see how much you’ve learned! 🪲 1028 issues with my computer Don’t ask. I don’t have any answers for you. I checked Lenovo Vantage and now it finally makes sense why my computer struggled to run the file explorer. After a few hours of a well needed scan and fix by Lenovo Smart Performance, my computer now runs (mostly) smoothly once again.
🏯 禅文 Zenwen Day 6 & 7 (I swear that isn’t on purpose) TL;DR Finished My Dictionary; now there’s a master list of all your vocab! Great for if you want to see your progress or just forget a word. Starded working on a search bar! Worked on making my computer less laggy (no time logged for this) The Search Bar What’s the point in being able to make a bunch of decks and vocab if it takes too long to find them? Exactly, there is none. Today I started working on adding a search bar to the header of the app. Surprisingly, the logic behind it is pretty simple. Just iterate through the Maps and Lists . If an item matches your search, add it to a results Map . What I Learned You know those simple, boring headers at the top of basically every app? That’s what us Flutter devs call an AppBar . Apparently, AppBars have multiple parts: leading title (already knew about this one) trailing actions bottom The bottom is what I use for the search bar. Essentially, the bottom is an extension of widgets that are below the title. In order to make it work, you need to give the Scaffold (the parent of the AppBar ) specific details about the extension so that it renders properly. Specifically the height, which can’t be dynamic. 🀄 Since you made it this far Chinese word of the day: 吗 (pronounced “ma”) used to turn a statement into a yes or no question 你喜欢茶: You like tea. 你喜欢茶 吗 : Do you like tea?
🏯 禅文 Zenwen Day 8, SEARCH BAR WORKS (mostly)!!!! Learning Chinese is hard. Zenwen makes it easier. Create infinite decks and vocab and find them easily! Apparently Expanded() widgets can only go in certain other widgets, so I was stuck solving bugs for nearly 45 minutes. Sometimes I question why I like coding. The logic for searching vocab is broken, but that was just me being dumb. Should be easy enough to fix. Will need to do heavy optimizing after I ship because I wrote it in probably the least efficient way possible, but it’s fine for now. Chinese word of the day: 飞机 (fēi jī) Means “airplane” ”这是飞机” = “this is an airplane”
🏯 Zenwen Day 9: everything works! Well, for now, at least. Overall, pretty quick and easy day. Simple bug fixes, simple feature expansions. What I did Fixed logic for when it was searching through My Dictionary for Strings that match the search Switched some 0s to 1s and stuff so it wouldn’t make duplicate search results or have indexing errors Added a search bar to the edit deck page so now you can search from every screen! What this means I’m almost ready to ship! Project works well enough to be tested, GitHub is up to date with commits. All I need to do is make the README and get a live web demo up and running! 🀄 Chinese word of the day 绿茶 (lǜ chá): Green Tea 我喜欢喝绿茶! I like drinking green tea!
🏯 禅文 Zenwen Day 10: EVERYTHING WORKS!!! Finally! What I did during these 44 minutes Long story short, there was an indexing error when a search result wasn’t found. It was supposed to give a message like “no results matched your search”, but instead, it gave a big scary red screen saying “index is supposed to be less than 1: 1”. I had no clue what was wrong. Took a while to figure it out. Turns out I was stupid and trying to do widget.myDictionary.length when I was supposed to do widget.myDictionary["vocab"].length . What’s coming next Ship! Everything is ready. Expect a ship tomorrow if I can set up the demo correctly! 🀄 Chinese word of the day Word: 买 Pronounced: mǎi Example: “我买了筷子。“ - “I bought chopsticks.”
🏯 禅文 Zenwen Day 11: SHIIIIIIIP!!!! Finally! Zenwen is shipped for the first time! (but expect lots more to come) Live demo here: Zenwen Demo , bear in mind all data is temporary and will be lost if you refresh. QoL Improvements Learning languages is no longer tedious. Handle everything you need in 1 place without complications. Supports every language! There are 3 things you can add when creating vocab: character, pronunciation, meaning. This means you could translate Egyptian hieroglyphics to Hindi as a French speaker if you really wanted to. Search for decks, and vocab! Forgot what deck some vocab is in, or just have way too many decks? No worries, just search for it! My Dictionary, all your vocab in 1 place! Simply want to see how much vocab you have or are just skimming through what you know? This is the perfect feature for you. 🐉 Chinese word of the day: 进步: progress, to make progress Pronounced: jìnbù Example: “我有了一点进步”, “I have made a little progress”
Ships:
🏯 禅文 Zenwen Ship #1 Learning Chinese is hard, Zenwen makes it easier. Use the live page here: Zenwen Demo Bear in mind, it’s a demo, so no data is saved. As soon as you reload it’ll be lost. More info on running locally here: Main Repository What even is 禅文 Zenwen? Zenwen is an app to help you learn Chinese, and other languages if you wish. As of this ship, Zenwen is a vocab system designed to work for just about any need a user wants, while simple and easy to use. What was challenging First and foremost, learning Flutter was challenging. Dart is simple enough, but Flutter was something I had never seen before. The second challenge was figuring out an efficient data structure to store the many things users can create. This was challenging because I had to figure out how to store many decks with many vocab, while also being able to sort through them, search them, delete data, and access them quickly. Why I am proud! What makes me proud is that I learned an entire new framework and a lot about data storage that I had previously never touched. Learning this unlocks a whole world of coding opportunities that I’m excited to explore! Another thing I’m proud about is that I’ve learned how to debug better. I have learned how to use print functions usefully as well as things I previously didn’t know would cause errors....
|
1793512364.7197928
|
1793598764.7197928
|
|
43839
|
Tap to Play Arcade Game by @hridhaanjaitly | Stard Tap to Play Arcade Game by @hridhaanjaitly | Stardance...
|
hridhaanjaitly
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-09T16:09:37Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I basically made a mini neon Arcade themed game, while this wasn’t really the goal, what I wanted to do was see what level my skills are at and constantly imporve it while making anything, a website, app or game. So that is how this small project came to life. I myself know a good amount of HTML and for rest I used help from various coding websites like w3 schools and ofcourse google. I also had this nfc keycard of a hotel, which on exploring I realised I can put a link or info of anything on it and customize it. So after making my game, I shortened the link in terms of storage size and put in in the card, making it a tap-to-play game too. It is not much special as the actual project was to test my coding skills, and learn coding and different languages. It turned out good so I decided to ship it out as a project. I didn’t face much challanges as HTML and C++ is rather easy, yes but as I don’t have a laptop and made it on my tablet on github itself, it would lag, and ofcourse the code would get messed up. Some debugging was required too and yeah that is all. That being said please do rate or like or something so I get some stardust. I am in a grave need of a laptop😅😭. In terms of what should you know to better understand, I guess all this is enough but in technical terms all the info is on GitHub and in my READMe for the game. Thank You !", "repo": "https://github.com/HridhaanDaCoder/Hridhaan-s-Arcade", "demo": ""}]...
|
[{"post_id": 41283, "ts": "202 [{"post_id": 41283, "ts": "2026-08-05T12:18:45Z", "hours": 0.6097, "text": "A little arcade game which can be played by my public URL or using a NFC card, I have made the game and all now only integrating it into a NFC is left. That will be in the second part!"}]...
|
Title: Tap to Play Arcade Game by @hridhaanjaitly Title: Tap to Play Arcade Game by @hridhaanjaitly | Stardance
Devlogs:
A little arcade game which can be played by my public URL or using a NFC card, I have made the game and all now only integrating it into a NFC is left. That will be in the second part!
Ships:
I basically made a mini neon Arcade themed game, while this wasn’t really the goal, what I wanted to do was see what level my skills are at and constantly imporve it while making anything, a website, app or game. So that is how this small project came to life. I myself know a good amount of HTML and for rest I used help from various coding websites like w3 schools and ofcourse google. I also had this nfc keycard of a hotel, which on exploring I realised I can put a link or info of anything on it and customize it. So after making my game, I shortened the link in terms of storage size and put in in the card, making it a tap-to-play game too. It is not much special as the actual project was to test my coding skills, and learn coding and different languages. It turned out good so I decided to ship it out as a project. I didn’t face much challanges as HTML and C++ is rather easy, yes but as I don’t have a laptop and made it on my tablet on github itself, it would lag, and ofcourse the code would get messed up. Some debugging was required too and yeah that is all. That being said please do rate or like or something so I get some stardust. I am in a grave need of a laptop😅😭. In terms of what should you know to better understand, I guess all this is enough but in technical terms all the info is on GitHub and in my READMe for the game. Thank You !...
|
1793512365.95463
|
1793598765.95463
|
|
71047
|
serialscope by @threatsentinels | Stardance
|
threatsentinels
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-27T04:43:32Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I got tired of the Arduino serial plotter freezing and losing data whenever I wanted to look back at something, so I rebuilt my serial monitor as a proper scope-style tool. The part I’m happiest with is the plumbing: the port gets read on its own thread, pausing the display only freezes what you’re looking at while recording keeps going, and anything that gets dropped shows up in a counter instead of vanishing quietly. I also added a seeded simulator so I could test without a board plugged in, and that caught a real bug in how recordings handle a failed disk write. The tests caught that one; the GUI I could only check once I ran it on Windows myself. Next I want a proper screenshot and an icon, and maybe binary protocol support.", "repo": "https://github.com/threatsentinels/SerialScope", "demo": "https://github.com/threatsentinels/SerialScope/releases/tag/main"}]...
|
[{"post_id": 83166, "ts": "202 [{"post_id": 83166, "ts": "2026-10-27T03:30:26Z", "hours": 1.0242, "text": "DEVLOG 4 I have now almost completed the project , In the last hour I wrote some tests and little bit of functions . I still need to fix some bugs inside logs.py ."}, {"post_id": 82923, "ts": "2026-10-26T08:29:09Z", "hours": 1.3961, "text": "DEVLOG 3 In the last 1 hr 23 min I worked on the session feature . This feature will help the users to record their session and store it for future reference ."}, {"post_id": 82552, "ts": "2026-10-25T06:43:05Z", "hours": 2.2297, "text": "DEVLOG 2 In the last 2 hours , I worked on the colour schemes , UI/UX of the project . Main issues in other serial monitors are the Bad UI/UX so i am trying to make the user interface possible . This is the greyscale theme , i will add options for multiple light and dark themes ."}, {"post_id": 82179, "ts": "2026-10-24T05:36:21Z", "hours": 1.2833, "text": "Devlog 1 : I am working one a oscilloscope type serial monitor for hardware and embedded projects . Using arduino ide for system monitoring is pain so i have decided to make one analysis software for hardware where users can record , pause and play the readings , analyze them and export them for future reference . I have written a basic function to register channels and establish connection to hardware using usb ports and logging setup function ."}]...
|
Title: serialscope by @threatsentinels | Stardance Title: serialscope by @threatsentinels | Stardance
Devlogs:
Devlog 1 : I am working one a oscilloscope type serial monitor for hardware and embedded projects . Using arduino ide for system monitoring is pain so i have decided to make one analysis software for hardware where users can record , pause and play the readings , analyze them and export them for future reference . I have written a basic function to register channels and establish connection to hardware using usb ports and logging setup function .
DEVLOG 2 In the last 2 hours , I worked on the colour schemes , UI/UX of the project . Main issues in other serial monitors are the Bad UI/UX so i am trying to make the user interface possible . This is the greyscale theme , i will add options for multiple light and dark themes .
DEVLOG 3 In the last 1 hr 23 min I worked on the session feature . This feature will help the users to record their session and store it for future reference .
DEVLOG 4 I have now almost completed the project , In the last hour I wrote some tests and little bit of functions . I still need to fix some bugs inside logs.py .
Ships:
I got tired of the Arduino serial plotter freezing and losing data whenever I wanted to look back at something, so I rebuilt my serial monitor as a proper scope-style tool. The part I’m happiest with is the plumbing: the port gets read on its own thread, pausing the display only freezes what you’re looking at while recording keeps going, and anything that gets dropped shows up in a counter instead of vanishing quietly. I also added a seeded simulator so I could test without a board plugged in, and that caught a real bug in how recordings handle a failed disk write. The tests caught that one; the GUI I could only check once I ran it on Windows myself. Next I want a proper screenshot and an icon, and maybe binary protocol support....
|
1793512367.1665382
|
1793598767.1665382
|
|
71913
|
webos by @kpk22128 | Stardance
|
kpk22128
|
1
|
1.54
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T15:09:39Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built StudentOS, a lightweight macOS-style study dashboard running directly in the browser using pure HTML, CSS, and vanilla JavaScript (no React, build tools, or external libraries). It includes an academic class timetable, a lecture notes app with local storage persistence, a working calculator, a 25-minute Pomodoro study timer, a semester GPA tracker, desktop widgets, and a simple mock bash terminal. The hardest part was implementing the window dragging and z-index layering from scratch. Early on, moving the mouse too fast caused the cursor to slip off the title bar, so I had to bind the mousemove and mouseup listeners to the document instead of the window header. Getting the calculator arithmetic and the auto-saving notes to work reliably without external libraries also took some trial and error. I am most proud that the whole system runs locally from static files with zero dependencies. Every window can be dragged and layered independently, and notes and sticky memos stay saved across browser refreshes. How to test it: Click the buttons on the bottom dock to open apps (Notes, Planner, Calc, Terminal, GPA, Settings). Click and drag the title bar of any window to move it around your desktop. Click [X] to close a window. In Notes, write a note and refresh the page to see it persist. Open the Terminal and type ‘help’, ‘ls’, ‘whoami’, or ‘date’. Best experienced on desktop/laptop screens in Chrome, Edge, or Firefox.", "repo": "https://github.com/priyanshusingh1234/web-os", "demo": "https://priyanshusingh1234.github.io/web-os/"}]...
|
[{"post_id": 84371, "ts": "202 [{"post_id": 84371, "ts": "2026-10-29T15:42:16Z", "hours": 0.2731, "text": "added settings"}, {"post_id": 84366, "ts": "2026-10-29T15:25:11Z", "hours": 0.2703, "text": "added calculator"}, {"post_id": 84357, "ts": "2026-10-29T15:05:27Z", "hours": 1.2303, "text": "I was working locally and finally finished"}]...
|
Title: webos by @kpk22128 | Stardance
Devlogs:
I Title: webos by @kpk22128 | Stardance
Devlogs:
I was working locally and finally finished
added calculator
added settings
Ships:
I built StudentOS, a lightweight macOS-style study dashboard running directly in the browser using pure HTML, CSS, and vanilla JavaScript (no React, build tools, or external libraries). It includes an academic class timetable, a lecture notes app with local storage persistence, a working calculator, a 25-minute Pomodoro study timer, a semester GPA tracker, desktop widgets, and a simple mock bash terminal. The hardest part was implementing the window dragging and z-index layering from scratch. Early on, moving the mouse too fast caused the cursor to slip off the title bar, so I had to bind the mousemove and mouseup listeners to the document instead of the window header. Getting the calculator arithmetic and the auto-saving notes to work reliably without external libraries also took some trial and error. I am most proud that the whole system runs locally from static files with zero dependencies. Every window can be dragged and layered independently, and notes and sticky memos stay saved across browser refreshes. How to test it: Click the buttons on the bottom dock to open apps (Notes, Planner, Calc, Terminal, GPA, Settings). Click and drag the title bar of any window to move it around your desktop. Click [X] to close a window. In Notes, write a note and refresh the page to see it persist. Open the Terminal and type ‘help’, ‘ls’, ‘whoami’, or ‘date’. Best experienced on desktop/laptop screens in Chrome, Edge, or Firefox....
|
1793512373.661141
|
1793598773.661141
|
|
70319
|
Esp32 Keychain by @nguyenhuuphuongnha | Stardance
|
nguyenhuuphuongnha
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Esp32 Keychain by @nguyenhuuphuongnha | Sta Title: Esp32 Keychain by @nguyenhuuphuongnha | Stardance...
|
1792993974.7267714
|
1793598774.7267714
|
|
70321
|
Brain Tumor Detectionnn by @akanksha | Stardance
|
akanksha
|
0
|
0.97
|
0
|
[]
|
[{"post_id": 80649, "ts": "202 [{"post_id": 80649, "ts": "2026-10-18T12:05:54Z", "hours": 0.9697, "text": "Analysed Dataset Format Architecture"}]...
|
Title: Brain Tumor Detectionnn by @akanksha | Star Title: Brain Tumor Detectionnn by @akanksha | Stardance
Devlogs:
Analysed Dataset Format Architecture...
|
1792993976.4505124
|
1793598776.4505124
|
|
70322
|
My very own WebOS by @ana-the-bee | Stardance
|
ana-the-bee
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @ana-the-bee | Stardan Title: My very own WebOS by @ana-the-bee | Stardance...
|
1792993977.7187157
|
1793598777.7187157
|
|
70325
|
Kibo - Cutie Desktop Pet by @xtanmay_09 | Stardanc Kibo - Cutie Desktop Pet by @xtanmay_09 | Stardance...
|
xtanmay_09
|
0
|
1.11
|
0
|
[]
|
[{"post_id": 80803, "ts": "202 [{"post_id": 80803, "ts": "2026-10-18T20:37:32Z", "hours": 1.1106, "text": "KIbo’s finally moving😎 I set uped the Godot scene, imported Pokémon sprite “Pancham”, created walking and idle positions till now.. After lots of effort, finally got it moving across my lappy.. Next, I will improve the walking directions, add mouse dragging, and give the pet more interactive behaviors. (WORK IN PROGRESS ) Lessgoo…"}]...
|
Title: Kibo - Cutie Desktop Pet by @xtanmay_09 | S Title: Kibo - Cutie Desktop Pet by @xtanmay_09 | Stardance
Devlogs:
KIbo’s finally moving😎 I set uped the Godot scene, imported Pokémon sprite “Pancham”, created walking and idle positions till now.. After lots of effort, finally got it moving across my lappy.. Next, I will improve the walking directions, add mouse dragging, and give the pet more interactive behaviors. (WORK IN PROGRESS ) Lessgoo…...
|
1792993979.4069664
|
1793598779.4069664
|
|
70326
|
Smart LED Pixel Badge by @kobieGG | Stardance
|
kobieGG
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Smart LED Pixel Badge by @kobieGG | Stardan Title: Smart LED Pixel Badge by @kobieGG | Stardance...
|
1792993980.275676
|
1793598780.275676
|
|
70328
|
nodupe by @deadbeef404 | Stardance
|
deadbeef404
|
0
|
0.41
|
0
|
[]
|
[{"post_id": 80664, "ts": "202 [{"post_id": 80664, "ts": "2026-10-18T13:12:20Z", "hours": 0.4122, "text": "I have completed the extension and it works perfectly. Now I will just test it to find if there are any problems or any thing I should add to this to make it better."}]...
|
Title: nodupe by @deadbeef404 | Stardance
Devlogs Title: nodupe by @deadbeef404 | Stardance
Devlogs:
I have completed the extension and it works perfectly. Now I will just test it to find if there are any problems or any thing I should add to this to make it better....
|
1792993981.1530242
|
1793598781.1530242
|
|
70329
|
My very own WebOS by @jiaan_ahuja2929 | Stardance
|
jiaan_ahuja2929
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @jiaan_ahuja2929 | Sta Title: My very own WebOS by @jiaan_ahuja2929 | Stardance...
|
1792993982.0153215
|
1793598782.0153215
|
|
70330
|
Build stark varg by @youriplantinga | Stardance
|
youriplantinga
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Build stark varg by @youriplantinga | Stard Title: Build stark varg by @youriplantinga | Stardance...
|
1792993982.9234023
|
1793598782.9234023
|
|
15698
|
Health/productivity desk assistant by @zmalkani | Health/productivity desk assistant by @zmalkani | Stardance...
|
zmalkani
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T16:18:21Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a hackpad that will be a desk assistant. To be a good student athlete, balancing schoolwork and practice/nutrition/etc is crucial. This device will have built-in distraction-free pomodoro study sessions, as well as food/water reminders to stay fuelled while focused in on schoolwork.", "repo": "https://github.com/zmalkani/health-productivity-desk-assistant", "demo": ""}]...
|
[{"post_id": 6493, "ts": "2026 [{"post_id": 6493, "ts": "2026-06-10T22:14:30Z", "hours": 2.2722, "text": "I finished my fusion model for the case, as well as my PCB design for my hackpad. Uses 3 switches, an encoder, and an OLED."}]...
|
Title: Health/productivity desk assistant by @zmal Title: Health/productivity desk assistant by @zmalkani | Stardance
Devlogs:
I finished my fusion model for the case, as well as my PCB design for my hackpad. Uses 3 switches, an encoder, and an OLED.
Ships:
I made a hackpad that will be a desk assistant. To be a good student athlete, balancing schoolwork and practice/nutrition/etc is crucial. This device will have built-in distraction-free pomodoro study sessions, as well as food/water reminders to stay fuelled while focused in on schoolwork....
|
1793512396.6400025
|
1793598796.6400025
|
|
23490
|
ACCESSORY HACKPAB! by @TXJ_PROGRAMER | Stardance
|
TXJ_PROGRAMER
|
1
|
0.94
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T07:31:22Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made the pcb for my hackpab i will make the case after i get the parts and the exact mesurements.", "repo": "https://github.com/srinj-ai/extra-keypay", "demo": ""}]...
|
[{"post_id": 20653, "ts": "202 [{"post_id": 20653, "ts": "2026-07-02T09:35:31Z", "hours": 0.9367, "text": "DevLog 3 Added the case i add the new case"}, {"post_id": 15653, "ts": "2026-06-25T13:35:01Z", "hours": 0.3892, "text": "Devlog#2 : A PCB hello every one this time i made the PCB schema"}, {"post_id": 15083, "ts": "2026-06-24T14:47:41Z", "hours": 0.3369, "text": "dev log #1 created the scamatic i created the scamatic for my project."}]...
|
Title: ACCESSORY HACKPAB! by @TXJ_PROGRAMER | Star Title: ACCESSORY HACKPAB! by @TXJ_PROGRAMER | Stardance
Devlogs:
dev log #1 created the scamatic i created the scamatic for my project.
Devlog#2 : A PCB hello every one this time i made the PCB schema
DevLog 3 Added the case i add the new case
Ships:
i made the pcb for my hackpab i will make the case after i get the parts and the exact mesurements....
|
1793512401.2914164
|
1793598801.2914164
|
|
10947
|
legacytide by @simonproyt | Stardance
|
simonproyt
|
1
|
3.2
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-07T19:54:49Z", "hours": 2.0, "multiplier": 3.47, "payout": 7, "blessing": "neutral", "text": "I made a tidal client for legacy android devices. It was hard because old android and by extension blackberry 10 do not support modern tls libraries and they need to be backported.", "repo": "https://github.com/simonproyt/legacytide", "demo": "https://user-cdn.hackclub-assets.com/019f2493-4118-7486-9d28-6df0569ba19e/PXL_20260607_154311711%20(1).mp4"}]...
|
[{"post_id": 4948, "ts": "2026 [{"post_id": 4948, "ts": "2026-06-08T16:06:20Z", "hours": 0.9003, "text": "We added a download queue system to the app for better dl management"}, {"post_id": 4522, "ts": "2026-06-07T21:14:29Z", "hours": 0.2953, "text": "I added the queue system now and moved on to adding offline playback support"}, {"post_id": 4465, "ts": "2026-06-07T19:51:49Z", "hours": 1.7022, "text": "We managed to make playback home screen and most of the other stuff hooked up"}, {"post_id": 4191, "ts": "2026-06-07T12:40:45Z", "hours": 0.3592, "text": "I got TLS 1.3 finally working on android 4.3"}]...
|
Title: legacytide by @simonproyt | Stardance
Devl Title: legacytide by @simonproyt | Stardance
Devlogs:
I got TLS 1.3 finally working on android 4.3
We managed to make playback home screen and most of the other stuff hooked up
I added the queue system now and moved on to adding offline playback support
We added a download queue system to the app for better dl management
Ships:
I made a tidal client for legacy android devices. It was hard because old android and by extension blackberry 10 do not support modern tls libraries and they need to be backported....
|
1793512402.5103564
|
1793598802.5103564
|
|
5347
|
Equiplane by @qqxzew | Stardance
|
qqxzew
|
1
|
14.0
|
217
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T20:28:36Z", "hours": 14.0, "multiplier": 15.16, "payout": 217, "blessing": "neutral", "text": "I made EquipLane, an industrial maintenance ticketing system where clients can report equipment problems, engineers can manage assigned repair tasks, and admins can control the whole maintenance workflow. The hardest part was coming up with the idea and building the project from scratch without much previous experience. I had to figure out the structure, database, roles, authentication, and the whole workflow step by step. I’m most proud that I was able to finish a working project and also make the GitHub repository look organized and well documented. This is my first major portfolio project, so I’m proud that it turned into something complete. To test it, just open the project link and log in using the demo credentials from the README.", "repo": "https://github.com/qqxzew/equiplane", "demo": "https://klidnapraha.fun/login.php"}]...
|
[{"post_id": 9458, "ts": "2026 [{"post_id": 9458, "ts": "2026-06-15T20:22:33Z", "hours": 0.5267, "text": "have add deployment😀"}, {"post_id": 9388, "ts": "2026-06-15T18:47:23Z", "hours": 1.4058, "text": "What I did: Wrapped up the EquipLane project and prepared it for my portfolio. I containerized the entire application using Docker and Docker Compose, linking a PHP 8.2 server with a MariaDB database so the whole environment can be spun up with a single command. I also set up a CI pipeline using GitHub Actions to automatically lint and check PHP syntax on every push. Finally, I generated a complete Entity-Relationship Diagram (ERD) to visualize the database architecture and wrote a comprehensive README explaining the core mechanics, security features, and the PRG pattern I implemented. The struggles: I definitely reached the limit of what makes sense to build with pure procedural PHP. Refactoring and maintaining this architecture showed me exactly why OOP and modern frameworks exist. It was a great learning experience for understanding the fundamentals, but I am definitely ready to move on to Nette for my next hackathon projects."}, {"post_id": 8946, "ts": "2026-06-14T21:29:13Z", "hours": 3.6275, "text": "What I did: Massive architectural and security overhaul today. I completely rewrote the form submission logic to follow the Post-Redirect-Get (PRG) pattern, integrating session-based Flash messages and strict CSRF token validation across all endpoints. I also implemented “Sticky Forms” so users never lose their detailed text inputs if a validation error occurs. For the administration side, I built full CRUD interfaces to manage personnel roles, corporate clients, and the equipment registry without needing direct database access. Finally, I wrote SQL-level pagination for the main tickets table to keep the application fast and scalable as data grows. The struggles: I finally switched from VS Code to PhpStorm today and I am just in shock at how insanely cool and powerful it is. It instantly highlighted database schema mismatches I missed and forced me to write much cleaner code, though getting used to its strict warnings definitely took some time."}, {"post_id": 6933, "ts": "2026-06-11T16:52:18Z", "hours": 2.3361, "text": "What I did: Expanded the engineer’s resource reporting logic. When resolving a ticket, engineers are now required to input the exact hours spent and the cost of replacement parts. Built a financial calculation module on the backend that automatically aggregates these costs, applies the Czech 21% VAT (DPH), and displays a detailed invoice summary to admins and clients. Also implemented a critical backup request feature: engineers can now submit a “Request Backup” flag along with a specific text reason if they encounter blocking issues on-site. Admins immediately see an approval panel to either accept the request (and assign additional help) or reject it. The struggles: I had no idea for frontend"}, {"post_id": 5086, "ts": "2026-06-08T19:30:11Z", "hours": 1.7997, "text": "Built the ticket creation page with role protection. Clients can now select their equipment, set priorities, and safely submit maintenance requests to the database via PDO prepared statements. The struggles: Broken the SQL query and html :>"}, {"post_id": 4452, "ts": "2026-06-07T19:34:13Z", "hours": 2.2319, "text": "Milestone: From Static UI to Secure Multi-User App What I did: Since the last update on the UI dashboard, I have completely transformed the project from a static frontend into a secure, functional multi-user system using native PHP and MariaDB. Authentication & Session Management: Built a backend login system from scratch. Implemented secure password hashing using bcrypt. Set up native PHP sessions to track users across pages. Security Guards & Logout: Created a centralized guard script to prevent unauthorized URI access. If a user isn’t logged in, they are killed and redirected to the login page. Added a full session-destroying logout mechanism. Role-Based Access Control (RBAC): Differentiated the system for Admins, Engineers, and Clients. The UI now dynamically hides navigation links based on roles, and the backend explicitly throws a 403 Forbidden error if a non-admin tries to access the core control panel. Profile & Password Updates: Built a personal profile page that fetches current user details and handles password modification with server-side validation. The struggles: Ran into multiple syntax walls, including incorrect sql, forgotten POST block brackets, and a lot of typo mismatches. Also had to deal with MariaDB unique constraint violations during database seed testing, which I resolved by writing a structured TRUNCATE routine to clear tables before fresh seeding. Now the app actually feels like a secure industrial tool rather than just a Tailwind template."}, {"post_id": 1647, "ts": "2026-06-03T19:33:34Z", "hours": 0.3758, "text": "After getting the database connected, I built the main dashboard U, also I dont have any idea for design after hard day so I asked AI about help…"}, {"post_id": 1619, "ts": "2026-06-03T19:08:20Z", "hours": 1.1228, "text": "Honestly, it is my first time building a real website in PHP, and I realized I had completely forgotten most of my HTML and CSS. Today I successfully parsed the environment variables, securely connected the MariaDB database via PDO, and built a clean industrial dashboard layout using Tailwind CSS. EquipLane is finally coming to life."}, {"post_id": 1002, "ts": "2026-06-02T19:45:55Z", "hours": 0.9236, "text": "Today I set up the initial structure for Equiplane, an industrial equipment maintenance workflow system I prepared the first part of the database schema for the project, including the base tables for users and companies. The goal is to build a system where clients can report equipment failures, admins can assign engineers, and engineers can manage repair tickets."}]...
|
Title: Equiplane by @qqxzew | Stardance
Devlogs:
Title: Equiplane by @qqxzew | Stardance
Devlogs:
Today I set up the initial structure for Equiplane, an industrial equipment maintenance workflow system I prepared the first part of the database schema for the project, including the base tables for users and companies. The goal is to build a system where clients can report equipment failures, admins can assign engineers, and engineers can manage repair tickets.
Honestly, it is my first time building a real website in PHP, and I realized I had completely forgotten most of my HTML and CSS. Today I successfully parsed the environment variables, securely connected the MariaDB database via PDO, and built a clean industrial dashboard layout using Tailwind CSS. EquipLane is finally coming to life.
After getting the database connected, I built the main dashboard U, also I dont have any idea for design after hard day so I asked AI about help…
Milestone: From Static UI to Secure Multi-User App What I did: Since the last update on the UI dashboard, I have completely transformed the project from a static frontend into a secure, functional multi-user system using native PHP and MariaDB. Authentication & Session Management: Built a backend login system from scratch. Implemented secure password hashing using bcrypt. Set up native PHP sessions to track users across pages. Security Guards & Logout: Created a centralized guard script to prevent unauthorized URI access. If a user isn’t logged in, they are killed and redirected to the login page. Added a full session-destroying logout mechanism. Role-Based Access Control (RBAC): Differentiated the system for Admins, Engineers, and Clients. The UI now dynamically hides navigation links based on roles, and the backend explicitly throws a 403 Forbidden error if a non-admin tries to access the core control panel. Profile & Password Updates: Built a personal profile page that fetches current user details and handles password modification with server-side validation. The struggles: Ran into multiple syntax walls, including incorrect sql, forgotten POST block brackets, and a lot of typo mismatches. Also had to deal with MariaDB unique constraint violations during database seed testing, which I resolved by writing a structured TRUNCATE routine to clear tables before fresh seeding. Now the app actually feels like a secure industrial tool rather than just a Tailwind template.
Built the ticket creation page with role protection. Clients can now select their equipment, set priorities, and safely submit maintenance requests to the database via PDO prepared statements. The struggles: Broken the SQL query and html :>
What I did: Expanded the engineer’s resource reporting logic. When resolving a ticket, engineers are now required to input the exact hours spent and the cost of replacement parts. Built a financial calculation module on the backend that automatically aggregates these costs, applies the Czech 21% VAT (DPH), and displays a detailed invoice summary to admins and clients. Also implemented a critical backup request feature: engineers can now submit a “Request Backup” flag along with a specific text reason if they encounter blocking issues on-site. Admins immediately see an approval panel to either accept the request (and assign additional help) or reject it. The struggles: I had no idea for frontend
What I did: Massive architectural and security overhaul today. I completely rewrote the form submission logic to follow the Post-Redirect-Get (PRG) pattern, integrating session-based Flash messages and strict CSRF token validation across all endpoints. I also implemented “Sticky Forms” so users never lose their detailed text inputs if a validation error occurs. For the administration side, I built full CRUD interfaces to manage personnel roles, corporate clients, and the equipment registry without needing direct database access. Finally, I wrote SQL-level pagination for the main tickets table to keep the application fast and scalable as data grows. The struggles: I finally switched from VS Code to PhpStorm today and I am just in shock at how insanely cool and powerful it is. It instantly highlighted database schema mismatches I missed and forced me to write much cleaner code, though getting used to its strict warnings definitely took some time.
What I did: Wrapped up the EquipLane project and prepared it for my portfolio. I containerized the entire application using Docker and Docker Compose, linking a PHP 8.2 server with a MariaDB database so the whole environment can be spun up with a single command. I also set up a CI pipeline using GitHub Actions to automatically lint and check PHP syntax on every push. Finally, I generated a complete Entity-Relationship Diagram (ERD) to visualize the database architecture and wrote a comprehensive README explaining the core mechanics, security features, and the PRG pattern I implemented. The struggles: I definitely reached the limit of what makes sense to build with pure procedural PHP. Refactoring and maintaining this architecture showed me exactly why OOP and modern frameworks exist. It was a great learning experience for understanding the fundamentals, but I am definitely ready to move on to Nette for my next hackathon projects.
have add deployment😀
Ships:
I made EquipLane, an industrial maintenance ticketing system where clients can report equipment problems, engineers can manage assigned repair tasks, and admins can control the whole maintenance workflow. The hardest part was coming up with the idea and building the project from scratch without much previous experience. I had to figure out the structure, database, roles, authentication, and the whole workflow step by step. I’m most proud that I was able to finish a working project and also make the GitHub repository look organized and well documented. This is my first major portfolio project, so I’m proud that it turned into something complete. To test it, just open the project link and log in using the demo credentials from the README....
|
1793512407.2289076
|
1793598807.2289076
|
|
18831
|
Taxicab by @aesincs | Stardance
|
aesincs
|
1
|
6.48
|
22
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T02:39:57Z", "hours": 2.0, "multiplier": 9.65, "payout": 22, "blessing": "neutral", "text": "A friend and I recently became interested the 15-puzzle. It’s simple to solve, but there’s surprising depth to solving it efficiently and quickly. Unfortunately, existing apps for the 15-puzzle are slow and filled with advertisements. Taxicab on the other hand is a 15-puzzle for speedrunners. In addition to a stopwatch and color-coded design, it uses hovering and dragging as input methods as opposed to clicking or tapping, which is significantly faster. This first ship is the base experience needed for speedrunners. Future versions will incorporate history, statistics, multiplayer, and more.", "repo": "https://github.com/aesincs/taxicab", "demo": "https://taxicab.surge.sh"}]...
|
[{"post_id": 12113, "ts": "202 [{"post_id": 12113, "ts": "2026-06-19T19:44:20Z", "hours": 0.4014, "text": "Fixed a particularly nasty bug where dragging the blank over the drag handle would send it to the first (top left) square. Even though the drag handle isn’t a tile, it was considered part of the board as it overlayed the tiles. The function responsible for identifying the tile to swap correctly returned undefined when dragging over the handle, but JavaScript’s type coercion converted this to 0 , resulting in the blank moving to the 0th (top left) position. The fix is rejecting the swap when the identification function returns undefined ."}, {"post_id": 12010, "ts": "2026-06-19T16:24:37Z", "hours": 0.4767, "text": "Replaced the pinch and scroll controls for resizing with a drag handle. It’s more conventional and precise."}, {"post_id": 11353, "ts": "2026-06-18T15:48:40Z", "hours": 1.0558, "text": "Wrote resizing between an 8-puzzle and a 35-puzzle. Resizing is wired to scrolling and pinch-to-zoom. The tiles attempt to remain consistent in size but shrink to avoid overflowing off the page. The positioning of the word mark and indicators updates correspondingly. More colors were added for increased groups at larger sizes. The solvability check now works for even and odd sizes. Records are stored per-size."}, {"post_id": 11115, "ts": "2026-06-18T05:44:27Z", "hours": 0.2831, "text": "Wrote walk support, which automatically slides tiles to support swapping from any tile rather than just those adjacent to the blank."}, {"post_id": 11028, "ts": "2026-06-18T01:49:55Z", "hours": 0.5811, "text": "Rewrote the rendering system for performance. Previously, tiles were arranged in a grid and moved synchronously. Now, tiles are positioned absolutely and updated within an animation frame loop."}, {"post_id": 10931, "ts": "2026-06-17T22:17:36Z", "hours": 0.7322, "text": "Wrote records for the shortest time and lowest amount of moves taken to solve. Records are positioned below the tiles and persist across sessions. When a new record is achieved, the corresponding indicator flashes."}, {"post_id": 10350, "ts": "2026-06-17T01:07:47Z", "hours": 0.585, "text": "Wrote a manifest for web application installation."}, {"post_id": 9926, "ts": "2026-06-16T13:18:05Z", "hours": 0.3667, "text": "Lots of polishing for the README . Also adjusted the deployment configuration for lighter payloads."}, {"post_id": 9666, "ts": "2026-06-16T02:26:30Z", "hours": 0.2586, "text": "Wired the shuffle function to the screen when solved, so it’s easy to continue. Also wrote the watch and move counter."}, {"post_id": 9610, "ts": "2026-06-16T00:29:11Z", "hours": 0.3667, "text": "Wired the shuffle function to the wordmark. Input now freezes on solve."}, {"post_id": 9587, "ts": "2026-06-15T23:38:32Z", "hours": 0.4, "text": "Wrote the swap function and wired it to the pointer. Hovering over a tile adjacent to the blank swaps it with the blank."}, {"post_id": 9237, "ts": "2026-06-15T14:45:53Z", "hours": 0.2667, "text": "Wrote the wordmark for personality. The 15-puzzle’s called “Taxicab” since: Algorithms used to solve the 15-puzzle optimally involve the Taxicab (or Manhattan) distance. The 15-puzzle was invented by Noyes Palmer Chapman, who served as the mailman for the town of Canastota in New York."}, {"post_id": 9070, "ts": "2026-06-15T04:30:50Z", "hours": 0.3, "text": "Wrote the shuffle() . It’s random and checked for solvability using inversions. The number of inversions must be even since this is a 15-puzzle as opposed to a 8-puzzle or 24-puzzle."}, {"post_id": 9040, "ts": "2026-06-15T02:51:18Z", "hours": 0.4333, "text": "Wrote the favicon.svg and colored and numbered tiles. The favicon is a taxicab symbol made up of squares and matches the tiles’ colors."}, {"post_id": 8982, "ts": "2026-06-14T23:22:13Z", "hours": 0.2667, "text": "Wrote the README , LICENSE , and an initial index.html ."}]...
|
Title: Taxicab by @aesincs | Stardance
Devlogs:
W Title: Taxicab by @aesincs | Stardance
Devlogs:
Wrote the README , LICENSE , and an initial index.html .
Wrote the favicon.svg and colored and numbered tiles. The favicon is a taxicab symbol made up of squares and matches the tiles’ colors.
Wrote the shuffle() . It’s random and checked for solvability using inversions. The number of inversions must be even since this is a 15-puzzle as opposed to a 8-puzzle or 24-puzzle.
Wrote the wordmark for personality. The 15-puzzle’s called “Taxicab” since: Algorithms used to solve the 15-puzzle optimally involve the Taxicab (or Manhattan) distance. The 15-puzzle was invented by Noyes Palmer Chapman, who served as the mailman for the town of Canastota in New York.
Wrote the swap function and wired it to the pointer. Hovering over a tile adjacent to the blank swaps it with the blank.
Wired the shuffle function to the wordmark. Input now freezes on solve.
Wired the shuffle function to the screen when solved, so it’s easy to continue. Also wrote the watch and move counter.
Lots of polishing for the README . Also adjusted the deployment configuration for lighter payloads.
Wrote a manifest for web application installation.
Wrote records for the shortest time and lowest amount of moves taken to solve. Records are positioned below the tiles and persist across sessions. When a new record is achieved, the corresponding indicator flashes.
Rewrote the rendering system for performance. Previously, tiles were arranged in a grid and moved synchronously. Now, tiles are positioned absolutely and updated within an animation frame loop.
Wrote walk support, which automatically slides tiles to support swapping from any tile rather than just those adjacent to the blank.
Wrote resizing between an 8-puzzle and a 35-puzzle. Resizing is wired to scrolling and pinch-to-zoom. The tiles attempt to remain consistent in size but shrink to avoid overflowing off the page. The positioning of the word mark and indicators updates correspondingly. More colors were added for increased groups at larger sizes. The solvability check now works for even and odd sizes. Records are stored per-size.
Replaced the pinch and scroll controls for resizing with a drag handle. It’s more conventional and precise.
Fixed a particularly nasty bug where dragging the blank over the drag handle would send it to the first (top left) square. Even though the drag handle isn’t a tile, it was considered part of the board as it overlayed the tiles. The function responsible for identifying the tile to swap correctly returned undefined when dragging over the handle, but JavaScript’s type coercion converted this to 0 , resulting in the blank moving to the 0th (top left) position. The fix is rejecting the swap when the identification function returns undefined .
Ships:
A friend and I recently became interested the 15-puzzle. It’s simple to solve, but there’s surprising depth to solving it efficiently and quickly. Unfortunately, existing apps for the 15-puzzle are slow and filled with advertisements. Taxicab on the other hand is a 15-puzzle for speedrunners. In addition to a stopwatch and color-coded design, it uses hovering and dragging as input methods as opposed to clicking or tapping, which is significantly faster. This first ship is the base experience needed for speedrunners. Future versions will incorporate history, statistics, multiplayer, and more....
|
1793512413.970039
|
1793598813.970039
|
|
4804
|
Universal Civilization Sim by @Niamh | Stardance
|
Niamh
|
1
|
17.0
|
145
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T00:15:30Z", "hours": 17.0, "multiplier": 10.31, "payout": 145, "blessing": "neutral", "text": "UniCivSim This is my first ship and I’m excited. This is UniCivSim short for Universal Civilization Simulation (Genius name I know), it’s meant to approximate dark forest theory, which is a theory of how interstellar civilisations interact based in game theory and it ends with claiming that civilisation have two options their either Destroy any other civilisation they encounter Hide from all other civilisations The main aspect of this that I couldn’t approximate is information. In dark forest theory lack of information is what means the benevolent civilisations are better off hiding then going out searching for others like then. In my civilisation simulator they have the benefit of perfect information, when two civs meet their interaction is instantly determined by their behaviour. This leads to an interestingly different conclusion, the simulations always end with only benevolent empires remaining which paints quote a hopeful picture of the far future. Anyway I hope you enjoy playing around with the factors and thank you for rating my project.", "repo": "https://github.com/NiamhGrimesMcDonough/UniCivSim", "demo": "https://github.com/NiamhGrimesMcDonough/UniCivSim/releases/tag/Release"}]...
|
[{"post_id": 20401, "ts": "202 [{"post_id": 20401, "ts": "2026-07-02T00:04:08Z", "hours": 4.1308, "text": "V1.0 ON MY CIVILIZATION SIMULATOR! It’s been a while since I posted a devlog on this project. I’ve been working on getting this to a minimum viable product for release so that’s bug fixing, core features and packaging. Features More complex civilisation behaviour Improved settings screen Full screen Notes Honestly my heart was never really in this project, I was mainly trying to build the courage to work on hardware which I think I’ve secured (You can hopefully expect some rocketry based stuff from me in future) but I have done my best to build something I can be proud of."}, {"post_id": 17011, "ts": "2026-06-27T16:39:05Z", "hours": 4.9925, "text": "V0.6 on my Civilization Simulator On the latest release we now have a settings menu that allows you to adjust the factors affecting the simulation. New Features A settings menu that launches on startup and allows you to adjust the simulation. A text file that stores the variables for easy editing Planned Features Implement more behaviors for civilizations encountering one another based off of more varied factors such as benevolence, malevolence and desperation Clean up UI and add a setting menu to tweak the factors of the simulation Add dialogue elements to easier understand what is going on Package into an exe application One step closer to first ship!"}, {"post_id": 12197, "ts": "2026-06-19T22:12:23Z", "hours": 4.0464, "text": "V0.5 on my Civilization Simulator In this latest version we now have civilizations that are spawned randomly based on the variables for the Drake equation The average rate of star formation in our galaxy The fraction of those stars that have planets The average number of planets that could support life that actually develop life at some point. The fraction of planets that develop life that go on the develop intelligent life The fraction of civilizations that develop a technology that releases detectable signs of their existence into space The length of time for which such civilizations release detectable signal into space. In this implementation we don’t use the rate of star formation as we already decide seperatly how many stars we will include in our simulation. Current Features We can create a randomly generated star map in a window We can create civilizations in some of those stars based off of the drake equation We can have those civilizations expand at a factor of the speed of light accelerating and related to their level of technology We can have those civilizations interact in a way that is loosely based on dark forest theory Planned Features Implement more behaviours for civilizations encountering one another based off of more varied factors such as benevolance, malevolance and desperation Clean up UI and add a setting menu to tweak the factors of the simulation Add dialogue elements to easier understand what is going on Package into an exe application"}, {"post_id": 9550, "ts": "2026-06-15T22:34:19Z", "hours": 2.1931, "text": "I reprogrammed the rendering to go from tkinter to pygame, this will be a better basis for future functionality. The plan currently is to keep it simple so, when generating a star we’ll run odds for whether there’s a civilization there based off your options for the drake equation. From there we’ll spawn a sprite that expands at some factor of the speed of light, when it collides with another sprite we’ll run a random chance at first we’ll base this fully off dark forest theory so they’ll always destroy each other, which destroys the other will depend on age and a randomly determined factor called desperation. Once I have the basic system working I want to add more complex behaviors where civilizations can merge or co-exist✨"}, {"post_id": 2455, "ts": "2026-06-04T23:06:03Z", "hours": 1.725, "text": "First version of my universe sim, so far it just build out the 2d star field that the rest will be built on top of."}]...
|
Title: Universal Civilization Sim by @Niamh | Star Title: Universal Civilization Sim by @Niamh | Stardance
Devlogs:
First version of my universe sim, so far it just build out the 2d star field that the rest will be built on top of.
I reprogrammed the rendering to go from tkinter to pygame, this will be a better basis for future functionality. The plan currently is to keep it simple so, when generating a star we’ll run odds for whether there’s a civilization there based off your options for the drake equation. From there we’ll spawn a sprite that expands at some factor of the speed of light, when it collides with another sprite we’ll run a random chance at first we’ll base this fully off dark forest theory so they’ll always destroy each other, which destroys the other will depend on age and a randomly determined factor called desperation. Once I have the basic system working I want to add more complex behaviors where civilizations can merge or co-exist✨
V0.5 on my Civilization Simulator In this latest version we now have civilizations that are spawned randomly based on the variables for the Drake equation The average rate of star formation in our galaxy The fraction of those stars that have planets The average number of planets that could support life that actually develop life at some point. The fraction of planets that develop life that go on the develop intelligent life The fraction of civilizations that develop a technology that releases detectable signs of their existence into space The length of time for which such civilizations release detectable signal into space. In this implementation we don’t use the rate of star formation as we already decide seperatly how many stars we will include in our simulation. Current Features We can create a randomly generated star map in a window We can create civilizations in some of those stars based off of the drake equation We can have those civilizations expand at a factor of the speed of light accelerating and related to their level of technology We can have those civilizations interact in a way that is loosely based on dark forest theory Planned Features Implement more behaviours for civilizations encountering one another based off of more varied factors such as benevolance, malevolance and desperation Clean up UI and add a setting menu to tweak the factors of the simulation Add dialogue elements to easier understand what is going on Package into an exe application
V0.6 on my Civilization Simulator On the latest release we now have a settings menu that allows you to adjust the factors affecting the simulation. New Features A settings menu that launches on startup and allows you to adjust the simulation. A text file that stores the variables for easy editing Planned Features Implement more behaviors for civilizations encountering one another based off of more varied factors such as benevolence, malevolence and desperation Clean up UI and add a setting menu to tweak the factors of the simulation Add dialogue elements to easier understand what is going on Package into an exe application One step closer to first ship!
V1.0 ON MY CIVILIZATION SIMULATOR! It’s been a while since I posted a devlog on this project. I’ve been working on getting this to a minimum viable product for release so that’s bug fixing, core features and packaging. Features More complex civilisation behaviour Improved settings screen Full screen Notes Honestly my heart was never really in this project, I was mainly trying to build the courage to work on hardware which I think I’ve secured (You can hopefully expect some rocketry based stuff from me in future) but I have done my best to build something I can be proud of.
Ships:
UniCivSim This is my first ship and I’m excited. This is UniCivSim short for Universal Civilization Simulation (Genius name I know), it’s meant to approximate dark forest theory, which is a theory of how interstellar civilisations interact based in game theory and it ends with claiming that civilisation have two options their either Destroy any other civilisation they encounter Hide from all other civilisations The main aspect of this that I couldn’t approximate is information. In dark forest theory lack of information is what means the benevolent civilisations are better off hiding then going out searching for others like then. In my civilisation simulator they have the benefit of perfect information, when two civs meet their interaction is instantly determined by their behaviour. This leads to an interestingly different conclusion, the simulations always end with only benevolent empires remaining which paints quote a hopeful picture of the far future. Anyway I hope you enjoy playing around with the factors and thank you for rating my project....
|
1793512422.9083405
|
1793598822.9083405
|
|
11436
|
Reptra - Workout App by @xpski | Stardance
|
xpski
|
1
|
5.0
|
33
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T16:10:48Z", "hours": 5.0, "multiplier": 6.53, "payout": 33, "blessing": "neutral", "text": "This app is meant to track all of your workouts. From creating routines, to starting those same routines, or starting an empty workout, it has it all. You can easily choose a workout, add how many sets + reps you did, and track your workouts. You can even get milestones for working out.", "repo": "https://github.com/secretx09/reptra", "demo": "https://github.com/secretx09/reptra/releases/tag/v1.0.0"}]...
|
[{"post_id": 7216, "ts": "2026 [{"post_id": 7216, "ts": "2026-06-12T01:26:38Z", "hours": 3.4333, "text": "Workout app - Creating routines I worked on making it so that way you can create a routine, and start a preset routine whenever you want to workout. This makes it a lot easier so that way you don’t have to readd every single exercise before all of your workouts."}, {"post_id": 7118, "ts": "2026-06-11T21:49:53Z", "hours": 1.1667, "text": "I worked on making it so that way a user can track their reps and add different exercises to their workout log"}, {"post_id": 7029, "ts": "2026-06-11T19:48:09Z", "hours": 0.4606, "text": "Removed nutrition section"}]...
|
Title: Reptra - Workout App by @xpski | Stardance
Title: Reptra - Workout App by @xpski | Stardance
Devlogs:
Removed nutrition section
I worked on making it so that way a user can track their reps and add different exercises to their workout log
Workout app - Creating routines I worked on making it so that way you can create a routine, and start a preset routine whenever you want to workout. This makes it a lot easier so that way you don’t have to readd every single exercise before all of your workouts.
Ships:
This app is meant to track all of your workouts. From creating routines, to starting those same routines, or starting an empty workout, it has it all. You can easily choose a workout, add how many sets + reps you did, and track your workouts. You can even get milestones for working out....
|
1793512427.093304
|
1793598827.093304
|
|
38013
|
my APOD site by @pcb | Stardance
|
pcb
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-22T11:41:17Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a new tab page called astrosearch, the thing i used to track the iss worked on localhost but when i deployed it to github pages it stopped working so i had to find a different api was challenging, im proud that it looks pretty similar to the brave new tab layout. People should know that the background takes maybe 1-3 seconds to load and that the iss location tracker takes maybe 2 seconds to load. and also if you click on the logo of the search engine you can change the search engine you use", "repo": "https://github.com/watchtheads/nasanewtabthing", "demo": "https://watchtheads.github.io/nasanewtabthing/"}]...
|
[{"post_id": 32908, "ts": "202 [{"post_id": 32908, "ts": "2026-07-22T11:32:21Z", "hours": 0.7283, "text": "bug fixed hopefully that was the last one anyways i am prob gonna ship after i post this"}, {"post_id": 32886, "ts": "2026-07-22T10:35:21Z", "hours": 0.9708, "text": "i sure am feeling lucky!!!!!!!!!!!!!!"}, {"post_id": 32851, "ts": "2026-07-22T08:28:50Z", "hours": 2.3117, "text": "I added a lil more features. I added a clock and a search bar, i made it look better by putting the cards at the bottom, the cards have the moon phase, astronomy news and the rocket launch. i also added a settings thing where you can turn the features i just said on or off. Lastly i added a thing to change what search engine you are using engine the search bar uses."}, {"post_id": 32702, "ts": "2026-07-22T00:59:32Z", "hours": 0.5892, "text": "i finished the guide and now i have to add more things so like idk ima think"}, {"post_id": 32688, "ts": "2026-07-22T00:19:18Z", "hours": 0.6931, "text": "i got the api key workijng and it fetched the thing i just finished the javascript section in the guide and im doing the css one now"}]...
|
Title: my APOD site by @pcb | Stardance
Devlogs:
Title: my APOD site by @pcb | Stardance
Devlogs:
i got the api key workijng and it fetched the thing i just finished the javascript section in the guide and im doing the css one now
i finished the guide and now i have to add more things so like idk ima think
I added a lil more features. I added a clock and a search bar, i made it look better by putting the cards at the bottom, the cards have the moon phase, astronomy news and the rocket launch. i also added a settings thing where you can turn the features i just said on or off. Lastly i added a thing to change what search engine you are using engine the search bar uses.
i sure am feeling lucky!!!!!!!!!!!!!!
bug fixed hopefully that was the last one anyways i am prob gonna ship after i post this
Ships:
i made a new tab page called astrosearch, the thing i used to track the iss worked on localhost but when i deployed it to github pages it stopped working so i had to find a different api was challenging, im proud that it looks pretty similar to the brave new tab layout. People should know that the background takes maybe 1-3 seconds to load and that the iss location tracker takes maybe 2 seconds to load. and also if you click on the logo of the search engine you can change the search engine you use...
|
1793512430.0379326
|
1793598830.0379326
|
|
28393
|
Website-Leben by @Dasher2801 | Stardance
|
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T15:11:32Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This project is a compact web dashboard that taps into NASA’s official APOD (Astronomy Picture of the Day) API to bring space data directly to the browser. The application automatically loads the current astronomical image or video of the day, along with its title and the accompanying scientific explanation provided by NASA researchers. An integrated calendar control allows users to “travel back in time” and search for past images, with the app dynamically reloading the data in the background. Visually, the dashboard features a purple-hued sci-fi theme that scales cleanly across both desktop and mobile devices. Technically, the app relies on a minimal setup using Vite and vanilla JavaScript, ensuring extremely fast load times without the need for heavy frameworks. Additionally, the application is configured for direct, seamless deployment to GitHub Pages via an integrated script.", "repo": "https://github.com/Dasher2801/Website-Leben", "demo": "https://dasher2801.github.io/Website-Leben/"}]...
|
[{"post_id": 20027, "ts": "202 [{"post_id": 20027, "ts": "2026-07-01T15:05:01Z", "hours": 0.8567, "text": "Endlich funktioniert es, nachdem ich verschiedenste KIs gefragt habe und alle keine Ahnung hatten, hat es jetzt mit dem 4. API-Schlüssel funktioniert. Oben kann man verschiedene Daten auswählen und bekommt davon das Bild mit Bericht angezeigt."}, {"post_id": 19998, "ts": "2026-07-01T14:01:48Z", "hours": 1.1022, "text": "Theoretisch funktioniert es, aber das Bild wird nicht angezeigt"}, {"post_id": 19947, "ts": "2026-07-01T12:11:49Z", "hours": 0.3728, "text": "Was sie hier sehen ist eine bisher noch ganz weiße Website, die bisher nur einen simplen Datumpicker hat."}]...
|
Title: Website-Leben by @Dasher2801 | Stardance
D Title: Website-Leben by @Dasher2801 | Stardance
Devlogs:
Was sie hier sehen ist eine bisher noch ganz weiße Website, die bisher nur einen simplen Datumpicker hat.
Theoretisch funktioniert es, aber das Bild wird nicht angezeigt
Endlich funktioniert es, nachdem ich verschiedenste KIs gefragt habe und alle keine Ahnung hatten, hat es jetzt mit dem 4. API-Schlüssel funktioniert. Oben kann man verschiedene Daten auswählen und bekommt davon das Bild mit Bericht angezeigt.
Ships:
This project is a compact web dashboard that taps into NASA’s official APOD (Astronomy Picture of the Day) API to bring space data directly to the browser. The application automatically loads the current astronomical image or video of the day, along with its title and the accompanying scientific explanation provided by NASA researchers. An integrated calendar control allows users to “travel back in time” and search for past images, with the app dynamically reloading the data in the background. Visually, the dashboard features a purple-hued sci-fi theme that scales cleanly across both desktop and mobile devices. Technically, the app relies on a minimal setup using Vite and vanilla JavaScript, ensuring extremely fast load times without the need for heavy frameworks. Additionally, the application is configured for direct, seamless deployment to GitHub Pages via an integrated script....
|
1793512436.51868
|
1793598836.51868
|
|
57551
|
Yosemite by @n1tr0xx | Stardance
|
n1tr0xx
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-03T08:15:16Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i built a dumb wiper malware out of complete boredom, to activate the killswitch, either create a dumb file in your temp folder called yosemite.exe, or, create a folder in your temp folder called YosemiteBuild, then make a file called “AceOfSpades.txt”. For the virus to work it must run as administrator to modify registry entries.", "repo": "https://github.com/optixytv3/yosemite", "demo": "https://github.com/optixytv3/yosemite/releases/download/release/yosemite.exe"}]...
|
[{"post_id": 60698, "ts": "202 [{"post_id": 60698, "ts": "2026-09-03T07:46:26Z", "hours": 2.7633, "text": "Wiped the first 512 bytes of the drive, without kernel level access?"}]...
|
Title: Yosemite by @n1tr0xx | Stardance
Devlogs:
Title: Yosemite by @n1tr0xx | Stardance
Devlogs:
Wiped the first 512 bytes of the drive, without kernel level access?
Ships:
i built a dumb wiper malware out of complete boredom, to activate the killswitch, either create a dumb file in your temp folder called yosemite.exe, or, create a folder in your temp folder called YosemiteBuild, then make a file called “AceOfSpades.txt”. For the virus to work it must run as administrator to modify registry entries....
|
1793512441.9651935
|
1793598841.9651935
|
|
17883
|
Utils by @denis | Stardance
|
denis
|
1
|
43.01
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T13:51:25Z", "hours": 35.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Shipping! After a lot of work on these, I want to ship: The bash scripts from the utils repo : db_manager - Simple PostgreSQL database manager. ue5_asset_downloader - Faster way to download and share UE5 asset files via Google Drive. lazyass - Lightweight app launcher script. proxyfix - Simplified configuration file management for proxychains. dchfc tool - Displays children files’ content ( Releases ). So now I will fully focus on astmn , as I’ll need it for my next projects.", "repo": "https://github.com/denis1836/utils", "demo": "https://github.com/denis1836/utils/releases/tag/collection-v1"}]...
|
[{"post_id": 67529, "ts": "202 [{"post_id": 67529, "ts": "2026-09-13T17:27:19Z", "hours": 4.5181, "text": "Utils - fixes and some updates A lot of bugs showed up in testing, so fixed them. I also tested my utils on several minimal Linux distributions to ensure they work with less dependencies. Check out the releases . For the UE5 asset downloader script, I added a testing file to demonstrate its work. Additionally, there have been some updates to astmn , including new commands (view, pack, and update) as well as upcoming features. You can check it out here ."}, {"post_id": 58786, "ts": "2026-08-31T11:12:54Z", "hours": 3.4875, "text": "Utils - releases and docs Made a lot of docs, fixes and releases in order to re-ship the project. Hope this time judges will like it. If you want to check them out check out, see releases , or a doc I made with references and descriptions to all the things I mention in my devlogs."}, {"post_id": 56443, "ts": "2026-08-28T06:37:05Z", "hours": 10.3883, "text": "lazyass Have you ever been too lazy to manually launch the same bunch of apps every day? Me too. So I built a minimal CLI tool that turns a 20-second job into a 3-second job. Check out the repo ."}, {"post_id": 51601, "ts": "2026-08-21T11:25:40Z", "hours": 8.6014, "text": "astmn In my previous devlog about the UE5 bash script, I mentioned the better version of this tool this time built with Golang. The idea of the tool is to make sharing large binary files (like 3D models) easier and to escape the “_v2_FINAL_UPDATE_SUPERFINAL” hell by using SemVer and Git to track manifest files. It’s especially useful for game dev because you don’t have to clog your repo with assets or pay for Git LFS. For now it only works for .zip files and Google Drive, but in the near future I am going to add many more features making it as easy to use as possible. I have no idea what to show yet, so I attach some screenshots of it working and an example manifest file for FreeCAD, I dunno."}, {"post_id": 45729, "ts": "2026-08-12T12:33:26Z", "hours": 5.3386, "text": "Asset Downloader/Manager When my friends and I were trying to make a game in Unreal Engine 5 we had a problem with version control (which is easily resolved by a good gitignore file) and asset sharing. Because actor and map files can grow rapidly I had an idea to use some kind of a cloud, the easiest thing I thought of was using Google Drive (mostly because of its free 15GB limit). As my friends worked on Windows and only had access to MSYS2, Git Bash, Cygwin and WSL I decided to do it in Bash using JSON files as the “registries”. The asset registry files were located in the repo and tracked by Git while the asset files were downloaded locally. Also you can add pre-commit hooks so there is a check if you have all the assets downloaded. After a few tweaks and fixes, it wasn’t too shabby. In fact the script did its job quite well. If you are interested in the code, you can find it here . I may add some small updates to it, but nothing special. The main limitation was that Bash is a scripting language and it has its own tweaks. And I wanted more functionality. So, I decided to rebuild the idea with a better architecture using Golang and YAML. Right now, I don’t have the funds or a way to host a server, so it’ll use regular archives for now. In the future, I want to use hashing for optimization (similar to how Git works). It’s still in early development, but you can find the repo here ."}, {"post_id": 41290, "ts": "2026-08-05T12:47:48Z", "hours": 3.3328, "text": "D.Ch.F.C. The abbreviation stands for Display Children Files Content . The purpose of this command is self-explanatory. It’s quite handy when, for example, you have a lot of files and an AI needs context to help you find a bug in your code. Originally, this was meant to be part of my utils repo, but as its functionality grew, I moved it to a dedicated repo especially since I plan to package and submit it to Linux distro’s mirrors."}, {"post_id": 40005, "ts": "2026-08-03T11:01:52Z", "hours": 7.755, "text": "utils/db_manager In my other projects i often have to deal with PostgresSQL databases, and I was annoyed with using psql or systemd to do basic stuff like managing the postgres daemon or running the set-up queries myself. So I made this. Feel free to add fork it to your project (see instalation ) for better db management. If you encounter any bugs/issues or want to request a feature, please create an issue on GitHub so it can be fixed."}]...
|
Title: Utils by @denis | Stardance
Devlogs:
utils Title: Utils by @denis | Stardance
Devlogs:
utils/db_manager In my other projects i often have to deal with PostgresSQL databases, and I was annoyed with using psql or systemd to do basic stuff like managing the postgres daemon or running the set-up queries myself. So I made this. Feel free to add fork it to your project (see instalation ) for better db management. If you encounter any bugs/issues or want to request a feature, please create an issue on GitHub so it can be fixed.
D.Ch.F.C. The abbreviation stands for Display Children Files Content . The purpose of this command is self-explanatory. It’s quite handy when, for example, you have a lot of files and an AI needs context to help you find a bug in your code. Originally, this was meant to be part of my utils repo, but as its functionality grew, I moved it to a dedicated repo especially since I plan to package and submit it to Linux distro’s mirrors.
Asset Downloader/Manager When my friends and I were trying to make a game in Unreal Engine 5 we had a problem with version control (which is easily resolved by a good gitignore file) and asset sharing. Because actor and map files can grow rapidly I had an idea to use some kind of a cloud, the easiest thing I thought of was using Google Drive (mostly because of its free 15GB limit). As my friends worked on Windows and only had access to MSYS2, Git Bash, Cygwin and WSL I decided to do it in Bash using JSON files as the “registries”. The asset registry files were located in the repo and tracked by Git while the asset files were downloaded locally. Also you can add pre-commit hooks so there is a check if you have all the assets downloaded. After a few tweaks and fixes, it wasn’t too shabby. In fact the script did its job quite well. If you are interested in the code, you can find it here . I may add some small updates to it, but nothing special. The main limitation was that Bash is a scripting language and it has its own tweaks. And I wanted more functionality. So, I decided to rebuild the idea with a better architecture using Golang and YAML. Right now, I don’t have the funds or a way to host a server, so it’ll use regular archives for now. In the future, I want to use hashing for optimization (similar to how Git works). It’s still in early development, but you can find the repo here .
astmn In my previous devlog about the UE5 bash script, I mentioned the better version of this tool this time built with Golang. The idea of the tool is to make sharing large binary files (like 3D models) easier and to escape the “_v2_FINAL_UPDATE_SUPERFINAL” hell by using SemVer and Git to track manifest files. It’s especially useful for game dev because you don’t have to clog your repo with assets or pay for Git LFS. For now it only works for .zip files and Google Drive, but in the near future I am going to add many more features making it as easy to use as possible. I have no idea what to show yet, so I attach some screenshots of it working and an example manifest file for FreeCAD, I dunno.
lazyass Have you ever been too lazy to manually launch the same bunch of apps every day? Me too. So I built a minimal CLI tool that turns a 20-second job into a 3-second job. Check out the repo .
Utils - releases and docs Made a lot of docs, fixes and releases in order to re-ship the project. Hope this time judges will like it. If you want to check them out check out, see releases , or a doc I made with references and descriptions to all the things I mention in my devlogs.
Utils - fixes and some updates A lot of bugs showed up in testing, so fixed them. I also tested my utils on several minimal Linux distributions to ensure they work with less dependencies. Check out the releases . For the UE5 asset downloader script, I added a testing file to demonstrate its work. Additionally, there have been some updates to astmn , including new commands (view, pack, and update) as well as upcoming features. You can check it out here .
Ships:
Shipping! After a lot of work on these, I want to ship: The bash scripts from the utils repo : db_manager - Simple PostgreSQL database manager. ue5_asset_downloader - Faster way to download and share UE5 asset files via Google Drive. lazyass - Lightweight app launcher script. proxyfix - Simplified configuration file management for proxychains. dchfc tool - Displays children files’ content ( Releases ). So now I will fully focus on astmn , as I’ll need it for my next projects....
|
1793512443.7725487
|
1793598843.7725487
|
|
28919
|
Webuntis Widget by @blue_alpaka | Stardance
|
blue_alpaka
|
1
|
12.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-31T20:36:07Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Windows Widget for Webuntis, a popular timetable service in Germany for schools and universities. It shows the timetable and the information about the classes. I worked really hard on this project (unfortunately hackatime did not count some hours). This was a great chance to improve my tauri and rust skills", "repo": "https://github.com/Siddhartha-Kolla/Webunits_Widget", "demo": "https://github.com/Siddhartha-Kolla/Webunits_Widget/releases"}]...
|
[{"post_id": 85848, "ts": "202 [{"post_id": 85848, "ts": "2026-10-31T19:59:24Z", "hours": 5.4164, "text": "Finally I have implemented a working version of the Webuntis Widget. I invested too much time on designing the application. I adjusted the dimensions of my figma design frame to the real dimensions (350x250). I split the widget into two sections. On the right section you can see the timetable for the corresponding day On the left you can see the information regarding the current session It displays information about when the class starts, in which room, the teacher, notes and when the next class is. In the middle there is a bar that shows the progress of the school day. Then I began working on the application. It was suprisingly really hard to work with the library. The code for the frontend was really messy at the beginning and I had to use AI to organize my code ( and in that way broke my promise to not use AI). During the process there was also another issue. The widget always shows an empty element with the 00:00-23:59 time. So I then implemented a filter that filters out these empty events. What I didn’t yet implented: The coloring of the different subjects. I am currently looking for a way to like extract the color from the api request and then to display it. Status coloring Github Actions workflow for releases ( will be fixed when I ship my project) Language (is currently only in German for now) But since my widget is in a functionable stage, I would ship it for now and work on the improvements later."}, {"post_id": 22377, "ts": "2026-07-04T20:23:55Z", "hours": 1.2586, "text": "I started analyzing the json strcuture of the timetable data played around with it. Afterwards, I also made some first design prototype with figma for my widget. What I realized afterwards is that the text size is too small for a functional widget. So I need to redesign the subject components. For the time being, I took 500x300 as the widget size. But in reality, I think it should be a lot smaller than that."}, {"post_id": 21769, "ts": "2026-07-03T21:25:43Z", "hours": 1.1903, "text": "I now connected the Webuntis-API with Tauri App’s backend. I was able to request information from the Webuntis API and process it in the frontend. For now that app only shows the different lesson ids and the Subject Name code. Next steps would be to understand the structure of the timetable json and design first prototypes for the design"}, {"post_id": 21055, "ts": "2026-07-02T20:42:15Z", "hours": 2.1056, "text": "I have successfully found the issue why my application didn’t connect with the Webuntis API server. It was a datetime conversion issue in the library untis-rc. With the help of ChatGPT I finally found the bug inside the library and fixed it. After fixing the big, I also initialized a .env environment to store secrets"}, {"post_id": 20100, "ts": "2026-07-01T16:55:49Z", "hours": 1.2722, "text": "I have initialized a tauri projects and analyzed the project structure. The problem is that I do not have any prior experience with Rust. And that is why I also setup a separate test folder to experiment with Rust and the untis library I want to use afterwards."}, {"post_id": 19357, "ts": "2026-06-30T17:11:56Z", "hours": 0.8994, "text": "I finally got to know how to work with the Webuntis-API. I set up a small working python template that connects to my school server and then gives the raw timetable data for a specific class. I also thought about how I would like to build the widget so that it feels like one. And for that my plan is to probably create a desktop web app using the React + Tauri + Rust tech stack. This connects to the users school api and shows the current timetable of the user. I also want to create a modern looking UI. Since I now know that the API fundamentally works, I would like to implement the connection again with Rust and then start creating the Tauri Widget"}]...
|
Title: Webuntis Widget by @blue_alpaka | Stardance Title: Webuntis Widget by @blue_alpaka | Stardance
Devlogs:
I finally got to know how to work with the Webuntis-API. I set up a small working python template that connects to my school server and then gives the raw timetable data for a specific class. I also thought about how I would like to build the widget so that it feels like one. And for that my plan is to probably create a desktop web app using the React + Tauri + Rust tech stack. This connects to the users school api and shows the current timetable of the user. I also want to create a modern looking UI. Since I now know that the API fundamentally works, I would like to implement the connection again with Rust and then start creating the Tauri Widget
I have initialized a tauri projects and analyzed the project structure. The problem is that I do not have any prior experience with Rust. And that is why I also setup a separate test folder to experiment with Rust and the untis library I want to use afterwards.
I have successfully found the issue why my application didn’t connect with the Webuntis API server. It was a datetime conversion issue in the library untis-rc. With the help of ChatGPT I finally found the bug inside the library and fixed it. After fixing the big, I also initialized a .env environment to store secrets
I now connected the Webuntis-API with Tauri App’s backend. I was able to request information from the Webuntis API and process it in the frontend. For now that app only shows the different lesson ids and the Subject Name code. Next steps would be to understand the structure of the timetable json and design first prototypes for the design
I started analyzing the json strcuture of the timetable data played around with it. Afterwards, I also made some first design prototype with figma for my widget. What I realized afterwards is that the text size is too small for a functional widget. So I need to redesign the subject components. For the time being, I took 500x300 as the widget size. But in reality, I think it should be a lot smaller than that.
Finally I have implemented a working version of the Webuntis Widget. I invested too much time on designing the application. I adjusted the dimensions of my figma design frame to the real dimensions (350x250). I split the widget into two sections. On the right section you can see the timetable for the corresponding day On the left you can see the information regarding the current session It displays information about when the class starts, in which room, the teacher, notes and when the next class is. In the middle there is a bar that shows the progress of the school day. Then I began working on the application. It was suprisingly really hard to work with the library. The code for the frontend was really messy at the beginning and I had to use AI to organize my code ( and in that way broke my promise to not use AI). During the process there was also another issue. The widget always shows an empty element with the 00:00-23:59 time. So I then implemented a filter that filters out these empty events. What I didn’t yet implented: The coloring of the different subjects. I am currently looking for a way to like extract the color from the api request and then to display it. Status coloring Github Actions workflow for releases ( will be fixed when I ship my project) Language (is currently only in German for now) But since my widget is in a functionable stage, I would ship it for now and work on the improvements later.
Ships:
I made a Windows Widget for Webuntis, a popular timetable service in Germany for schools and universities. It shows the timetable and the information about the classes. I worked really hard on this project (unfortunately hackatime did not count some hours). This was a great chance to improve my tauri and rust skills...
|
1793512445.8647854
|
1793598845.8647854
|