|
59852
|
Pulse.ai by @Anirudh_m | Stardance
|
Anirudh_m
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pulse.ai by @Anirudh_m | Stardance
|
1793638391.7777946
|
1794243191.7777946
|
|
59853
|
PulseBot by @NamasyuChallagarige | Stardance
|
NamasyuChallagarige
|
1
|
1.34
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T10:48:25Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built PulseBot, a Slack bot using Python and Slack Bolt with three custom commands: /pulse-help , /pulse-motivate , and /pulse-time . The most challenging part was setting up Slack Socket Mode, environment variables, and deploying the bot to Railway while keeping my tokens private. I’m proud that I took the project from local code to a working cloud deployment that runs independently of my laptop. To test it, open the Slack demo and try /pulse-help , /pulse-motivate , or /pulse-time . The bot should respond directly in Slack.", "repo": "https://github.com/namasyuch/pulsebot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0C2CT7RX5X"}]...
|
[{"post_id": 73944, "ts": "202 [{"post_id": 73944, "ts": "2026-09-26T11:49:45Z", "hours": 1.3403, "text": "I am working on creating a SLACK-BOT , which responds any time 24/7 with 3 useful commands."}, {"post_id": 64774, "ts": "2026-09-09T13:00:02Z", "hours": 0.2675, "text": "PulseBot I built PulseBot, a Python Slack bot using Slack Bolt and Socket Mode. Features: /pulse-help — Shows commands /pulse-motivate — Sends motivation /pulse-time — Shows the current time I first tested it locally, then deployed it to Railway. What I learned : Python + Slack Bolt, slash commands, Socket Mode, environment variables, GitHub, and cloud deployment."}]...
|
Title: PulseBot by @NamasyuChallagarige | Stardanc Title: PulseBot by @NamasyuChallagarige | Stardance
Devlogs:
PulseBot I built PulseBot, a Python Slack bot using Slack Bolt and Socket Mode. Features: /pulse-help — Shows commands /pulse-motivate — Sends motivation /pulse-time — Shows the current time I first tested it locally, then deployed it to Railway. What I learned : Python + Slack Bolt, slash commands, Socket Mode, environment variables, GitHub, and cloud deployment.
I am working on creating a SLACK-BOT , which responds any time 24/7 with 3 useful commands.
Ships:
I built PulseBot, a Slack bot using Python and Slack Bolt with three custom commands: /pulse-help , /pulse-motivate , and /pulse-time . The most challenging part was setting up Slack Socket Mode, environment variables, and deploying the bot to Railway while keeping my tokens private. I’m proud that I took the project from local code to a working cloud deployment that runs independently of my laptop. To test it, open the Slack demo and try /pulse-help , /pulse-motivate , or /pulse-time . The bot should respond directly in Slack....
|
1793825549.9854877
|
1793911949.9854877
|
|
59854
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739010.8767931
|
1794603010.8767931
|
|
59855
|
Focus bro by @The_Rick | Stardance
|
The_Rick
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Focus bro by @The_Rick | Stardance
|
1793638392.641743
|
1794243192.641743
|
|
59856
|
C-pad by @MustafaBerisha | Stardance
|
MustafaBerisha
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: C-pad by @MustafaBerisha | Stardance
|
1793638393.883337
|
1794243193.883337
|
|
59857
|
The Code of the Universe by @Luna1818 | Stardance
|
Luna1818
|
0
|
43.16
|
0
|
[]
|
[{"post_id": 75384, "ts": "202 [{"post_id": 75384, "ts": "2026-09-29T21:58:18Z", "hours": 6.5808, "text": "Today I FINALLY got StellarQuiz fully working!! YAYYY It took me way longer than expected because I had to rework part of the Gemini API integration. The main problem was the 503 error, which kept showing up constantly whenever Gemini was temporarily unavailable or overloaded, plus a few other API-related issues that I had to figure out along the way. So I had to spend some time improving the error (boriiing). It can now recognize different API responses, automatically retry when Gemini is temporarily unavailable, and handle the daily Gemini usage limit separately. If that limit is reached, the user gets a custom screen instead of a random technical error. I also separated StellarQuiz into its own Gemini API project, so the whole system is much more organized and reliable now. Soooo StellarQuiz is officially done!! yippie yippie yippie Extra to that, I already started working on the Space Culture section. It’s actually almost finished tbh, I’m mainly missing the multimedia part and some content before I can call it complete. Later today I’ll show you guys the result of the Missions section too! That one is going to require a little bit of research first because I want the information and structure to actually make sense instead of just filling the page with random stuff lolll Once I work on it, I’ll update you guys on how it went and explain the logic I decided to use for Missions. Getting REEEALLY close to finishing the entire project now let’s goooo"}, {"post_id": 74751, "ts": "2026-09-28T04:23:54Z", "hours": 3.0125, "text": "Today I FINALLY finished uploading and organizing all the images for the STEAM sections, and I also got StellarQuiz working!! Btw, StellarQuiz is the interactive quiz section of the website, where users can answer questions from different STEAM topics, get randomized answer choices, and see their results at the end. P.S. StellarQuiz has definitely been the most complicated part of the project so far 😭 so I did need some help from AI while figuring out parts of the programming, but I still had to test everything, fix bugs, and understand how it all worked. I still want to improve the aesthetics a little, but I’m honestly really happy with the progress. Definitely learned something new today lolllll. I wish I could give you guys a preview of how StellarQuiz looks when it displays the quiz itself, but I ran out of tokens for the free version of Gemini, which is the API I’m currently using for StellarQuiz and Rovertita (the website’s AI space assistant that answers any questions users have about space). So overall, I’m now only missing two sections of my website, Missions section and Space Culture, which I’ll later update about them (tomorrow lol)."}, {"post_id": 74343, "ts": "2026-09-27T06:29:01Z", "hours": 4.1633, "text": "Still working on all the images for the STEAM sections. I’ve been uploading, organizing, and fixing the visual content so everything looks polished. It’s taking forever lol, but I’m finally getting really close to finishing this part (I hope so)"}, {"post_id": 73832, "ts": "2026-09-26T03:43:35Z", "hours": 2.4617, "text": "Today I’ve been working on uploading and organizing the images for the STEAM content sections, which took way longer than I expected, but I’m almost done with them now. The website is finally looking way more complete and everything is starting to come together (wish me luck lol)"}, {"post_id": 72497, "ts": "2026-09-23T02:34:35Z", "hours": 26.9444, "text": "Been working a lot on The Code of the Universe lately, I’ve been improving the website in VS Code, fixing bugs, working on the STEAM sections, animations, navigation, responsive design, and the quiz area. Some parts are taking way longer than expected lol, but the project is finally starting to come together and I’m really happy with the progress :)"}]...
|
Title: The Code of the Universe by @Luna1818 | Sta Title: The Code of the Universe by @Luna1818 | Stardance
Devlogs:
Been working a lot on The Code of the Universe lately, I’ve been improving the website in VS Code, fixing bugs, working on the STEAM sections, animations, navigation, responsive design, and the quiz area. Some parts are taking way longer than expected lol, but the project is finally starting to come together and I’m really happy with the progress :)
Today I’ve been working on uploading and organizing the images for the STEAM content sections, which took way longer than I expected, but I’m almost done with them now. The website is finally looking way more complete and everything is starting to come together (wish me luck lol)
Still working on all the images for the STEAM sections. I’ve been uploading, organizing, and fixing the visual content so everything looks polished. It’s taking forever lol, but I’m finally getting really close to finishing this part (I hope so)
Today I FINALLY finished uploading and organizing all the images for the STEAM sections, and I also got StellarQuiz working!! Btw, StellarQuiz is the interactive quiz section of the website, where users can answer questions from different STEAM topics, get randomized answer choices, and see their results at the end. P.S. StellarQuiz has definitely been the most complicated part of the project so far 😭 so I did need some help from AI while figuring out parts of the programming, but I still had to test everything, fix bugs, and understand how it all worked. I still want to improve the aesthetics a little, but I’m honestly really happy with the progress. Definitely learned something new today lolllll. I wish I could give you guys a preview of how StellarQuiz looks when it displays the quiz itself, but I ran out of tokens for the free version of Gemini, which is the API I’m currently using for StellarQuiz and Rovertita (the website’s AI space assistant that answers any questions users have about space). So overall, I’m now only missing two sections of my website, Missions section and Space Culture, which I’ll later update about them (tomorrow lol).
Today I FINALLY got StellarQuiz fully working!! YAYYY It took me way longer than expected because I had to rework part of the Gemini API integration. The main problem was the 503 error, which kept showing up constantly whenever Gemini was temporarily unavailable or overloaded, plus a few other API-related issues that I had to figure out along the way. So I had to spend some time improving the error (boriiing). It can now recognize different API responses, automatically retry when Gemini is temporarily unavailable, and handle the daily Gemini usage limit separately. If that limit is reached, the user gets a custom screen instead of a random technical error. I also separated StellarQuiz into its own Gemini API project, so the whole system is much more organized and reliable now. Soooo StellarQuiz is officially done!! yippie yippie yippie Extra to that, I already started working on the Space Culture section. It’s actually almost finished tbh, I’m mainly missing the multimedia part and some content before I can call it complete. Later today I’ll show you guys the result of the Missions section too! That one is going to require a little bit of research first because I want the information and structure to actually make sense instead of just filling the page with random stuff lolll Once I work on it, I’ll update you guys on how it went and explain the logic I decided to use for Missions. Getting REEEALLY close to finishing the entire project now let’s goooo...
|
1793638394.7888982
|
1794243194.7888982
|
|
59858
|
Twistie by @R10 | Stardance
|
R10
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Twistie by @R10 | Stardance
|
1793638395.9976616
|
1794243195.9976616
|
|
59859
|
Our Portfolio🐼🐕 by @n_astdo | Stardance
|
n_astdo
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-16T15:00:37Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I did a project that’s called Our Portfolio. I made this project for me and my bestie. I added all the music, singers, films and many more that we like. One thing that was challenging was starting and finishing, but I did it. So now all teens will know a bit more about me and my bestie💛. Enjoy", "repo": "https://github.com/idonot-nas/Our_Portfolio", "demo": "https://idonot-nas.github.io/Our_Portfolio/"}]...
|
[{"post_id": 69168, "ts": "202 [{"post_id": 69168, "ts": "2026-09-16T14:53:56Z", "hours": 1.2131, "text": "Finally I did it🤩"}, {"post_id": 68770, "ts": "2026-09-15T18:42:49Z", "hours": 0.5886, "text": "Add some actors and actresses"}, {"post_id": 68264, "ts": "2026-09-14T20:07:11Z", "hours": 2.6222, "text": "Making some smth inside"}, {"post_id": 66155, "ts": "2026-09-11T19:51:38Z", "hours": 0.3403, "text": "Working on design"}, {"post_id": 65443, "ts": "2026-09-10T16:07:36Z", "hours": 0.7028, "text": "I am adding some buttons"}, {"post_id": 64693, "ts": "2026-09-09T09:21:21Z", "hours": 2.305, "text": "Working on portfolio with my friends"}]...
|
Title: Our Portfolio🐼🐕 by @n_astdo | Stardance
De Title: Our Portfolio🐼🐕 by @n_astdo | Stardance
Devlogs:
Working on portfolio with my friends
I am adding some buttons
Working on design
Making some smth inside
Add some actors and actresses
Finally I did it🤩
Ships:
I did a project that’s called Our Portfolio. I made this project for me and my bestie. I added all the music, singers, films and many more that we like. One thing that was challenging was starting and finishing, but I did it. So now all teens will know a bit more about me and my bestie💛. Enjoy...
|
1793825551.1178846
|
1793911951.1178846
|
|
59860
|
Duckosaur by @Harupi | Stardance
|
Harupi
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T17:36:48Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My girlfriend asked me to make a t-rex game with a duck she and her roommates had drawn, so I did it. This game features randomly spawning cactuses, score, and a beautiful duck. I’ll probably make a leaderboard and maybe add flying mobs in a future version. Hope you like it !", "repo": "https://github.com/Hvrnbi/duckosaur", "demo": "https://duckosaur.harupi.me"}]...
|
[{"post_id": 67532, "ts": "202 [{"post_id": 67532, "ts": "2026-09-13T17:31:59Z", "hours": 1.9417, "text": "Duckosaur devlog 3 - Ready to ship ! This time, I made the score system, the styling, the README, and the deployment ! Now the first version is ready to be shipped !"}, {"post_id": 65278, "ts": "2026-09-10T09:13:42Z", "hours": 2.0406, "text": "Duckosaur devlog 2 - Hellooooo The duck is not a yellow square anymore ! I also added randomly spawning cactus (I’ll have to draw a cactus by myself). They move and if they touch the player, the game is over. Have a nice day !"}, {"post_id": 64295, "ts": "2026-09-08T16:09:01Z", "hours": 0.395, "text": "Duckosaur devlog 1 - My girlfriend asked me to make a t-rex game with a duck she’d drawn, so I’m doing it. Hello ! I first tried to make it in Rust using Dioxus to publish it as a website, but after struggling for over 2 hours trying to remove the “jumping” class from the player after a certain amount of time, I decided to switch to javascript since this isn’t a serious project. Should I link the hackatime records of the 2 projects together ? I don’t really know. So I redid in js what I had done in Rust, and now the player can jump more than once ! She hasn’t sent me the drawing yet so for now the duck is a yellow square. See you soon !"}]...
|
Title: Duckosaur by @Harupi | Stardance
Devlogs:
Title: Duckosaur by @Harupi | Stardance
Devlogs:
Duckosaur devlog 1 - My girlfriend asked me to make a t-rex game with a duck she’d drawn, so I’m doing it. Hello ! I first tried to make it in Rust using Dioxus to publish it as a website, but after struggling for over 2 hours trying to remove the “jumping” class from the player after a certain amount of time, I decided to switch to javascript since this isn’t a serious project. Should I link the hackatime records of the 2 projects together ? I don’t really know. So I redid in js what I had done in Rust, and now the player can jump more than once ! She hasn’t sent me the drawing yet so for now the duck is a yellow square. See you soon !
Duckosaur devlog 2 - Hellooooo The duck is not a yellow square anymore ! I also added randomly spawning cactus (I’ll have to draw a cactus by myself). They move and if they touch the player, the game is over. Have a nice day !
Duckosaur devlog 3 - Ready to ship ! This time, I made the score system, the styling, the README, and the deployment ! Now the first version is ready to be shipped !
Ships:
My girlfriend asked me to make a t-rex game with a duck she and her roommates had drawn, so I did it. This game features randomly spawning cactuses, score, and a beautiful duck. I’ll probably make a leaderboard and maybe add flying mobs in a future version. Hope you like it !...
|
1793825552.275801
|
1793911952.275801
|
|
59861
|
Cirkuit by @spectra | Stardance
|
spectra
|
2
|
129.35
|
2474
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-28T13:18:46Z", "hours": 34.0, "multiplier": 19.87, "payout": 672, "blessing": "neutral", "text": "Hi! I’m back with a big update to my biggest project so far: Cirkuit , a logic circuit sandbox simulator… but with pixel art! The idea is simple: build complex logic circuits by placing pixels (that’s literally it). I wanted to make logic simulators more accessible and intuitive. Since my first ship, I’ve added quite a few things: Clock: generate square-wave signals for sequential circuits. 1-bit memory: store a single bit of information (simplified D flip-flop) Probe tool: highlight equipotential wires (really useful for simplifying your circuits). A short tutorial: get started by building a simple circuit, followed by a demo showing how to turn it into a module. Modules! Turn circuits you’ve built into reusable components. You can find more details in the GitHub repository’s README. The biggest challenge was definitely implementing modules. From a UX perspective, I wanted creating and using them to feel natural. On the technical side, they required significant changes to the engine itself, including handling module footprints and compiling their internal circuits. I’m quite proud of how Cirkuit has evolved since the first ship. I’ve put a lot of effort into making the interface feel intuitive and reducing friction between the user and the tool (aka you, dear shipwriters). One piece of advice: try it on a computer with a mouse! Phones and trackpads are supported, but they’re not the ideal way to experience it. I hope you’ll enjoy this update! Try Cirkuit: https://nafo44.github.io/Cirkuit GitHub: https://github.com/NaFo44/Cirkuit", "repo": "https://github.com/NaFo44/Cirkuit", "demo": "https://nafo44.github.io/Cirkuit/"}, {"ship_num": 2, "ts": "2026-09-27T22:09:45Z", "hours": 95.0, "multiplier": 18.99, "payout": 1802, "blessing": "neutral", "text": "Hi! I’m really happy to introduce you to my biggest project so far. It’s called Cirkuit, and it’s a logic circuit sandbox simulator… but with pixel art! That means you can basically build anything using just pixels. Why pixels? You may ask. Well, many logic simulators already exist, but the issue is that most of them aren’t very accessible to the average user. That’s why I wanted Cirkuit to be as easy to use as possible. I’m already quite familiar with TypeScript and React, which I used for this project. So the most difficult part was actually figuring out how to implement features without having 100 nested loops :D I had a hard time figuring out how to build the core engine (obviously), as well as the annotation system. I’m quite proud of how it looks and how well it works. This project was a perfect opportunity for me to improve my design skills. I worked hard to reduce friction between the interface and the user (aka you, dear shipwriters). One piece of advice: try it on a computer with a mouse. Phones and trackpads are supported, but it’s not the best experience. Hope you’ll like this project!", "repo": "https://github.com/NaFo44/Cirkuit", "demo": "https://nafo44.github.io/Cirkuit/"}]...
|
[{"post_id": 86048, "ts": "202 [{"post_id": 86048, "ts": "2026-11-01T00:50:50Z", "hours": 0.3486, "text": "Last devlog : Module deletion, and THANK YOU! A huge thank you to all the Hack Club staff for organizing and maintaining Stardance. It’s been an incredible journey! And a huge thank you to everyone who followed or liked my projects over the past few months ❤️ Now, for the actual devlog: I added a delete button for modules, since someone requested it! When you delete a module, all instances of that module placed on the circuit are deleted too. Next step: cry because Stardance is over"}, {"post_id": 83377, "ts": "2026-10-27T21:24:54Z", "hours": 1.4153, "text": "Devlog 43 : Tutorial! I added a tutorial on Cirkuit that explains how to make your own basic logic gate, and how to embed it into a module. If you want to try the website: https://nafo44.github.io/Cirkuit/ As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: polish UX, and SHIP!!"}, {"post_id": 83044, "ts": "2026-10-26T17:30:29Z", "hours": 4.7797, "text": "Devlog 42 : Integrated circuits (almost done!) It wasn’t easy! The UX part is actually really challenging. I had to rely on AI more than usual because Stardance is ending really soon, and I’m honestly a bit scared of not having enough time to ship :/ I’ll still try to polish the UI as much as possible! The screenshot below shows what it currently looks like. I added a new section for modules in the sidebar, where you can see all the modules you’ve created, edit them, or create new ones. When creating a new module, you can set its name, preview the footprint, add or remove inputs/outputs, and place them directly on the footprint. It’s almost ready tho! I’m just polishing the UX now. Next steps: finish this feature, polish the UI/UX, ship!"}, {"post_id": 82831, "ts": "2026-10-25T23:44:06Z", "hours": 2.5764, "text": "Devlog 41 : Integrated Circuits I’m working on the UI! The picture below shows what it currently looks like. I’m still not sure about the colors, so they might change. I still have the hardest part to figure out: How will users create and modify a module, UX-wise? Will it have its own sub-editor? How will users assign pins, name them, and define the module’s size and name? As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: Keep working on the UI, polish the UX/UI, and ship!"}, {"post_id": 82612, "ts": "2026-10-25T12:50:30Z", "hours": 2.0128, "text": "Devlog #40 : Integrated circuits I’m (again) still working on this feature! Since my last devlog, I’ve updated the project document format to serialize the new modules. And that’s basically it! Next step: integrate them into the UI, polish the UX, and ship!"}, {"post_id": 82446, "ts": "2026-10-24T20:32:14Z", "hours": 3.4561, "text": "Devlog #39 : Integrated circuits (again) I’m still working on this feature! I’m not at the frontend part yet, still adapting the engine. More details if you’re curious: A module has a definition that includes its name, public pins, and internal circuit. It can be used multiple times (it’s called an instance in the code). And all modules are listed in a catalog (that I’ll probably integrate in the frontend later). Instances can be selected, moved, copied and pasted, across the layers… The picture bellow shows how this feature could be used. It will make things much easier if you want to build more complex circuits like an 8 bit adder. You’ll just have to stack 8x 1-bit full adder modules! As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: finish the backend side, then integrate everything into the frontend, polish the UI, and ship!"}, {"post_id": 81890, "ts": "2026-10-22T21:14:45Z", "hours": 1.7631, "text": "Devlog #38 : Integrated circuits Some of you have requested this, so I’m working on it! It’s not out yet, as it’s a pretty big feature. Integrated circuits will basically be custom components (most likely rectangles) with multiple inputs and outputs, all defined by the user. It’s literally a footprint, kinda like what you’d find in KiCad. I’ve started modifying the engine’s internals so it can handle these new types of connections (alongside the classic 1-pixel components). The real challenge here is keeping everything simple on the UX side, even though this feature targets more advanced users. The image below only shows what it might look like, this will probably change over time. As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: keep working on this feature, polish the UI/UX, ship it, and sadly… the end of stardance :("}, {"post_id": 80656, "ts": "2026-10-18T12:34:55Z", "hours": 0.6414, "text": "Devlog #37 : Probe tool is out! You can now inspect your circuits with this new tool. It highlights equipotential wires. I also added small circles to every connected ports. Next steps: UI polish, and maybe a “challenge” or “community circuits” tab."}, {"post_id": 80469, "ts": "2026-10-17T19:03:13Z", "hours": 1.3664, "text": "Devlog #36 : Probe tool and 4-bit calculator. While I was working on improving my 7-segment display, I had quite a hard time simplifying the circuit. Then I thought it could be really useful to have a tool that shows all the equipotential wires. So I’m currently working on it! It’s working, but I still have to improve its style before publishing it. Aside from that, I actually spent way too many hours improving the 4-bit calculator. And it’s now finished! It’s available in the demo circuit if you want to try it. I’ll see if I can build a keyboard later so users don’t have to enter numbers in binary. As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: finish the Probe tool, polish the UI, add a “challenge” tab."}, {"post_id": 79615, "ts": "2026-10-14T18:37:38Z", "hours": 1.4939, "text": "Devlog #35 : UI cleanup and (another) demo circuit The sidebar was getting a bit too crowded, so I added a small button to show/hide the more advanced components. The idea is to make things a little less overwhelming for new users, instead of throwing everything at them right away. I also worked on a 4-bit adder and wired it up to my 7-segment decoder! I’m going to try making it a 4-bit decoder instead of a 3-bit one, but things are going to get a lot more complicated (more numbers = more logic gates). One small issue with the adder for now: the most significant bit is on the right, so the input is basically reversed. I’ll fix that soon. In the meantime, you can already try it out in the live demo project! As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: more UI/UX improvements, adding challenges, and continuing to waste way too much of my time messing around with circuits xd"}, {"post_id": 79427, "ts": "2026-10-13T22:49:03Z", "hours": 0.4678, "text": "Devlog #34 : New component: Memory! This is one step up in difficulty! It has two inputs: a clock input (at the top) and a signal input (on the left). The output signal is provided on the right. This component can store a 1-bit value, which is updated on every rising edge of the clock signal. You can basically build anything with the component available: calculator, more advanced display (e.g. a 7-segment decoder that can go from 0 to 9). I added a 3-bit binary counter that I wired up to my 7-segment decoder! (demo bellow). It’s also included in the demo project file. Next steps: cleanup UI and improve UX (the sidebar is really really crowded right now)"}, {"post_id": 79113, "ts": "2026-10-12T18:33:18Z", "hours": 1.6869, "text": "Devlog #33 : Docs update and 1-bit memory! I added the clock to the docs page, along with some new tests for it. I’m also almost done with the 1-bit memory (basically a simplified D flip-flop). I’ll share it in the next devlog! Also, if you like this project, you can leave a star on the project’s GitHub page if you wish! Next steps: finish the 1-bit memory and clean up the UI/UX"}, {"post_id": 77284, "ts": "2026-10-06T12:57:02Z", "hours": 1.4464, "text": "Devlog #32 : New component: CLOCK (finally) This one was relatively easy to implement! The tick system was already there, but it was only triggered by user interactions. Now, your circuits run at 10 ticks/s, and the clock has a constant 1 Hz square signal (the recording below is choppy, but yes it is indeed a 1 Hz periodic signal) This component only has one output. I thought it would make building complex circuits easier if the other sides were isolated. Next steps: 1-bit memory, and then a lot of UX/UI improvements!"}, {"post_id": 76710, "ts": "2026-10-04T11:58:04Z", "hours": 1.9281, "text": "Devlog #31 : UI improvement! I replaced the old “main shortcuts” section in the sidebar with simple links. It frees up some space, makes the interface feel cleaner, and should make it much easier to add a proper “Challenge” tab later. Next steps: add a clock and a 1-bit memory."}, {"post_id": 76242, "ts": "2026-10-02T20:30:28Z", "hours": 2.1839, "text": "Devlog #30 : Component documentation! I’ve added a new page in the sidebar that shows a description and preview image for every component. A few people asked for this in the reviews of my first ship, so it felt like a good addition. Also, if you have any idea of how I could integrate the new more advanced features without overwhelming new users, I’m all ears! The sidebar is starting to get pretty crowded, so I need to find a cleaner way to organize everything and keep navigation smooth. Also, huge thanks to the Stardance staff for awarding this project Superstar ❤️ Next steps: code cleanup, UX improvements, 1-bit memory support, and FINALLY the clock."}, {"post_id": 75958, "ts": "2026-10-01T18:50:05Z", "hours": 4.13, "text": "Devlog #29 : New feature: Multi-layer! You can now build circuits across two layers! I added vias, so you can connect the two layers together (obviously). When you place a via, it’s added on both layers, it basically works like a wire. I also finished the 7-segment decoder: 3bit input, supporting only 0-4 for now. The other values are just don’t-cares. Next steps: polish the code and UI, then add some documentation."}, {"post_id": 75590, "ts": "2026-09-30T14:38:26Z", "hours": 2.4681, "text": "Devlog #28 : Multi-layer (and thank you!!) First of all, thank you so much for all the support on this project! The Stardancers who reviewed my first ship got some really great advices. I’ll be following up on a lot of it. So, I’m planning to add: a simple component documentation some challenges (e.g. 7-segment decoder, XOR gate) more advanced features (clock, 1-bit memory) and what I’m working on right now: a second layer! (currently, wires can’t cross each other, which becomes a real issue with more complex circuits) and, if I have enough time, a place where people can share circuit snippets and showcase their projects! The real challenge will be integrating all of this while keeping the UI clean and the UX intuitive. The screenshot below shows what the circuit viewport could look like with the second layer."}, {"post_id": 74661, "ts": "2026-09-27T21:50:30Z", "hours": 1.2256, "text": "Devlog #27 : Some optimization, code cleanup, and brand new readme! That’s the last devlog for this project before I ship!"}, {"post_id": 74620, "ts": "2026-09-27T19:48:58Z", "hours": 2.7119, "text": "Devlog #26 : I’ve done many small improvements, such as: ability to move annotations undo/redo buttons custom favicon Next step: SHIP!"}, {"post_id": 74207, "ts": "2026-09-26T22:21:43Z", "hours": 2.4531, "text": "Devlog #25 : UI/UX improvements! I improved the component selection outline. Now the outline is around the whole selected group of pixels, instead of around each individual pixel. You can also now delete selected components by pressing Del on your keyboard. And I added a little preview showing the pixel currently targeted by the cursor. Next steps: keep working on the UI/UX, and ship!"}, {"post_id": 74006, "ts": "2026-09-26T14:48:02Z", "hours": 2.2353, "text": "Devlog #24 : New feature (kinda): the camera position and zoom are now stored in the project file, and loaded when you open the project. That means you can setup any point of view in your project, and the viewport will be right where you left it when you open it again! I also fixed a bunch of UI inconsistencies: the hover label position is now responsive to the workspace sidebar (before, it was getting hidden behind it) unified border colors fixed the phone workspace responsiveness made the sidebar on the right a little bit smaller I also continued working on the 7-segment display, but ran into some issues since wires can’t cross each other. So I thought about having circuits on two different layers. What do you think about this? Next steps: I’ll probably polish the UX a little bit more, and then ship the project. But I’m planning to keep working on it!"}, {"post_id": 73755, "ts": "2026-09-25T21:20:35Z", "hours": 5.3378, "text": "Devlog #23 : New feature: Undo/Redo! You can now undo and redo things you’ve done in the editor. This works with both components and annotations. I had to implement a project history system. Basically, every time an action modifies the project, the previous project state is added to the past history stack. When you undo, the latest state from past becomes the current state, while the previous current state is moved to the future stack. When you redo, the next state from future becomes the current state and the previous current state is moved back to past. Yeah it’s messy 😂 I’m also still working on the 7-segment decoder. I switched to a 3-bit one, I’ll probably include it in the demo. Next steps: mostly UI and code improvements, and then I’ll probably ship it. I’ll keep working on it!"}, {"post_id": 73252, "ts": "2026-09-24T17:56:14Z", "hours": 4.5872, "text": "Devlog #22 : New feature: selection and copy/paste! You just have to press “S” and drag your mouse/pad while holding the left click. You can then copy, paste, or move the selected pixels around. Probably the most difficult feature I’ve worked on so far. I had to get some help from ChatGPT :’) I think this will be my last devlog before shipping, since one of my other projects has been pending for 18 days now, so yeah… I’ll still keep working on this project though!"}, {"post_id": 72869, "ts": "2026-09-23T21:59:41Z", "hours": 4.2722, "text": "Devlog #21 : Some UI/UX improvements and started working on selection! I’m currently working on the selection system. It works like this: Press S, then while holding it, drag the selection area with the left click. Once selected, you can copy, paste or move the selected block of pixels. It’s not committed yet! It still requires some work. Next steps: finish the selection feature, then add the clock. I also want to improve the UX as much as possible."}, {"post_id": 72417, "ts": "2026-09-22T21:44:45Z", "hours": 3.6344, "text": "Devlog #20 : demo project and UI/UX update! I added a demo project with a basic light/switch circuit, an OR and XOR gate, and a few annotations. I also (and mostly) removed the old “Quick start” section. It was becoming kinda useless since pretty much everything was already covered by the demo project. So I replaced it with a little intro to the project, along with a table of the shortcuts. I also added a little decoration to the bottom-left corner of the sidebar. I think it looks pretty dope! Next steps: copy/paste and selection, THEN add a clock."}, {"post_id": 71977, "ts": "2026-09-21T21:47:46Z", "hours": 2.3336, "text": "Devlog #19 : A little code cleanup! I refactored the App.tsx file because it was handling too many different things. Now each hook has its own dedicated file. Small refactor, but definitely a needed one! Next steps: add a demo project, improve the UI/UX and laptop pad support, add copy/paste and selection, and finally add a clock (eventually, at this point 😂)"}, {"post_id": 71454, "ts": "2026-09-20T21:12:46Z", "hours": 7.6194, "text": "Devlog #18 : You can save your work now! There are now two buttons in the bottom-left corner: Open and Save. Your projects are downloaded as .cirkuit files. This part was actually quite challenging, mostly because of the file format validation and all the tests around it. Next steps: clean up the code, cleanup the UI (it feels a bit messy right now), add a demo project, add copy/paste and selection, and add a clock"}, {"post_id": 70868, "ts": "2026-09-19T21:55:45Z", "hours": 4.9169, "text": "Devlog #17 : New feature: Annotations! You can now add labels, lines and rectangles to your circuits! I developed this feature so I can better explain what’s going on in the demo project when I’ll ship this project. But you can also use it to explain your craziest circuits! Next step: upload/download projects."}, {"post_id": 70240, "ts": "2026-09-18T19:31:51Z", "hours": 4.5228, "text": "Devlog #16 : Annotation feature (WIP) It’s not finished yet, but I’m currently working on a new annotation feature. Why? Because I’ll need it to explain the circuits in the demo! I’m adding this before the project download/upload system, because otherwise I’d have to refactor quite a bit of the system later. Also, I’m starting to build a 4-bit 7-segment decoder in Cirkuit! (I started with the two easier segments lmao) Next steps: continue working on the annotation system, then implement project download/upload."}, {"post_id": 69732, "ts": "2026-09-17T17:45:12Z", "hours": 4.5497, "text": "Devlog #15 : I added a little guide! The goal of this small guide is to explain a few things that might not be obvious to new users. You can close and reopen it whenever you want, so it doesn’t get in the way while you’re playing. It’s still available on the GitHub page if you want to give it a try! Next step: add a minimal circuit loading system (so I can add a default demo circuit), and THEN I’ll add the clock 😂😭"}, {"post_id": 69345, "ts": "2026-09-16T21:00:55Z", "hours": 4.0622, "text": "Devlog #14 : New component: AND gate! Now the two main gates are available (NOT & AND), so you can basically build anything with them! In the screenshot below, I built a working XOR logic gate, both in a large and a condensed version. A few changes since last time, apart from the new component: The old NOT gate wasn’t working properly because the circuit actually handles 3 states (low, floating, high), while the NOT component only supported low and high. So now, “floating” is considered as “low”. Also, there’s no longer real-time simulation, sadly. I had some issues with the logic gates: if you built them the wrong way, it could crash the entire webpage. So now you have to click on “Run simulation” to see the magic happen. It’s a bit less cool than real-time simulation, but at least it doesn’t nuke the whole page anymore lol. Next steps: UI/UX improvements, clock, and 1-bit memory later on"}, {"post_id": 68867, "ts": "2026-09-15T22:24:51Z", "hours": 5.5678, "text": "Devlog #13 : New component: NOT gate! This component returns the opposite signal you give it: low becomes high, high becomes low. I also improved the UI/UX. There’s now a new label in the bottom-left corner of the page that shows which component you’re hovering over with your mouse, and what its current state is. For example: “Wire | Low”, “Switch | Open”. I also fixed the pixel rendering, because before there were some really thin lines between them. And now the sidebar is responsive! Next steps: code cleanup, AND gate, clock"}, {"post_id": 68303, "ts": "2026-09-14T21:50:03Z", "hours": 2.3831, "text": "Devlog #12 : Wire states are now visually apparent! In the example below, on the first circuit, the first segment is high because it is powered by the source, while the second segment (connected to the lamp) is floating because the switch is open. I’ve also fixed a whole bunch of UI issues. You can try out this project on my GitHub page! Next step (for real this time): adding a NOT gate (the clock will come later)"}, {"post_id": 67690, "ts": "2026-09-13T21:26:19Z", "hours": 0.8703, "text": "Devlog #11 : I did some UI improvements, but before I commit, I’d like to have your opinion for the light component; which glow do you prefere?"}, {"post_id": 67626, "ts": "2026-09-13T19:32:41Z", "hours": 0.7378, "text": "Devlog #10: I added some tooltips so it’s easier to understand for you guys! Next steps: Start writting an actual documentation, add new components"}, {"post_id": 67547, "ts": "2026-09-13T17:58:10Z", "hours": 4.0528, "text": "Devlog #9 : New component: Switch This new component come with a new “simulation” mode, where you can interact with the components. Next step: add small tooltips to the sidebar elements, add new components (clock, memory…) It’s deployed so you can try it (see the project page)! I’d love to get some feedbacks."}, {"post_id": 67325, "ts": "2026-09-13T12:07:15Z", "hours": 0.7281, "text": "Devlog #8 : UI update! Changes: checkerboard background texture instead of the old grid custom selector on the component palette pixel art icons Next step: new components (switch, clock, memory…)"}, {"post_id": 67277, "ts": "2026-09-13T10:52:18Z", "hours": 2.2756, "text": "Devlog #7 : Now power and light can be connected from all sides! Also, since the old arrows are no longer necessary (at least for these components), I improved the UX by displaying the actual component icon instead. The icons on the circuit are also hidden by default now, and only appear when you hover over them. Oh and there’s an eraser now. I also deployed the website: nafo44.github.io/Cirkuit/ Next step: add new components (switch, clock, logic gates, memory)"}, {"post_id": 66878, "ts": "2026-09-12T20:32:38Z", "hours": 3.0808, "text": "Devlog #6: I wired up the simulation engine to the UI! It’s working really well, even tho there’s only 3 components right now (source, wire, light). I added arrows so you can easily rotate the components. I want this project to be really intuitive, so if you guys have some ideas to simplify this, I’m all ears! Next step: let a source and light to power/be powered through all sides, add new components (switch, clock, memory)"}, {"post_id": 66549, "ts": "2026-09-12T12:01:35Z", "hours": 4.5847, "text": "Devlog #5 : Now the component placement UI side is wired to our circuit layout! It probably don’t make much sens for you right now. Next step: modify visually the component grid according to the simulation."}, {"post_id": 65649, "ts": "2026-09-10T22:37:33Z", "hours": 5.8197, "text": "Devlog #4: The other half of the engine is done! It can now compute components state (low, high, floating, conflict) based on the connections between each other. Next step: wiring the engine to the UI."}, {"post_id": 65057, "ts": "2026-09-09T21:57:21Z", "hours": 6.5794, "text": "Devlog #3: I’ve finished half of the engine of my website, made to let you create circuits using pixel art. It wasn’t easy! I came up with a simplified netlist algorithm, to represent how a component (pixel) is oriented, how many are wired, to what, and through which side of the pixel. Components states aren’t handled yet, but that’s what I’m going to work on next."}, {"post_id": 64452, "ts": "2026-09-08T20:55:25Z", "hours": 2.1144, "text": "Devlog #2: I improved the UI, added mouse wheel support (to zoom and move the map). Now it’s time to work on the actual engine."}, {"post_id": 64381, "ts": "2026-09-08T18:22:49Z", "hours": 1.6267, "text": "Devlog #1: Hi! I just started making a website where you will be able to create circuits… with pixel art! The idea is to add different pixels: wire (gray), power (green), light (yellow), logic gates (AND, OR, …), memory (simple true/false state storage). I want to keep this as simple as possible to use."}]...
|
Title: Cirkuit by @spectra | Stardance
Devlogs:
D Title: Cirkuit by @spectra | Stardance
Devlogs:
Devlog #1: Hi! I just started making a website where you will be able to create circuits… with pixel art! The idea is to add different pixels: wire (gray), power (green), light (yellow), logic gates (AND, OR, …), memory (simple true/false state storage). I want to keep this as simple as possible to use.
Devlog #2: I improved the UI, added mouse wheel support (to zoom and move the map). Now it’s time to work on the actual engine.
Devlog #3: I’ve finished half of the engine of my website, made to let you create circuits using pixel art. It wasn’t easy! I came up with a simplified netlist algorithm, to represent how a component (pixel) is oriented, how many are wired, to what, and through which side of the pixel. Components states aren’t handled yet, but that’s what I’m going to work on next.
Devlog #4: The other half of the engine is done! It can now compute components state (low, high, floating, conflict) based on the connections between each other. Next step: wiring the engine to the UI.
Devlog #5 : Now the component placement UI side is wired to our circuit layout! It probably don’t make much sens for you right now. Next step: modify visually the component grid according to the simulation.
Devlog #6: I wired up the simulation engine to the UI! It’s working really well, even tho there’s only 3 components right now (source, wire, light). I added arrows so you can easily rotate the components. I want this project to be really intuitive, so if you guys have some ideas to simplify this, I’m all ears! Next step: let a source and light to power/be powered through all sides, add new components (switch, clock, memory)
Devlog #7 : Now power and light can be connected from all sides! Also, since the old arrows are no longer necessary (at least for these components), I improved the UX by displaying the actual component icon instead. The icons on the circuit are also hidden by default now, and only appear when you hover over them. Oh and there’s an eraser now. I also deployed the website: nafo44.github.io/Cirkuit/ Next step: add new components (switch, clock, logic gates, memory)
Devlog #8 : UI update! Changes: checkerboard background texture instead of the old grid custom selector on the component palette pixel art icons Next step: new components (switch, clock, memory…)
Devlog #9 : New component: Switch This new component come with a new “simulation” mode, where you can interact with the components. Next step: add small tooltips to the sidebar elements, add new components (clock, memory…) It’s deployed so you can try it (see the project page)! I’d love to get some feedbacks.
Devlog #10: I added some tooltips so it’s easier to understand for you guys! Next steps: Start writting an actual documentation, add new components
Devlog #11 : I did some UI improvements, but before I commit, I’d like to have your opinion for the light component; which glow do you prefere?
Devlog #12 : Wire states are now visually apparent! In the example below, on the first circuit, the first segment is high because it is powered by the source, while the second segment (connected to the lamp) is floating because the switch is open. I’ve also fixed a whole bunch of UI issues. You can try out this project on my GitHub page! Next step (for real this time): adding a NOT gate (the clock will come later)
Devlog #13 : New component: NOT gate! This component returns the opposite signal you give it: low becomes high, high becomes low. I also improved the UI/UX. There’s now a new label in the bottom-left corner of the page that shows which component you’re hovering over with your mouse, and what its current state is. For example: “Wire | Low”, “Switch | Open”. I also fixed the pixel rendering, because before there were some really thin lines between them. And now the sidebar is responsive! Next steps: code cleanup, AND gate, clock
Devlog #14 : New component: AND gate! Now the two main gates are available (NOT & AND), so you can basically build anything with them! In the screenshot below, I built a working XOR logic gate, both in a large and a condensed version. A few changes since last time, apart from the new component: The old NOT gate wasn’t working properly because the circuit actually handles 3 states (low, floating, high), while the NOT component only supported low and high. So now, “floating” is considered as “low”. Also, there’s no longer real-time simulation, sadly. I had some issues with the logic gates: if you built them the wrong way, it could crash the entire webpage. So now you have to click on “Run simulation” to see the magic happen. It’s a bit less cool than real-time simulation, but at least it doesn’t nuke the whole page anymore lol. Next steps: UI/UX improvements, clock, and 1-bit memory later on
Devlog #15 : I added a little guide! The goal of this small guide is to explain a few things that might not be obvious to new users. You can close and reopen it whenever you want, so it doesn’t get in the way while you’re playing. It’s still available on the GitHub page if you want to give it a try! Next step: add a minimal circuit loading system (so I can add a default demo circuit), and THEN I’ll add the clock 😂😭
Devlog #16 : Annotation feature (WIP) It’s not finished yet, but I’m currently working on a new annotation feature. Why? Because I’ll need it to explain the circuits in the demo! I’m adding this before the project download/upload system, because otherwise I’d have to refactor quite a bit of the system later. Also, I’m starting to build a 4-bit 7-segment decoder in Cirkuit! (I started with the two easier segments lmao) Next steps: continue working on the annotation system, then implement project download/upload.
Devlog #17 : New feature: Annotations! You can now add labels, lines and rectangles to your circuits! I developed this feature so I can better explain what’s going on in the demo project when I’ll ship this project. But you can also use it to explain your craziest circuits! Next step: upload/download projects.
Devlog #18 : You can save your work now! There are now two buttons in the bottom-left corner: Open and Save. Your projects are downloaded as .cirkuit files. This part was actually quite challenging, mostly because of the file format validation and all the tests around it. Next steps: clean up the code, cleanup the UI (it feels a bit messy right now), add a demo project, add copy/paste and selection, and add a clock
Devlog #19 : A little code cleanup! I refactored the App.tsx file because it was handling too many different things. Now each hook has its own dedicated file. Small refactor, but definitely a needed one! Next steps: add a demo project, improve the UI/UX and laptop pad support, add copy/paste and selection, and finally add a clock (eventually, at this point 😂)
Devlog #20 : demo project and UI/UX update! I added a demo project with a basic light/switch circuit, an OR and XOR gate, and a few annotations. I also (and mostly) removed the old “Quick start” section. It was becoming kinda useless since pretty much everything was already covered by the demo project. So I replaced it with a little intro to the project, along with a table of the shortcuts. I also added a little decoration to the bottom-left corner of the sidebar. I think it looks pretty dope! Next steps: copy/paste and selection, THEN add a clock.
Devlog #21 : Some UI/UX improvements and started working on selection! I’m currently working on the selection system. It works like this: Press S, then while holding it, drag the selection area with the left click. Once selected, you can copy, paste or move the selected block of pixels. It’s not committed yet! It still requires some work. Next steps: finish the selection feature, then add the clock. I also want to improve the UX as much as possible.
Devlog #22 : New feature: selection and copy/paste! You just have to press “S” and drag your mouse/pad while holding the left click. You can then copy, paste, or move the selected pixels around. Probably the most difficult feature I’ve worked on so far. I had to get some help from ChatGPT :’) I think this will be my last devlog before shipping, since one of my other projects has been pending for 18 days now, so yeah… I’ll still keep working on this project though!
Devlog #23 : New feature: Undo/Redo! You can now undo and redo things you’ve done in the editor. This works with both components and annotations. I had to implement a project history system. Basically, every time an action modifies the project, the previous project state is added to the past history stack. When you undo, the latest state from past becomes the current state, while the previous current state is moved to the future stack. When you redo, the next state from future becomes the current state and the previous current state is moved back to past. Yeah it’s messy 😂 I’m also still working on the 7-segment decoder. I switched to a 3-bit one, I’ll probably include it in the demo. Next steps: mostly UI and code improvements, and then I’ll probably ship it. I’ll keep working on it!
Devlog #24 : New feature (kinda): the camera position and zoom are now stored in the project file, and loaded when you open the project. That means you can setup any point of view in your project, and the viewport will be right where you left it when you open it again! I also fixed a bunch of UI inconsistencies: the hover label position is now responsive to the workspace sidebar (before, it was getting hidden behind it) unified border colors fixed the phone workspace responsiveness made the sidebar on the right a little bit smaller I also continued working on the 7-segment display, but ran into some issues since wires can’t cross each other. So I thought about having circuits on two different layers. What do you think about this? Next steps: I’ll probably polish the UX a little bit more, and then ship the project. But I’m planning to keep working on it!
Devlog #25 : UI/UX improvements! I improved the component selection outline. Now the outline is around the whole selected group of pixels, instead of around each individual pixel. You can also now delete selected components by pressing Del on your keyboard. And I added a little preview showing the pixel currently targeted by the cursor. Next steps: keep working on the UI/UX, and ship!
Devlog #26 : I’ve done many small improvements, such as: ability to move annotations undo/redo buttons custom favicon Next step: SHIP!
Devlog #27 : Some optimization, code cleanup, and brand new readme! That’s the last devlog for this project before I ship!
Devlog #28 : Multi-layer (and thank you!!) First of all, thank you so much for all the support on this project! The Stardancers who reviewed my first ship got some really great advices. I’ll be following up on a lot of it. So, I’m planning to add: a simple component documentation some challenges (e.g. 7-segment decoder, XOR gate) more advanced features (clock, 1-bit memory) and what I’m working on right now: a second layer! (currently, wires can’t cross each other, which becomes a real issue with more complex circuits) and, if I have enough time, a place where people can share circuit snippets and showcase their projects! The real challenge will be integrating all of this while keeping the UI clean and the UX intuitive. The screenshot below shows what the circuit viewport could look like with the second layer.
Devlog #29 : New feature: Multi-layer! You can now build circuits across two layers! I added vias, so you can connect the two layers together (obviously). When you place a via, it’s added on both layers, it basically works like a wire. I also finished the 7-segment decoder: 3bit input, supporting only 0-4 for now. The other values are just don’t-cares. Next steps: polish the code and UI, then add some documentation.
Devlog #30 : Component documentation! I’ve added a new page in the sidebar that shows a description and preview image for every component. A few people asked for this in the reviews of my first ship, so it felt like a good addition. Also, if you have any idea of how I could integrate the new more advanced features without overwhelming new users, I’m all ears! The sidebar is starting to get pretty crowded, so I need to find a cleaner way to organize everything and keep navigation smooth. Also, huge thanks to the Stardance staff for awarding this project Superstar ❤️ Next steps: code cleanup, UX improvements, 1-bit memory support, and FINALLY the clock.
Devlog #31 : UI improvement! I replaced the old “main shortcuts” section in the sidebar with simple links. It frees up some space, makes the interface feel cleaner, and should make it much easier to add a proper “Challenge” tab later. Next steps: add a clock and a 1-bit memory.
Devlog #32 : New component: CLOCK (finally) This one was relatively easy to implement! The tick system was already there, but it was only triggered by user interactions. Now, your circuits run at 10 ticks/s, and the clock has a constant 1 Hz square signal (the recording below is choppy, but yes it is indeed a 1 Hz periodic signal) This component only has one output. I thought it would make building complex circuits easier if the other sides were isolated. Next steps: 1-bit memory, and then a lot of UX/UI improvements!
Devlog #33 : Docs update and 1-bit memory! I added the clock to the docs page, along with some new tests for it. I’m also almost done with the 1-bit memory (basically a simplified D flip-flop). I’ll share it in the next devlog! Also, if you like this project, you can leave a star on the project’s GitHub page if you wish! Next steps: finish the 1-bit memory and clean up the UI/UX
Devlog #34 : New component: Memory! This is one step up in difficulty! It has two inputs: a clock input (at the top) and a signal input (on the left). The output signal is provided on the right. This component can store a 1-bit value, which is updated on every rising edge of the clock signal. You can basically build anything with the component available: calculator, more advanced display (e.g. a 7-segment decoder that can go from 0 to 9). I added a 3-bit binary counter that I wired up to my 7-segment decoder! (demo bellow). It’s also included in the demo project file. Next steps: cleanup UI and improve UX (the sidebar is really really crowded right now)
Devlog #35 : UI cleanup and (another) demo circuit The sidebar was getting a bit too crowded, so I added a small button to show/hide the more advanced components. The idea is to make things a little less overwhelming for new users, instead of throwing everything at them right away. I also worked on a 4-bit adder and wired it up to my 7-segment decoder! I’m going to try making it a 4-bit decoder instead of a 3-bit one, but things are going to get a lot more complicated (more numbers = more logic gates). One small issue with the adder for now: the most significant bit is on the right, so the input is basically reversed. I’ll fix that soon. In the meantime, you can already try it out in the live demo project! As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: more UI/UX improvements, adding challenges, and continuing to waste way too much of my time messing around with circuits xd
Devlog #36 : Probe tool and 4-bit calculator. While I was working on improving my 7-segment display, I had quite a hard time simplifying the circuit. Then I thought it could be really useful to have a tool that shows all the equipotential wires. So I’m currently working on it! It’s working, but I still have to improve its style before publishing it. Aside from that, I actually spent way too many hours improving the 4-bit calculator. And it’s now finished! It’s available in the demo circuit if you want to try it. I’ll see if I can build a keyboard later so users don’t have to enter numbers in binary. As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: finish the Probe tool, polish the UI, add a “challenge” tab.
Devlog #37 : Probe tool is out! You can now inspect your circuits with this new tool. It highlights equipotential wires. I also added small circles to every connected ports. Next steps: UI polish, and maybe a “challenge” or “community circuits” tab.
Devlog #38 : Integrated circuits Some of you have requested this, so I’m working on it! It’s not out yet, as it’s a pretty big feature. Integrated circuits will basically be custom components (most likely rectangles) with multiple inputs and outputs, all defined by the user. It’s literally a footprint, kinda like what you’d find in KiCad. I’ve started modifying the engine’s internals so it can handle these new types of connections (alongside the classic 1-pixel components). The real challenge here is keeping everything simple on the UX side, even though this feature targets more advanced users. The image below only shows what it might look like, this will probably change over time. As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: keep working on this feature, polish the UI/UX, ship it, and sadly… the end of stardance :(
Devlog #39 : Integrated circuits (again) I’m still working on this feature! I’m not at the frontend part yet, still adapting the engine. More details if you’re curious: A module has a definition that includes its name, public pins, and internal circuit. It can be used multiple times (it’s called an instance in the code). And all modules are listed in a catalog (that I’ll probably integrate in the frontend later). Instances can be selected, moved, copied and pasted, across the layers… The picture bellow shows how this feature could be used. It will make things much easier if you want to build more complex circuits like an 8 bit adder. You’ll just have to stack 8x 1-bit full adder modules! As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: finish the backend side, then integrate everything into the frontend, polish the UI, and ship!
Devlog #40 : Integrated circuits I’m (again) still working on this feature! Since my last devlog, I’ve updated the project document format to serialize the new modules. And that’s basically it! Next step: integrate them into the UI, polish the UX, and ship!
Devlog 41 : Integrated Circuits I’m working on the UI! The picture below shows what it currently looks like. I’m still not sure about the colors, so they might change. I still have the hardest part to figure out: How will users create and modify a module, UX-wise? Will it have its own sub-editor? How will users assign pins, name them, and define the module’s size and name? As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: Keep working on the UI, polish the UX/UI, and ship!
Devlog 42 : Integrated circuits (almost done!) It wasn’t easy! The UX part is actually really challenging. I had to rely on AI more than usual because Stardance is ending really soon, and I’m honestly a bit scared of not having enough time to ship :/ I’ll still try to polish the UI as much as possible! The screenshot below shows what it currently looks like. I added a new section for modules in the sidebar, where you can see all the modules you’ve created, edit them, or create new ones. When creating a new module, you can set its name, preview the footprint, add or remove inputs/outputs, and place them directly on the footprint. It’s almost ready tho! I’m just polishing the UX now. Next steps: finish this feature, polish the UI/UX, ship!
Devlog 43 : Tutorial! I added a tutorial on Cirkuit that explains how to make your own basic logic gate, and how to embed it into a module. If you want to try the website: https://nafo44.github.io/Cirkuit/ As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: polish UX, and SHIP!!
Last devlog : Module deletion, and THANK YOU! A huge thank you to all the Hack Club staff for organizing and maintaining Stardance. It’s been an incredible journey! And a huge thank you to everyone who followed or liked my projects over the past few months ❤️ Now, for the actual devlog: I added a delete button for modules, since someone requested it! When you delete a module, all instances of that module placed on the circuit are deleted too. Next step: cry because Stardance is over
Ships:
Hi! I’m really happy to introduce you to my biggest project so far. It’s called Cirkuit, and it’s a logic circuit sandbox simulator… but with pixel art! That means you can basically build anything using just pixels. Why pixels? You may ask. Well, many logic simulators already exist, but the issue is that most of them aren’t very accessible to the average user. That’s why I wanted Cirkuit to be as easy to use as possible. I’m already quite familiar with TypeScript and React, which I used for this project. So the most difficult part was actually figuring out how to implement features without having 100 nested loops :D I had a hard time figuring out how to build the core engine (obviously), as well as the annotation system. I’m quite proud of how it looks and how well it works. This project was a perfect opportunity for me to improve my design skills. I worked hard to reduce friction between the interface and the user (aka you, dear shipwriters). One piece of advice: try it on a computer with a mouse. Phones and trackpads are supported, but it’s not the best experience. Hope you’ll like this project!
Hi! I’m back with a big update to my biggest project so far: Cirkuit , a logic circuit sandbox simulator… but with pixel art! The idea is simple: build complex logic circuits by placing pixels (that’s literally it). I wanted to make logic simulators more accessible and intuitive. Since my first ship, I’ve added quite a few things: Clock: generate square-wave signals for sequential circuits. 1-bit memory: store a single bit of information (simplified D flip-flop) Probe tool: highlight equipotential wires (really useful for simplifying your circuits). A short tutorial: get started by building a simple circuit, followed by a demo showing how to turn it into a module. Modules! Turn circuits you’ve built into reusable components. You can find more details in the GitHub repository’s README. The biggest challenge was definitely implementing modules. From a UX perspective, I wanted creating and using them to feel natural. On the technical side, they required significant changes to the engine itself, including handling module footprints and compiling their internal circuits. I’m quite proud of how Cirkuit has evolved since the first ship. I’ve put a lot of effort into making the interface feel intuitive and reducing friction between the user and the tool (aka you, dear shipwriters). One piece of advice: try it on a computer with a mouse! Phones and trackpads are supported, but they’re not the ideal way to experience it. I hope you’ll enjoy this update! Try Cirkuit: https://nafo44.github.io/Cirkuit GitHub: https://github.com/NaFo44/Cirkuit...
|
1793825553.427333
|
1793911953.427333
|
|
59862
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739011.7316546
|
1794603011.7316546
|
|
59863
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739012.5796108
|
1794603012.5796108
|
|
59864
|
Github-Profile-Explorer by @itsmeankit804 | Starda Github-Profile-Explorer by @itsmeankit804 | Stardance...
|
itsmeankit804
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Github-Profile-Explorer by @itsmeankit804 | Title: Github-Profile-Explorer by @itsmeankit804 | Stardance...
|
1793638396.87839
|
1794243196.87839
|
|
59865
|
My own site! by @Sera | Stardance
|
Sera
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @Sera | Stardance
|
1793638397.765444
|
1794243197.765444
|
|
59866
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739013.6011276
|
1794603013.6011276
|
|
59867
|
Keeb by @aditis | Stardance
|
aditis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Keeb by @aditis | Stardance
|
1793638398.6460278
|
1794243198.6460278
|
|
59868
|
jarvis by @JakubScurka | Stardance
|
JakubScurka
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: jarvis by @JakubScurka | Stardance
|
1793638399.5862508
|
1794243199.5862508
|
|
59869
|
My very own WebOS by @thatcoder9 | Stardance
|
thatcoder9
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @thatcoder9 | Stardanc Title: My very own WebOS by @thatcoder9 | Stardance...
|
1793638400.4659767
|
1794243200.4659767
|
|
59870
|
BLARE!! by @gemzaidahmad | Stardance
|
gemzaidahmad
|
0
|
0.58
|
0
|
[]
|
[{"post_id": 64936, "ts": "202 [{"post_id": 64936, "ts": "2026-09-09T17:39:24Z", "hours": 0.2667, "text": "Still working on the schematics: I only did about half an hour of work since I’m currently occupied with the firmware for the Macro-pad :3"}, {"post_id": 64333, "ts": "2026-09-08T17:08:10Z", "hours": 0.3167, "text": "I started with the schematics for my alarm clock because I was bored of making the firmware for the Macropad (ik lol). There is not much I did so not much to talk about"}]...
|
Title: BLARE!! by @gemzaidahmad | Stardance
Devlo Title: BLARE!! by @gemzaidahmad | Stardance
Devlogs:
I started with the schematics for my alarm clock because I was bored of making the firmware for the Macropad (ik lol). There is not much I did so not much to talk about
Still working on the schematics: I only did about half an hour of work since I’m currently occupied with the firmware for the Macro-pad :3...
|
1793638401.3560336
|
1794243201.3560336
|
|
59871
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739015.462082
|
1794603015.462082
|
|
59872
|
BLARE by @ayaanzulfiqar | Stardance
|
ayaanzulfiqar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: BLARE by @ayaanzulfiqar | Stardance
|
1793638402.3083463
|
1794243202.3083463
|
|
59873
|
My awesome macropad! by @Gazeatprince | Stardance
|
Gazeatprince
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Gazeatprince | Sta Title: My awesome macropad! by @Gazeatprince | Stardance...
|
1793638405.566809
|
1794243205.566809
|
|
59874
|
random-project-i-do-work-on-so-i-can-get-the-daily random-project-i-do-work-on-so-i-can-get-the-daily-5-minutes-needed-for-the-streak-easier by @SeradedStripes | Stardance...
|
SeradedStripes
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: random-project-i-do-work-on-so-i-can-get-th Title: random-project-i-do-work-on-so-i-can-get-the-daily-5-minutes-needed-for-the-streak-easier by @SeradedStripes | Stardance...
|
1793638406.4612145
|
1794243206.4612145
|
|
59875
|
My very own WebOS by @AyushGupta | Stardance
|
AyushGupta
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @AyushGupta | Stardanc Title: My very own WebOS by @AyushGupta | Stardance...
|
1793638407.36839
|
1794243207.36839
|
|
59876
|
My awesome macropad! by @syedziq | Stardance
|
syedziq
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @syedziq | Stardanc Title: My awesome macropad! by @syedziq | Stardance...
|
1793638408.3084314
|
1794243208.3084314
|
|
59877
|
My awesome macropad! by @rr3678203 | Stardance
|
rr3678203
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @rr3678203 | Starda Title: My awesome macropad! by @rr3678203 | Stardance...
|
1793638409.9643319
|
1794243209.9643319
|
|
59878
|
a website by @lolipop | Stardance
|
lolipop
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: a website by @lolipop | Stardance
|
1793638411.8908305
|
1794243211.8908305
|
|
59879
|
first web by @krisz | Stardance
|
krisz
|
0
|
0.52
|
0
|
[]
|
[{"post_id": 64789, "ts": "202 [{"post_id": 64789, "ts": "2026-09-09T13:31:23Z", "hours": 0.5167, "text": "Made this little web, i still need to add some stuff but yeah, this is a little progress report"}]...
|
Title: first web by @krisz | Stardance
Devlogs:
M Title: first web by @krisz | Stardance
Devlogs:
Made this little web, i still need to add some stuff but yeah, this is a little progress report...
|
1793638413.1154897
|
1794243213.1154897
|
|
59880
|
my_warioware_game by @zunno_francesco | Stardance
|
zunno_francesco
|
0
|
0.83
|
0
|
[]
|
[{"post_id": 64348, "ts": "202 [{"post_id": 64348, "ts": "2026-09-08T17:28:11Z", "hours": 0.8333, "text": "first time coding a game pls give me advice were to learn something asap"}]...
|
Title: my_warioware_game by @zunno_francesco | Sta Title: my_warioware_game by @zunno_francesco | Stardance
Devlogs:
first time coding a game pls give me advice were to learn something asap...
|
1793638414.0984411
|
1794243214.0984411
|
|
59881
|
SAATHI — Offline Life Companion · Scam Shield, Mon SAATHI — Offline Life Companion · Scam Shield, Money Desk, Emergency by @Yug_Bhimani | Stardance...
|
Yug_Bhimani
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SAATHI — Offline Life Companion · Scam Shie Title: SAATHI — Offline Life Companion · Scam Shield, Money Desk, Emergency by @Yug_Bhimani | Stardance...
|
1793638415.030552
|
1794243215.030552
|
|
59882
|
tabbed by @xvcf | Stardance
|
xvcf
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T17:45:59Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a new tab site with a search bar! You can search things there on DuckDuckGo or search on YouTube by starting your search with “@yt “!", "repo": "https://github.com/RafaeloxMC/tabbed", "demo": "https://tabbed.xvcf.dev"}]...
|
[{"post_id": 64357, "ts": "202 [{"post_id": 64357, "ts": "2026-09-08T17:42:45Z", "hours": 0.38, "text": "Made the site! I tried to speedrun this mission and my timer is still counting as of writing this! I made the whole site and deployed it! It has a search bar, where you can search on DuckDuckGo or YouTube (if you start your search with “@yt “)!"}]...
|
Title: tabbed by @xvcf | Stardance
Devlogs:
Made Title: tabbed by @xvcf | Stardance
Devlogs:
Made the site! I tried to speedrun this mission and my timer is still counting as of writing this! I made the whole site and deployed it! It has a search bar, where you can search on DuckDuckGo or YouTube (if you start your search with “@yt “)!
Ships:
I made a new tab site with a search bar! You can search things there on DuckDuckGo or search on YouTube by starting your search with “@yt “!...
|
1793825554.8239255
|
1793911954.8239255
|
|
59883
|
Bacon Bot by @jehawk620 | Stardance
|
jehawk620
|
0
|
0.5
|
0
|
[]
|
[{"post_id": 65081, "ts": "202 [{"post_id": 65081, "ts": "2026-09-09T23:18:43Z", "hours": 0.4961, "text": "I’m still learning the ropes and spent most of the time trying to learn VS. I’m enjoying the process so far!"}]...
|
Title: Bacon Bot by @jehawk620 | Stardance
Devlog Title: Bacon Bot by @jehawk620 | Stardance
Devlogs:
I’m still learning the ropes and spent most of the time trying to learn VS. I’m enjoying the process so far!...
|
1793638415.9146585
|
1794243215.9146585
|
|
59884
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739016.337543
|
1794603016.337543
|
|
59885
|
My awesome macropad! by @ghadi | Stardance
|
ghadi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ghadi | Stardance
|
1793638416.8016806
|
1794243216.8016806
|
|
59886
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739018.0830038
|
1794603018.0830038
|
|
59887
|
Idk alarm by @ghadi | Stardance
|
ghadi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Idk alarm by @ghadi | Stardance
|
1793638417.741861
|
1794243217.741861
|
|
59888
|
NatDex by @alex_l | Stardance
|
alex_l
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: NatDex by @alex_l | Stardance
|
1793638418.6906273
|
1794243218.6906273
|
|
59889
|
Minimalstic-phone-stand-multiuse-mat-for-two. by @ Minimalstic-phone-stand-multiuse-mat-for-two. by @aditis | Stardance...
|
aditis
|
0
|
0.93
|
0
|
[]
|
[{"post_id": 65075, "ts": "202 [{"post_id": 65075, "ts": "2026-09-09T22:50:00Z", "hours": 0.3667, "text": "(Sorry still not my final actually) I got the idea to fill in the zig zags for better grip, and made the speakers smaller so this whole thing is fully more compact. Let me know what you think in the comments!"}, {"post_id": 64468, "ts": "2026-09-08T21:46:23Z", "hours": 0.2836, "text": "NOW I IMPLEMENTED SPEAKERS! So, my last final design was not final because I came up with another idea right when I submitted so my idea is we can have Bluetooth speakers on it too!"}, {"post_id": 64445, "ts": "2026-09-08T20:38:40Z", "hours": 0.2833, "text": "Just finished the final design on cad!"}]...
|
Title: Minimalstic-phone-stand-multiuse-mat-for-tw Title: Minimalstic-phone-stand-multiuse-mat-for-two. by @aditis | Stardance
Devlogs:
Just finished the final design on cad!
NOW I IMPLEMENTED SPEAKERS! So, my last final design was not final because I came up with another idea right when I submitted so my idea is we can have Bluetooth speakers on it too!
(Sorry still not my final actually) I got the idea to fill in the zig zags for better grip, and made the speakers smaller so this whole thing is fully more compact. Let me know what you think in the comments!...
|
1793638419.6363707
|
1794243219.6363707
|
|
59890
|
shaula by @znovo | Stardance
|
znovo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: shaula by @znovo | Stardance
|
1793638420.8186717
|
1794243220.8186717
|
|
59891
|
Icelang by @Ankush | Stardance
|
Ankush
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Icelang by @Ankush | Stardance
|
1793638421.7278867
|
1794243221.7278867
|
|
59892
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739018.9293022
|
1794603018.9293022
|
|
59893
|
A gaming wesite by @Shree1234 | Stardance
|
Shree1234
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A gaming wesite by @Shree1234 | Stardance
|
1793638422.6474156
|
1794243222.6474156
|
|
59894
|
WarioWare Game by @Arturo_Ortega | Stardance
|
Arturo_Ortega
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @Arturo_Ortega | Stardanc Title: WarioWare Game by @Arturo_Ortega | Stardance...
|
1793638423.5776277
|
1794243223.5776277
|
|
59895
|
On_baseOS by @zunno_francesco | Stardance
|
zunno_francesco
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: On_baseOS by @zunno_francesco | Stardance
|
1793638424.508137
|
1794243224.508137
|
|
59896
|
My own site! by @v3nus_ | Stardance
|
v3nus_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @v3nus_ | Stardance
|
1793638425.4176383
|
1794243225.4176383
|
|
59897
|
Loom by @kaveeshkrishna | Stardance
|
kaveeshkrishna
|
1
|
100.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-16T10:42:34Z", "hours": 100.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Loom is a self hosted file manager for your own server or NAS. You point it at a folder of photos, videos, and documents you already have and it gives you a proper web app to browse, search, and stream them from anywhere, without ever touching or reorganizing the actual files on disk. I built it because I have a Samsung T7 drive full of a decade of family photos and every app I tried wanted to import everything into its own library and rename stuff. Loom just reads whatever folder structure you already have and works with that. . Under the hood it’s three Docker containers, a Next.js app for the UI and API, a separate worker that indexes the filesystem and makes thumbnails, and Postgres for metadata only, never file content. It has a full file browser with grid and list views, a photo and video viewer, drag and drop uploads, trash with recovery, multiple user accounts with per folder permissions, and an audit log. There’s also a public demo you can try without installing anything, it’s a completely fake version running with no backend at all, everything happens in your browser. . The hardest part by far was video playback. Browsers only play a handful of video formats natively, so anything else, HEVC from an iphone, old MOV and AVI files, needed converting on the fly. I didn’t want to transcode an entire two hour video before someone could watch even the first second of it, so I built a system that only converts the exact chunk of video someone is actually watching or seeking to, in six second pieces, and shares the work if two people ask for the same part at once. Getting that to not corrupt itself when someone seeks around took a lot of debugging. . The other really annoying stretch was making the demo version work. It’s a static build with literally no server, and the entire fake backend is done by intercepting fetch requests in the browser. I got it fully built and deployed and it looked fine, every page loaded, every request returned 200, and it was completely broken underneath, folders showed up empty and buttons did nothing. Turned out the code that fakes the backend was never actually running in the browser at all because of how Next.js bundles server components, and curl and normal build checks couldn’t catch it since everything technically responded fine. I only found it by scripting an actual headless browser to click through the site. . What I’m most proud of is probably the idle drive design. A lot of self hosted apps for photos and files constantly watch your disk or hash every file on every scan, and I really didn’t want that for a drive that spins down. Loom only reads file size and modified time to check for changes, and only actually opens a file’s content the first time something genuinely needs to, like making a thumbnail. A full rescan of a library that hasn’t changed barely touches the disk at all. . To test it, the easiest way is the live demo, no install needed, any username and password works and there’s a button that fills in the demo login for you. From there you can click into the sample folders (they go a few levels deep on purpose), open a photo or video, try renaming or trashing something and refresh the page to see it stuck around, and check out the settings pages for users, permissions, and the scanner. If you want to run the real thing, it’s a single script install with Docker, clone the repo and run the install script and it walks you through the rest.", "repo": "https://github.com/KaveeshKrishna/loom", "demo": "https://loomdemo.kaveeshkrishna.in/"}]...
|
[{"post_id": 69058, "ts": "202 [{"post_id": 69058, "ts": "2026-09-16T09:40:09Z", "hours": 7.2369, "text": "DEVLOG_13: OKKK, so this is gonna be the last devlog for Loom before I ship it. Loom is now ready to be used by anyone in their VPS to manage their personal file :] . I also made a demo website for loom which anyone can visit to see how it works and looks at loomdemo.kaveeshkrishna.in . Fixed the last remaining bugs and made the permissions working properly, now every new account in Loom can be given a set of permissions and that account will not be able to access files other than the set permissions."}, {"post_id": 68572, "ts": "2026-09-15T10:33:23Z", "hours": 9.1325, "text": "DEVLOG_12: This was a long and major update session, I added a working notification system, if uploading files or downloading files or moving them causes any error, loom safely pauses the operation to avoid problems with the file and throws a notification stating what happened. Also other notifications like scan completion is also given :] . The file and folder upload features are actually working now, although it gets stuck when uploading very large files, I am trying to make it more reliable at the moment. . So let me explain how file upload actually works in loom, so when you upload a file it shows as uploaded on the screen but in the backend it stays in the internal storage of the vps, an automatic scan job is triggered for that file/folder, all the indexing and preview/thumbnail generation is completed and then the file/folder is transferred to the designated path. . File search now also works with the Photos, Videos, and Documents tabs."}, {"post_id": 68328, "ts": "2026-09-14T23:07:39Z", "hours": 7.9258, "text": "DEVLOG_11: OK!! so in this coding session I built a File Health page in Loom. This is a feature which I was personally excited to make :] . So basically while the Scan is running Loom tries to index files, generate preview and thumbnails for media files, if during this process any files throws error and Loom finds out the file is corrupt or has any issues it labels the issue and hides it from the file explorer and shows it in the dedicated File Health page. . At the moment it only displays these compromised files and shows the exact error they gave, but in the future I want to make Loom be able to fix these files if possible."}, {"post_id": 68019, "ts": "2026-09-14T12:02:43Z", "hours": 5.9486, "text": "DEVLOG_10: I have added a proper trash system. So any file you delete gets transferred to the .trash folder inside the same storage device and sits there for 15 days. if you don’t manually deleted them permanently, they get deleted automatically after 15 days. . Right now I am transferring all the deleted files and folders as it is to the trash, but I am thinking to make them compressed while storing inside the trash so that the don’t take up a lot of space, I haven’t implemented this though as I am not sure how am I gonna do it properly yet :]"}, {"post_id": 67577, "ts": "2026-09-13T18:32:50Z", "hours": 4.1153, "text": "DEVLOG_9: Ok now the Favorites, Photos, Videos and Documents pages are working properly. . In the Fav page all the files which we have starred are listed, and on the vid, photos and docs pages the respective kind of files are listed. . These specific pages are essentially acting like a filter filtering out specific files extensions from throughout the storage device and listing all of the filtered files in one place :]"}, {"post_id": 67370, "ts": "2026-09-13T13:36:45Z", "hours": 6.4731, "text": "DEVLOG_8: Added a proper folder path tree just like windows file explorer. It grows as you open folders inside folders and clicking on the previous folder name will take you to that folder. :] . I have made it properly responsive too, so if it grows too much the previous folders are replaced with “…”"}, {"post_id": 67116, "ts": "2026-09-13T05:34:18Z", "hours": 8.9731, "text": "DEVLOG_7: OK!! so this time I have added a few small but noticeable features!! . First, I added multiple file/folder selection and bulk actions like delete. . Second, I made the search work, so it searches in the current open directory by default and if you are on the home page then ofc it searches the entire storage device, but if you are in some other folder and you try searching it will by default search in that folder only if you want it to search the entire storage device then u can click on the little global search icon beside the search bar (it appears only when you are not in the home directory) And it is quite fast because it searches using the folder indexes stored in the database during scan. . Third, I added list view and in the grid view I added 4 different icon sizes, Small, Medium, Large, Extra Large. . And Finally, for all the right click actions, I added a long press action for touch screen devices :]"}, {"post_id": 66801, "ts": "2026-09-12T18:06:55Z", "hours": 8.07, "text": "DEVLOG_6: Ok, I don’t why it took me this long to implement but here we are _ I added right click action menu for folders, files and directory. right clicking on the empty space of current directory will give you options to upload files and folders and create folders (only create folder action works at the moment). And right clicking on folders and files will give you options like cut, paste, copy delete and star. Starring a file will add it to the favorites folder which can be accessed via the side panel and deleting anything will send it to the trash folder and it will be permanently deleted after 15 days. I am still working on making the proper UI of trash folder and fav folder :]"}, {"post_id": 66436, "ts": "2026-09-12T08:28:41Z", "hours": 12.1856, "text": "DEVLOG_5: Worked for 12+ hours straight and finally implemented a lot of very important features. The Scanner is now properly working there was a bug I solved which was making the scanner log the indexes of the files but never start a preview or thumbnail generation. Now each time U hit scan button it goes through the entire directory of your storage device and every file is properly indexed in a postgres database. every img file is sent to a thumbnail and preview generator and from every vid file its 1st second is captured and used to generate a thumbnail and preview for it as well. All these thumbnails and previews are stored in the internal ssd of the vps so that when you are scrolling throught the galary the main ssd is not touched and the user sees a lower quality thumbnail of every image and vid instead of loading the entire thing in full quality. To actually play vids on the browser, I’m using HLS Video Cache which lets me supply the vid to the user’s browser in chunks rather than the entire file at once, it makes the loading faster and playtime smooth. Lasty I also added an audit log page which shows the last 20 audits on done on Loom :]"}, {"post_id": 66079, "ts": "2026-09-11T17:28:39Z", "hours": 8.905, "text": "DEVLOG_4: In the settings page I have added the option to create new users with different permissions. I can decide which folders each account can see and what they can not see. Also, the Scanner page now lets me start a manual scan which will go through the storage device and index all the files properly. I am also working on an automatic Preview and Thumbnail generation while this scan runs but right now it is not working, hopegully by the next 2 Devlogs I can make it work :]"}, {"post_id": 65820, "ts": "2026-09-11T06:55:27Z", "hours": 6.3156, "text": "DEVLOG_3: After doing a lot of research online about industry standard says to make a secure login method. I added a login page that uses email and password, no Google OAuth because Loom is not supposed to be a public website but for personal use. I’m using better-auth for the actual logic. It hashes passwords with Scrypt so they are never stored in plain text, and it keeps sessions as a row in a sessions table plus a signed httpOnly cookie. The cookie is signed with BETTER_AUTH_SECRET which the installer generates as a random 48 byte value. Each sessions last 30 days and refresh if they are older than a day, so you dont get logged out mid use. CSRF is handled by TRUSTED_ORIGINS in the env, a list of origins allowed to make logged in requests, anything not on the list gets rejected :]"}, {"post_id": 65358, "ts": "2026-09-10T13:25:15Z", "hours": 5.6942, "text": "DEVLOG_2: This one took more time than I thought but now Loom is able to identify folder structure and files inside my SSD :] The scanner walks the tree with readdir and stat, and for every file it stores the path (relative to /media), the name, file or directory, the type, size and modified time. all of that becomes a FileNode row in Postgres."}, {"post_id": 64829, "ts": "2026-09-09T14:44:59Z", "hours": 9.1172, "text": "DEVLOG_1: After taking break from my project Sentinel, I have now started a new project Loom. It is again related to the home server I made using my 7 year old laptop!! I am making this project because I wanted a reliable way to access and edit personal files which are on an external ssd attached to my server. Everything remotely. Right now I have made the initial UI of Loom and a rough outline of where buttons and options are gonna be. now I am gonna work on all the different sections you are seeing on the attached image :]"}]...
|
Title: Loom by @kaveeshkrishna | Stardance
Devlog Title: Loom by @kaveeshkrishna | Stardance
Devlogs:
DEVLOG_1: After taking break from my project Sentinel, I have now started a new project Loom. It is again related to the home server I made using my 7 year old laptop!! I am making this project because I wanted a reliable way to access and edit personal files which are on an external ssd attached to my server. Everything remotely. Right now I have made the initial UI of Loom and a rough outline of where buttons and options are gonna be. now I am gonna work on all the different sections you are seeing on the attached image :]
DEVLOG_2: This one took more time than I thought but now Loom is able to identify folder structure and files inside my SSD :] The scanner walks the tree with readdir and stat, and for every file it stores the path (relative to /media), the name, file or directory, the type, size and modified time. all of that becomes a FileNode row in Postgres.
DEVLOG_3: After doing a lot of research online about industry standard says to make a secure login method. I added a login page that uses email and password, no Google OAuth because Loom is not supposed to be a public website but for personal use. I’m using better-auth for the actual logic. It hashes passwords with Scrypt so they are never stored in plain text, and it keeps sessions as a row in a sessions table plus a signed httpOnly cookie. The cookie is signed with BETTER_AUTH_SECRET which the installer generates as a random 48 byte value. Each sessions last 30 days and refresh if they are older than a day, so you dont get logged out mid use. CSRF is handled by TRUSTED_ORIGINS in the env, a list of origins allowed to make logged in requests, anything not on the list gets rejected :]
DEVLOG_4: In the settings page I have added the option to create new users with different permissions. I can decide which folders each account can see and what they can not see. Also, the Scanner page now lets me start a manual scan which will go through the storage device and index all the files properly. I am also working on an automatic Preview and Thumbnail generation while this scan runs but right now it is not working, hopegully by the next 2 Devlogs I can make it work :]
DEVLOG_5: Worked for 12+ hours straight and finally implemented a lot of very important features. The Scanner is now properly working there was a bug I solved which was making the scanner log the indexes of the files but never start a preview or thumbnail generation. Now each time U hit scan button it goes through the entire directory of your storage device and every file is properly indexed in a postgres database. every img file is sent to a thumbnail and preview generator and from every vid file its 1st second is captured and used to generate a thumbnail and preview for it as well. All these thumbnails and previews are stored in the internal ssd of the vps so that when you are scrolling throught the galary the main ssd is not touched and the user sees a lower quality thumbnail of every image and vid instead of loading the entire thing in full quality. To actually play vids on the browser, I’m using HLS Video Cache which lets me supply the vid to the user’s browser in chunks rather than the entire file at once, it makes the loading faster and playtime smooth. Lasty I also added an audit log page which shows the last 20 audits on done on Loom :]
DEVLOG_6: Ok, I don’t why it took me this long to implement but here we are _ I added right click action menu for folders, files and directory. right clicking on the empty space of current directory will give you options to upload files and folders and create folders (only create folder action works at the moment). And right clicking on folders and files will give you options like cut, paste, copy delete and star. Starring a file will add it to the favorites folder which can be accessed via the side panel and deleting anything will send it to the trash folder and it will be permanently deleted after 15 days. I am still working on making the proper UI of trash folder and fav folder :]
DEVLOG_7: OK!! so this time I have added a few small but noticeable features!! . First, I added multiple file/folder selection and bulk actions like delete. . Second, I made the search work, so it searches in the current open directory by default and if you are on the home page then ofc it searches the entire storage device, but if you are in some other folder and you try searching it will by default search in that folder only if you want it to search the entire storage device then u can click on the little global search icon beside the search bar (it appears only when you are not in the home directory) And it is quite fast because it searches using the folder indexes stored in the database during scan. . Third, I added list view and in the grid view I added 4 different icon sizes, Small, Medium, Large, Extra Large. . And Finally, for all the right click actions, I added a long press action for touch screen devices :]
DEVLOG_8: Added a proper folder path tree just like windows file explorer. It grows as you open folders inside folders and clicking on the previous folder name will take you to that folder. :] . I have made it properly responsive too, so if it grows too much the previous folders are replaced with “…”
DEVLOG_9: Ok now the Favorites, Photos, Videos and Documents pages are working properly. . In the Fav page all the files which we have starred are listed, and on the vid, photos and docs pages the respective kind of files are listed. . These specific pages are essentially acting like a filter filtering out specific files extensions from throughout the storage device and listing all of the filtered files in one place :]
DEVLOG_10: I have added a proper trash system. So any file you delete gets transferred to the .trash folder inside the same storage device and sits there for 15 days. if you don’t manually deleted them permanently, they get deleted automatically after 15 days. . Right now I am transferring all the deleted files and folders as it is to the trash, but I am thinking to make them compressed while storing inside the trash so that the don’t take up a lot of space, I haven’t implemented this though as I am not sure how am I gonna do it properly yet :]
DEVLOG_11: OK!! so in this coding session I built a File Health page in Loom. This is a feature which I was personally excited to make :] . So basically while the Scan is running Loom tries to index files, generate preview and thumbnails for media files, if during this process any files throws error and Loom finds out the file is corrupt or has any issues it labels the issue and hides it from the file explorer and shows it in the dedicated File Health page. . At the moment it only displays these compromised files and shows the exact error they gave, but in the future I want to make Loom be able to fix these files if possible.
DEVLOG_12: This was a long and major update session, I added a working notification system, if uploading files or downloading files or moving them causes any error, loom safely pauses the operation to avoid problems with the file and throws a notification stating what happened. Also other notifications like scan completion is also given :] . The file and folder upload features are actually working now, although it gets stuck when uploading very large files, I am trying to make it more reliable at the moment. . So let me explain how file upload actually works in loom, so when you upload a file it shows as uploaded on the screen but in the backend it stays in the internal storage of the vps, an automatic scan job is triggered for that file/folder, all the indexing and preview/thumbnail generation is completed and then the file/folder is transferred to the designated path. . File search now also works with the Photos, Videos, and Documents tabs.
DEVLOG_13: OKKK, so this is gonna be the last devlog for Loom before I ship it. Loom is now ready to be used by anyone in their VPS to manage their personal file :] . I also made a demo website for loom which anyone can visit to see how it works and looks at loomdemo.kaveeshkrishna.in . Fixed the last remaining bugs and made the permissions working properly, now every new account in Loom can be given a set of permissions and that account will not be able to access files other than the set permissions.
Ships:
Loom is a self hosted file manager for your own server or NAS. You point it at a folder of photos, videos, and documents you already have and it gives you a proper web app to browse, search, and stream them from anywhere, without ever touching or reorganizing the actual files on disk. I built it because I have a Samsung T7 drive full of a decade of family photos and every app I tried wanted to import everything into its own library and rename stuff. Loom just reads whatever folder structure you already have and works with that. . Under the hood it’s three Docker containers, a Next.js app for the UI and API, a separate worker that indexes the filesystem and makes thumbnails, and Postgres for metadata only, never file content. It has a full file browser with grid and list views, a photo and video viewer, drag and drop uploads, trash with recovery, multiple user accounts with per folder permissions, and an audit log. There’s also a public demo you can try without installing anything, it’s a completely fake version running with no backend at all, everything happens in your browser. . The hardest part by far was video playback. Browsers only play a handful of video formats natively, so anything else, HEVC from an iphone, old MOV and AVI files, needed converting on the fly. I didn’t want to transcode an entire two hour video before someone could watch even the first second of it, so I built a system that only converts the exact chunk of video someone is actually watching or seeking to, in six second pieces, and shares the work if two people ask for the same part at once. Getting that to not corrupt itself when someone seeks around took a lot of debugging. . The other really annoying stretch was making the demo version work. It’s a static build with literally no server, and the entire fake backend is done by intercepting fetch requests in the browser. I got it fully built and deployed and it looked fine, every page loaded, every request returned 200, and it was completely broken underneath, folders showed up empty and buttons did nothing. Turned out the code that fakes the backend was never actually running in the browser at all because of how Next.js bundles server components, and curl and normal build checks couldn’t catch it since everything technically responded fine. I only found it by scripting an actual headless browser to click through the site. . What I’m most proud of is probably the idle drive design. A lot of self hosted apps for photos and files constantly watch your disk or hash every file on every scan, and I really didn’t want that for a drive that spins down. Loom only reads file size and modified time to check for changes, and only actually opens a file’s content the first time something genuinely needs to, like making a thumbnail. A full rescan of a library that hasn’t changed barely touches the disk at all. . To test it, the easiest way is the live demo, no install needed, any username and password works and there’s a button that fills in the demo login for you. From there you can click into the sample folders (they go a few levels deep on purpose), open a photo or video, try renaming or trashing something and refresh the page to see it stuck around, and check out the settings pages for users, permissions, and the scanner. If you want to run the real thing, it’s a single script install with Docker, clone the repo and run the install script and it walks you through the rest....
|
1793825555.9474425
|
1793911955.9474425
|
|
59898
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739019.7883916
|
1794603019.7883916
|
|
59899
|
Ticker Ticker Boom by @ | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Ticker Ticker Boom by @ | Stardance
|
1793638426.2986774
|
1794243226.2986774
|
|
59900
|
Hello-Raylib by @cauadev | Stardance
|
cauadev
|
0
|
15.74
|
0
|
[]
|
[{"post_id": 68350, "ts": "202 [{"post_id": 68350, "ts": "2026-09-15T00:09:26Z", "hours": 7.0639, "text": "Hello guys! What’s new Chunk generation: Totally procedural and infinite, along with a render distance Some visual refactor: Background is now sky blue, and grid is gone for good Mandelbrot Set: Can be controlled with arrow keys to move, R for going slower and Q/E for zooming New camera controls: Now using UpdateCameraPro and some custom bindings: Shift for sprinting, Space to go up and Ctrl to go down. The rest is basically the same. Struggles Figuring out how to do the chunks: Making it enter in my stupid ahh mind the logic behind infinite procedural chunk generation Segmentation faults (when closing program): Figured out that it was because the terrain.cpp code was trying to call the Chunk destructor after the window was already closed. Solved it by emptying the std::vector responsible for the chunks before the program was closed instead of letting it to the C++ runtime. Keybinds: The reason I changed the camera controlling scheme was to free the Q , E and arrow keys. FPS, as usual (probably just accepted it rn, maybe it’s just a hardware issue) TODO idk (accepting suggestions) ((maybe more shader related props, or procedural structs, not promising anything though))"}, {"post_id": 66230, "ts": "2026-09-11T22:37:53Z", "hours": 3.7136, "text": "Hello guys! What’s new GLTF model: This bust model Basic lighting: Rlights.h + example shaders directly from Raylib repository Procedural terrain: It uses Perlin Noise to generate a procedural mesh. First custom shader: It’s a small variation of the standard lighting shaders, which uses the height of the vertex to determine the color of the pixel (gradient is green -> brown -> white). Struggles FPS: Really dropped down after adding the terrain. What really helped was decreasing the Perlin Noise texture resolution (and with so, basically decreasing the level of detail of the terrain), but I still feel like I’ll need further to do optimization (my hardware is bad btw, a literal Chromebook). The FPS average went from like ~30 (before terrain) to ~5 (after) to ~15 (after the described optimization). Loading time: Maybe not that big of a struggle, but would like to relate that, after adding the bust to the project, now it takes literal seconds to boot (it was almost instantaneous). Dunno if it’s fixable, so just keeping it, although hating it, because it slows down testing and debugging. TODO More shaders: Maybe props meant specifically for that. I’d specially love something related to Mandelbrot Set. Chunk generation: Probably starting with fixed (like 3x3 or 5x5), then making a on-fly chunk generator. Maybe water in the valleys?????? (unsure, not confirmed, not a promise, just a huge “maybe”, not a focus)"}, {"post_id": 65007, "ts": "2026-09-09T19:54:34Z", "hours": 1.4994, "text": "Hello Guys! What’s new New shapes: Cube, sphere and wire cylinder Texture: Sphere has a brick texture Mutable parameters: FOV can be changed with mouse scroll and “p” key makes view orthographic while held down Struggles The texture: Figured out that apparently Raylib doesn’t recognize JPEG images (at least not mine). Solved it by converting images to PNG. Printing FOV: Figuring out how to concatenate char * strings. Solved it by concatenating them as std::string and turning them back to char * with .c_str() . TODO (I guess) Render a .obj file Lightning Shaders! Physics…?"}, {"post_id": 64529, "ts": "2026-09-09T00:26:54Z", "hours": 1.7458, "text": "Hello guys! Progress I’ve played around with user interaction (both mouse and keyboard), locking and unlocking cursor, resizeable window, etc. and decided I could already jump straight into 3D. Also, now the triangle pulses via sine waves Struggles Correct the triangle: it used vw and vy to its positioning. In 2D, it served to center it, but in 3D, this made the triangle huge, offcenter and upside down. Make the camera spawn facing the triangle: Self explanatory (probably the biggest issue is that the triangle is one-sided, meaning that it can only seem in a single direction (the “front”)). TODO Probably mess up with other shapes, then do lightning and shaders."}, {"post_id": 64373, "ts": "2026-09-08T17:58:26Z", "hours": 1.7203, "text": "Hello guys! Development I’ve done this window (meant to be just a triangle, but the red triangle looked a lot like the flag of my state, Minas Gerais, so I kind of recreated it). The triangle changes the “rediness” when pressing “a” (goes to black) or “d” (goes to red). Struggles Starting to learn (already explained at AI use declaration, but basically didn’t find some tutorial that seemed to switch to me, so using AI, without it writing code to me, + documentation for functions and library methods) Finding an intelisense that works (still didn’t find, even after setting up GNU Global) TODO Learning more :) (I’d like to make a shader next, or 3D shape)"}]...
|
Title: Hello-Raylib by @cauadev | Stardance
Devlo Title: Hello-Raylib by @cauadev | Stardance
Devlogs:
Hello guys! Development I’ve done this window (meant to be just a triangle, but the red triangle looked a lot like the flag of my state, Minas Gerais, so I kind of recreated it). The triangle changes the “rediness” when pressing “a” (goes to black) or “d” (goes to red). Struggles Starting to learn (already explained at AI use declaration, but basically didn’t find some tutorial that seemed to switch to me, so using AI, without it writing code to me, + documentation for functions and library methods) Finding an intelisense that works (still didn’t find, even after setting up GNU Global) TODO Learning more :) (I’d like to make a shader next, or 3D shape)
Hello guys! Progress I’ve played around with user interaction (both mouse and keyboard), locking and unlocking cursor, resizeable window, etc. and decided I could already jump straight into 3D. Also, now the triangle pulses via sine waves Struggles Correct the triangle: it used vw and vy to its positioning. In 2D, it served to center it, but in 3D, this made the triangle huge, offcenter and upside down. Make the camera spawn facing the triangle: Self explanatory (probably the biggest issue is that the triangle is one-sided, meaning that it can only seem in a single direction (the “front”)). TODO Probably mess up with other shapes, then do lightning and shaders.
Hello Guys! What’s new New shapes: Cube, sphere and wire cylinder Texture: Sphere has a brick texture Mutable parameters: FOV can be changed with mouse scroll and “p” key makes view orthographic while held down Struggles The texture: Figured out that apparently Raylib doesn’t recognize JPEG images (at least not mine). Solved it by converting images to PNG. Printing FOV: Figuring out how to concatenate char * strings. Solved it by concatenating them as std::string and turning them back to char * with .c_str() . TODO (I guess) Render a .obj file Lightning Shaders! Physics…?
Hello guys! What’s new GLTF model: This bust model Basic lighting: Rlights.h + example shaders directly from Raylib repository Procedural terrain: It uses Perlin Noise to generate a procedural mesh. First custom shader: It’s a small variation of the standard lighting shaders, which uses the height of the vertex to determine the color of the pixel (gradient is green -> brown -> white). Struggles FPS: Really dropped down after adding the terrain. What really helped was decreasing the Perlin Noise texture resolution (and with so, basically decreasing the level of detail of the terrain), but I still feel like I’ll need further to do optimization (my hardware is bad btw, a literal Chromebook). The FPS average went from like ~30 (before terrain) to ~5 (after) to ~15 (after the described optimization). Loading time: Maybe not that big of a struggle, but would like to relate that, after adding the bust to the project, now it takes literal seconds to boot (it was almost instantaneous). Dunno if it’s fixable, so just keeping it, although hating it, because it slows down testing and debugging. TODO More shaders: Maybe props meant specifically for that. I’d specially love something related to Mandelbrot Set. Chunk generation: Probably starting with fixed (like 3x3 or 5x5), then making a on-fly chunk generator. Maybe water in the valleys?????? (unsure, not confirmed, not a promise, just a huge “maybe”, not a focus)
Hello guys! What’s new Chunk generation: Totally procedural and infinite, along with a render distance Some visual refactor: Background is now sky blue, and grid is gone for good Mandelbrot Set: Can be controlled with arrow keys to move, R for going slower and Q/E for zooming New camera controls: Now using UpdateCameraPro and some custom bindings: Shift for sprinting, Space to go up and Ctrl to go down. The rest is basically the same. Struggles Figuring out how to do the chunks: Making it enter in my stupid ahh mind the logic behind infinite procedural chunk generation Segmentation faults (when closing program): Figured out that it was because the terrain.cpp code was trying to call the Chunk destructor after the window was already closed. Solved it by emptying the std::vector responsible for the chunks before the program was closed instead of letting it to the C++ runtime. Keybinds: The reason I changed the camera controlling scheme was to free the Q , E and arrow keys. FPS, as usual (probably just accepted it rn, maybe it’s just a hardware issue) TODO idk (accepting suggestions) ((maybe more shader related props, or procedural structs, not promising anything though))...
|
1793638427.2062433
|
1794243227.2062433
|
|
59901
|
Mrotat by @mandeepswami | Stardance
|
mandeepswami
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T12:42:13Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Marioware game named Mrotat i dont how i ended up with that name. Using godot was confusing in the start but later on i got used to it . This is my first every game which is i am pretty proud of . I used the godot icon for the clicker because its the only thing that could fit there and the heart collector game was pretty when i set it to 10 seconds but later i changed it to 12 to make it easier a little bit.", "repo": "https://github.com/Momentum122/Marioware0", "demo": "https://momentum122.itch.io/mrotat"}]...
|
[{"post_id": 71072, "ts": "202 [{"post_id": 71072, "ts": "2026-09-20T08:21:13Z", "hours": 0.34, "text": "Last Devlog for mrotat finished publishing check it out on https://momentum122.itch.io/mrotat"}, {"post_id": 71058, "ts": "2026-09-20T07:55:59Z", "hours": 1.2817, "text": "forgot to record screen debugging the complete game and adding ending screen and all that but hackatime on godot still recorded 1h .Now just last two steps are left"}, {"post_id": 71006, "ts": "2026-09-20T06:12:48Z", "hours": 3.275, "text": "Almost COmpleted the game working on debugging and end screens"}, {"post_id": 69279, "ts": "2026-09-16T18:38:08Z", "hours": 3.2064, "text": "My first devlog for Mrotat . Forgot to post earlier . completed Title screen with working quit button , level screen and currently making the 1st minigame."}]...
|
Title: Mrotat by @mandeepswami | Stardance
Devlog Title: Mrotat by @mandeepswami | Stardance
Devlogs:
My first devlog for Mrotat . Forgot to post earlier . completed Title screen with working quit button , level screen and currently making the 1st minigame.
Almost COmpleted the game working on debugging and end screens
forgot to record screen debugging the complete game and adding ending screen and all that but hackatime on godot still recorded 1h .Now just last two steps are left
Last Devlog for mrotat finished publishing check it out on https://momentum122.itch.io/mrotat
Ships:
I made a Marioware game named Mrotat i dont how i ended up with that name. Using godot was confusing in the start but later on i got used to it . This is my first every game which is i am pretty proud of . I used the godot icon for the clicker because its the only thing that could fit there and the heart collector game was pretty when i set it to 10 seconds but later i changed it to 12 to make it easier a little bit....
|
1793825559.2589695
|
1793911959.2589695
|