|
44233
|
wayne's personal website by @wayne14 | Stardan wayne's personal website by @wayne14 | Stardance...
|
wayne14
|
2
|
8.0
|
20
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-15T10:45:26Z", "hours": 2.0, "multiplier": 9.85, "payout": 20, "blessing": "neutral", "text": "I finished my personal website by making it responsive and enhancing the design. The most challenging part was the CSS. I had this problem when the page starts scrolling horizontally as I shrink it. I tried everything (except AI): deleted different code blocks, rewrote different properties. Eventually, I found it: a simple align-items: center. Bruh…. Then everuthing worked fine, but I still wrote overflow-x:hidden just in case… I’m really proud of the end result - clean, modern, adaptive, funny, and personal. Test it by trying it on different devices and finding some quirky layouts on some device sizes (which shouldn’t exist hopefully).", "repo": "https://github.com/wayne-14e/Personal-Website", "demo": "https://wayne-personal-website.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-10T03:44:14Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a simple personal portfolio website using HTML, CSS, and some JS. The most challenging part was creating a custom grid in hobbies & interests section - 2 columns, 2 blocks in one row and another block takes two rows. At first, I looked at documentation, but didn’t find what i needed. There are so many grid properties! Eventually, I asked DeepSeek to show me an example of how to make it and adapted it to my project. I’m really proud of what I made. I think it’s very creative, especially the last section. I’m pretty sure whoever opens it will LOL! That’s exactly what my goal was - to tell about myself in a funny way. One thing I still need to work on is responsiveness, but the rest of the features are working and u can test them.", "repo": "https://github.com/wayne-14e/Personal-Website", "demo": "https://wayne-personal-website.vercel.app/"}]...
|
[{"post_id": 47414, "ts": "202 [{"post_id": 47414, "ts": "2026-08-15T10:31:05Z", "hours": 2.0008, "text": "Responsiveness: ON I made my personal portfolio website responsive, so u can now use it more comfortably on mobile or tablet devices. Also added some emojis to the design of the page and designed a logo in Figma."}, {"post_id": 43095, "ts": "2026-08-08T05:39:23Z", "hours": 1.9772, "text": "Finished desktop layout of my personal website. The last section is where I used some Java Script and it’s the funniest part of the website (increase volume when going to the last section….) only mobile responsiveness is left…"}, {"post_id": 41810, "ts": "2026-08-06T08:06:12Z", "hours": 4.3267, "text": "Almost done! I was really trying to make it personal, so I chose the theme of my favourite video game Minecraft and combined it with coding vibes. Hope u will enjoy it and we share some things in common. it’s not fully ready yet: there are only 2 sections and it’s not responsive, but it won’t take too long…"}]...
|
Title: wayne's personal website by @wayne14 | Title: wayne's personal website by @wayne14 | Stardance
Devlogs:
Almost done! I was really trying to make it personal, so I chose the theme of my favourite video game Minecraft and combined it with coding vibes. Hope u will enjoy it and we share some things in common. it’s not fully ready yet: there are only 2 sections and it’s not responsive, but it won’t take too long…
Finished desktop layout of my personal website. The last section is where I used some Java Script and it’s the funniest part of the website (increase volume when going to the last section….) only mobile responsiveness is left…
Responsiveness: ON I made my personal portfolio website responsive, so u can now use it more comfortably on mobile or tablet devices. Also added some emojis to the design of the page and designed a logo in Figma.
Ships:
I created a simple personal portfolio website using HTML, CSS, and some JS. The most challenging part was creating a custom grid in hobbies & interests section - 2 columns, 2 blocks in one row and another block takes two rows. At first, I looked at documentation, but didn’t find what i needed. There are so many grid properties! Eventually, I asked DeepSeek to show me an example of how to make it and adapted it to my project. I’m really proud of what I made. I think it’s very creative, especially the last section. I’m pretty sure whoever opens it will LOL! That’s exactly what my goal was - to tell about myself in a funny way. One thing I still need to work on is responsiveness, but the rest of the features are working and u can test them.
I finished my personal website by making it responsive and enhancing the design. The most challenging part was the CSS. I had this problem when the page starts scrolling horizontally as I shrink it. I tried everything (except AI): deleted different code blocks, rewrote different properties. Eventually, I found it: a simple align-items: center. Bruh…. Then everuthing worked fine, but I still wrote overflow-x:hidden just in case… I’m really proud of the end result - clean, modern, adaptive, funny, and personal. Test it by trying it on different devices and finding some quirky layouts on some device sizes (which shouldn’t exist hopefully)....
|
1792997394.7627363
|
1793083794.7627363
|
|
44314
|
Cami by @barfpile | Stardance
|
barfpile
|
2
|
35.49
|
530
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T22:22:29Z", "hours": 23.0, "multiplier": 17.33, "payout": 392, "blessing": "neutral", "text": "Welcome to Cami! It’s been a difficult 30 hour journey and I’m tryna get me Factorio to wrap up this awesome summer. :P Warning: The client is AI-Generated, it is not the project, simply a tool so you guys don’t have to make raw http requests with python. None of the rest of the project is AI-Generated.", "repo": "https://github.com/fries-git/Cami", "demo": "https://fries.hackclub.app/demo"}, {"ship_num": 2, "ts": "2026-08-11T05:46:34Z", "hours": 10.0, "multiplier": 14.13, "payout": 138, "blessing": "neutral", "text": "Cami is a full authentication backend. I made this for use in my own projects, and as a way to learn web stuff with flask. It was challenging just getting it all working. Combining Flask and TinyDB (things I’m not too familiar with) to make this come together. To use, register an account on the homepage, then click around and see what you can do! THE CLIENT USED IS AI: I do not know how to do frontend html work, and that is not the project. The project is the backend python.", "repo": "https://github.com/fries-git/Cami", "demo": "https://fries.hackclub.app/demo"}]...
|
[{"post_id": 76876, "ts": "202 [{"post_id": 76876, "ts": "2026-10-04T22:06:07Z", "hours": 1.0306, "text": "Fixes/Tweaks Might as well just get some time out here, I’ve literally been working on livechatting and misc fixes. I’ve been so stressed and tired and distracted I don’t remember working on this at all. I’ve moved primarily to working on Phantom, tryna get me a blahaj and balatroooooooo also its been 12 days please ship me my items 😭 Live Chatting Decentralized? Check Ability to change servername dynamically? Check Editing/Deleting messages? Check we’re so goated :)"}, {"post_id": 75357, "ts": "2026-09-29T20:49:47Z", "hours": 1.46, "text": "Well it was fun! (Its going for another week after i blow all my stardust.) Hello stardancers. Its 9-29-26. I’m not going to be able to make another ship and get it rated. Thank you everyone so much for the support on this project, and thanks for running Stardance! Mainly just working on live chatting, a decentralizable chatting service similar to discord, which will be picked up on phantom.hackclub.com. For anyone wondering what I got out of Stardance: 1 domain Outpost Badge (will make a project with that too!) Factorio Pico-8"}, {"post_id": 72426, "ts": "2026-09-22T22:21:17Z", "hours": 0.2506, "text": "AI generated a client so people can actually use it. Once again, I truthfully, have not used AI in this project for anything but front end, which I do not know how to do. Over the course of testing I have mainly used raw HTTP requests."}, {"post_id": 72420, "ts": "2026-09-22T22:02:45Z", "hours": 2.6606, "text": "A lot… I JUST BROKE 30 HOURS ON THIS PROJECT SERVER-SIDE CODING OMG!!! :D Well Cami has been rolling along reallllllllly quickly. Things I’ve added/worked on: Playlists/More Music Stuff Fixing up the post search api Remake of ws chat server Fries have been implemented Fries transfer is working Fries daily claiming is working So many fixes (many things didnt quite properly handle errors and so they have been fixed) Changes to your user info are being locked behind fries. (PFP Decor is locked but pfp, bio, and more will be locked, basically everything but password changes) Image/Music uploading will likely be locked behind fries, or you will have to pay fries to upgrade the amount of stuff you can store. More PFP Decor has been added to my personal instance but that doesnt affect here. Server logs are prettier. More info attached to the user queries. Thanks for reading and sticking with this shitshow of a project."}, {"post_id": 71293, "ts": "2026-09-20T16:11:07Z", "hours": 1.9511, "text": "Music Server/New Chat Server Hello! I’ve lately been working on a music server. Users can upload any sort of audio file, mp3, ogg, it should support mp4 but i haven’t tested, and it converts it to an ogg file. The ogg file has a roughly 75% file size to the original MP3 while keeping the same quality. I’ve also been working on things like metadata storage, playlists, and more. On top of music, I’ve started a full rework of the live chatting system. It’s been going well so far, but I’m changing up how it works a little. It’s going to be closer to IRC + DMs, there will be no locked channels, no way to create custom channels anymore. Hopefully I can also drag some more people in, and make it much simpler to use, and on top of this make it super easy to link to Discord and such. So yeah! It’s been going well, I’m still alive, I’m running out of time to ship… and uh yeah! Have fun coding!"}, {"post_id": 69922, "ts": "2026-09-18T02:21:37Z", "hours": 1.1539, "text": "Fixes, Simultaneous DB Editing, and JSONifying. Quick one since its like 11pm, I’ve been working on a lot of fixes. I, since the start of this project, haven’t closed DBs. Think about that. I am an intelligent human being. I’ve also been working on getting searching working (image) for the social api, and making sure everything works with that. On top of this, everything is still getting organized, and made to have very similar responses, so as a dev less work has to be done for you to support it. I also kinda started on a python library, but eh, we’ll see how it goes I suppose. Also have been working on some security, nothing commited, to try to make it harder to hack ig. Gn stardance! (im sick)"}, {"post_id": 68332, "ts": "2026-09-14T23:16:24Z", "hours": 0.4742, "text": "Multiplayer Im in the midst of making an extendable WS based multiplayer server, and figured I’d test it with a cool game somebody I know made! It’s a W.I.P. but works pretty well and everything server side is done lol."}, {"post_id": 66929, "ts": "2026-09-12T22:02:14Z", "hours": 0.4564, "text": "Im back Been working on the project a bit. Mainly just working on docs and helping people understand the API in a more sort of private environment. Should push a ship eventually, and its gonna be super awesome for everyone! :D Also maybe I did a devlog but i added timestamps to posts and stuff and made the total requests needed to do everything muuuuuuuch smaller, and made a smaller cache of data needed."}, {"post_id": 62232, "ts": "2026-09-05T14:31:16Z", "hours": 0.9633, "text": "LATEST UPDATES Auth Securely, Auth Silly <3 Normalizing Returns I’ve been doing a lot of work on simply normalizing some returns. Some of them were just slightly different like “The token is invalid” vs. “Invalid Token”, so those were condensed into “invalid token”, on top of this whenever i return a message i wrap it like: {\"cmd\":\"success\",\"message\":\"<original message>\" . On top of this I also went through and changed some of the codes. DB Fixes Next thing I need to fix is any DB access needs to be routed through the helper funcs and properly closed. If you change your name, half the project still thinks only the original exists, while the other half, the correct half, only sees the new name. The reason is I have broken the project up into like 5 python files, 2 of which are both trying to simultaneously access the DB. Which, in-case you were wondering, is not good. Less Requests Something else I’ve been working on to prevent clients having to make like 3 requests for one thing, and to prevent the server from having to handle those, is to whenever a message is saved to the DB say from the social endpoint, when I send it back down, I attach the username and display name to it. This takes >2 http requests, get the messages then the usernames and user info, down to just 1. (Until you grab user pfps, which should be just grabbed once and cached.) Because this is really all I did I like… don’t have pictures? So… Enjoy the little 88x31 I made Also this is probably the longest devlog I’ve ever made, but I’m bored, and since I just got 6 months of Spotify premium as a gift, I’m letting the weird AI DJ thing just play whatever it feels like. It does, however, keep going back to the dark ages of 2024. Let me forget that year of music listening…"}, {"post_id": 60382, "ts": "2026-09-02T17:53:50Z", "hours": 1.9931, "text": "Fixes and Usage Well hey! It’s been a hot minute right? Lately I have been working on a lot more fixes, mainly on things like the social endpoint, and the image endpoint. Not terribly visible portions right now, but majorly important! I also got a used RPI5 which is now hosting it. That means, no more Nest downtime issues resetting my code! Yay! Notable Changes: The social posting endpoint returns the whole message object instead of just the ID. Files have been reorganized to be much cleaner Tons of little crashes and issues have been cleaned up, there are still more. I’ve started in on beautifying the logs!"}, {"post_id": 55320, "ts": "2026-08-27T02:04:33Z", "hours": 0.3108, "text": "Quick Devlog for the reroll Started just adding more pfp decor, had some people make me some. Yippee! Quick update: that’s not mine and I didnt get permission to use it, its the one i had for testing first because I got it from somewhere else real easily. It has since been removed, in favor for other ones I do have permission to use."}, {"post_id": 54861, "ts": "2026-08-26T01:43:17Z", "hours": 0.7211, "text": "Fixes and Continuity So basically this was just fixing a lot of weird things. For example, this being the main thing, the pfps stored whenever a user uploads them, get stored as 128x128. But the empty pfp, was 256x256. On top of this in some websocket things i was using \"msg\":\"content\" or \"message\":\"content\" interchangeably, but this has since been normalized. In all its just been a productive time, I’ve added a bunch, started working on a python library, and just gotten ready for ship 2!"}, {"post_id": 53675, "ts": "2026-08-24T10:50:24Z", "hours": 0.9739, "text": "Fixes and new paint Pretty much everything I have worked on this devlog simply involves fixes. “Oh, I’m not handling invalid json on a route, oops!” Or: “Oh usernames can be >32 chars because i messed up my if statement.” (I learned this one when someone with the entire bee movie script as their name appeared on my users route.) While it was all fixes I worked on, on top of this, due to wanting to commit roughly once every hour to keep people updated, I rewrote the empty path so it looks better. Link still points to the github repo. Auth Securely, Auth Silly."}, {"post_id": 53089, "ts": "2026-08-23T14:50:20Z", "hours": 1.5633, "text": "PFP Decor / Display Names ALSO I HIT 20 HOURS These have been wip and were quite simple to implement, display name is just another value in the TINYDB database for users, and so is the profile decor. I got it from another app so I can’t really commit it because its not mine, however it works! There’s no way to set it yourself I just hand edited the DB. Also, users can now edit their username! I know that was a massive complaint in the first ship. Past that really all I changed was paths. Before i had paths like /getuser?user=fries which was dumb. I figured out how to, with flask, make it /user/fries and it gives the same information. Much cleaner."}, {"post_id": 50019, "ts": "2026-08-19T01:27:36Z", "hours": 2.4608, "text": "More Livechat and Currency Livechat: So I’ve done a lot more on livechat, you can create channels now (properly,) delete messages, almost have it so you can edit them, and typing indicators are almost done. Currency: I’ve started figuring out how users should get currency, and what it should go towards. Right now, the main idea is get it daily by posting/using livechat, then spend it on customization like user color, or upgrading max bio length."}, {"post_id": 49218, "ts": "2026-08-17T21:28:23Z", "hours": 0.6536, "text": "More public channels and locking!"}, {"post_id": 48867, "ts": "2026-08-17T13:00:31Z", "hours": 2.4442, "text": "Live Chat Fixed! I fully fixed and implemented the livechat. It supports the creation of channels with passwords, message history, joining channels, sending to channels you’ve joined. If all users leave the channel, unless its a keep-alive channel, mostly predefined channels with no passwords like general and off-topic, the database for message history gets wiped, and the channel is up for grabs again! I dont have any pictures really, I did it last night on a different PC, so enjoy an 88x31!"}, {"post_id": 48487, "ts": "2026-08-16T21:10:31Z", "hours": 0.4981, "text": "Live Chat Live chat is working in its most basic form! I did censor the usernames, solely because they used their real name lol. Color coding different users, the same person is censored with the same color across pics."}, {"post_id": 47555, "ts": "2026-08-15T15:07:11Z", "hours": 1.2475, "text": "GIFS Gifs have been added to the image api. (I can finally new line again!) Images you go: https://images.barfpile.dev/getimage/filename gifs you go: https://images.barfpile.dev/getgif/filename.gif (you can remove the .gif at the end and it will work fine everywhere but discord. You can also use getimage on a gif, but again, will work anywhere but discord.) (Attached gif was added by someone, idk who, while I was testing gifs lol. I am going to add basically metadata so you can get https://images.barfpile.dev/getmeta/filename and retrieve things like timestamp uploaded, filename, and who uploaded it.)"}, {"post_id": 47174, "ts": "2026-08-14T21:26:35Z", "hours": 1.8294, "text": "Images and livechat - I made an image api! You can upload infinite files, compressed to be 1/3 of their size ofc. Also started implementing live ws chatting with infinite channels that can be password locked. https://server/getimage?filename=testimage"}, {"post_id": 45027, "ts": "2026-08-11T05:44:27Z", "hours": 0.6342, "text": "Ship Time! I just added an AI test client, I am not disclosing this as AI usage in the project, as this really isnt the project, and is only meant so users (like me) with virtually 0 front end design knowledge, can just use this, now, in the web. THE CLIENT YOU SEE IS AI PLEASE DO NOT JUDGE AGAINST THIS AS NONE OF THE SERVER CODE (the true project) IS AI"}, {"post_id": 44750, "ts": "2026-08-10T18:39:05Z", "hours": 0.6975, "text": "PFPS Got a little sidetracked ya know just casually implemented pfps. no big deal. https://fries.hackclub.app/userpfp?user=fries"}, {"post_id": 44453, "ts": "2026-08-10T06:37:50Z", "hours": 0.6025, "text": "#SSE Approach - This took so long, its not done, and quite frankly I’m so tired. Why did I chose sse? Compatibility with old hardware and, like most of my projects, learning and goofing around. This has the added benefit of making this all exclusively http, and being able to get integrated into my system of endpoints i already have."}, {"post_id": 44433, "ts": "2026-08-10T05:52:03Z", "hours": 0.8692, "text": "Rewrites and Backtracking Really nothing has been done. I spent a decent chunk of time trying to work with WS and just toughing it out, but I couldn’t get done what I wanted to get done. So I’ve made the bold, stupid, late-night decision, to switch to using SSE for the live chat. Partially so it can be more integrated into my already made systems, however, mainly just because I wanna learn something new. Enjoy this picture of timestamps from me trying to learn Flask’s SSE."}, {"post_id": 44373, "ts": "2026-08-10T02:48:38Z", "hours": 0.325, "text": "quick one, added some more info to the live chat object, namely cmd and channel, this is in preparation for the channels system."}, {"post_id": 44359, "ts": "2026-08-10T02:05:52Z", "hours": 1.9847, "text": "Live Chat and More Worked on quite a bit this devlog. I finished up all the endpoints I would need, cleaned up the server code, made an init file to run it, and started on a live chatting system using websockets. It’s going to support an infinite amount of channels each able to be locked behind a password. However, except for maybe one general chat, no chat history is likely to be stored at this time, simply because infinite chats with no restrictions being stored, is going to eat through storage like mad. However for now it works. I was originally debating that each channel would basically have its own encryption, and then i realized… that’s dumb. I don’t need to do that, and here we are."}, {"post_id": 42866, "ts": "2026-08-07T20:28:48Z", "hours": 0.3258, "text": "Social I worked on the social endpoint, and the reason it says it only took 17 minutes, is I switched to Zed, realized it doesn’t have Hackatime support, and switched back when already basically done lol. I made a little slop coded tool before I actually attempt to make something, even though any sort of interface to use it isn’t part of the project really. Basically, its just a simple endpoint you can post to and get to post and read messages in a sort of twitter-esque environment."}, {"post_id": 42291, "ts": "2026-08-06T22:36:37Z", "hours": 0.345, "text": "Added a little thing telling you what port it was on, and then started it up! https://fries.hackclub.app/"}, {"post_id": 41943, "ts": "2026-08-06T14:02:19Z", "hours": 1.3444, "text": "It works! (Also I learned you can do markdown here) https://fries.hackclub.app/ Yesterday I did a good bit of work on actually making it work lol. I did a lot of work out and about just on GitHub’s website, so when I came back there was a lot needed to get everything working. Mainly when I refactored some of the code into functions in a different file, I completely broke the login. But a little more in-depth about Cami. When you post {\"username\":\"<str>\",\"password\":\"<str>\"} to either register or login, you get back a token. This token is based off your user-id and gets refreshed every time you login (also supposed to be after a day just unimplemented right now.) You then use this to authenticate with (the only commands that need it right now) /changepass or /updatebio. You can also, as shown in the image below, run /GET on /user?user=(username or user id). That’s pretty much the full run down honestly. Passwords are currently hashed with SHA256, although I need to find a better option as I was able to brute force reverse my 8 letter password on the web in <1 minute. :("}, {"post_id": 41495, "ts": "2026-08-05T18:53:11Z", "hours": 2.6375, "text": "Cami - Cami is a silly goofy authentication program for use in my other projects. It currently supports: POST/register - Registering an Account POST/login - Logging in to get a token POST/updatebio - Updating your bio GET/getuser - Getting user information from name or ID (returns fries [currency] bio and account #) I am currently working on: POST/changepass - Changing password Implementing this into a chat system that’s websocket based Adding little games and things This was all done with primarily Flask (for the server), hashlib (for hashing passwords), and tinydb (for storage). It is meant to be lightweight, easy to integrate into other systems, and a fun project in general!"}]...
|
Title: Cami by @barfpile | Stardance
Devlogs:
Cam Title: Cami by @barfpile | Stardance
Devlogs:
Cami - Cami is a silly goofy authentication program for use in my other projects. It currently supports: POST/register - Registering an Account POST/login - Logging in to get a token POST/updatebio - Updating your bio GET/getuser - Getting user information from name or ID (returns fries [currency] bio and account #) I am currently working on: POST/changepass - Changing password Implementing this into a chat system that’s websocket based Adding little games and things This was all done with primarily Flask (for the server), hashlib (for hashing passwords), and tinydb (for storage). It is meant to be lightweight, easy to integrate into other systems, and a fun project in general!
It works! (Also I learned you can do markdown here) https://fries.hackclub.app/ Yesterday I did a good bit of work on actually making it work lol. I did a lot of work out and about just on GitHub’s website, so when I came back there was a lot needed to get everything working. Mainly when I refactored some of the code into functions in a different file, I completely broke the login. But a little more in-depth about Cami. When you post {"username":"<str>","password":"<str>"} to either register or login, you get back a token. This token is based off your user-id and gets refreshed every time you login (also supposed to be after a day just unimplemented right now.) You then use this to authenticate with (the only commands that need it right now) /changepass or /updatebio. You can also, as shown in the image below, run /GET on /user?user=(username or user id). That’s pretty much the full run down honestly. Passwords are currently hashed with SHA256, although I need to find a better option as I was able to brute force reverse my 8 letter password on the web in <1 minute. :(
Added a little thing telling you what port it was on, and then started it up! https://fries.hackclub.app/
Social I worked on the social endpoint, and the reason it says it only took 17 minutes, is I switched to Zed, realized it doesn’t have Hackatime support, and switched back when already basically done lol. I made a little slop coded tool before I actually attempt to make something, even though any sort of interface to use it isn’t part of the project really. Basically, its just a simple endpoint you can post to and get to post and read messages in a sort of twitter-esque environment.
Live Chat and More Worked on quite a bit this devlog. I finished up all the endpoints I would need, cleaned up the server code, made an init file to run it, and started on a live chatting system using websockets. It’s going to support an infinite amount of channels each able to be locked behind a password. However, except for maybe one general chat, no chat history is likely to be stored at this time, simply because infinite chats with no restrictions being stored, is going to eat through storage like mad. However for now it works. I was originally debating that each channel would basically have its own encryption, and then i realized… that’s dumb. I don’t need to do that, and here we are.
quick one, added some more info to the live chat object, namely cmd and channel, this is in preparation for the channels system.
Rewrites and Backtracking Really nothing has been done. I spent a decent chunk of time trying to work with WS and just toughing it out, but I couldn’t get done what I wanted to get done. So I’ve made the bold, stupid, late-night decision, to switch to using SSE for the live chat. Partially so it can be more integrated into my already made systems, however, mainly just because I wanna learn something new. Enjoy this picture of timestamps from me trying to learn Flask’s SSE.
#SSE Approach - This took so long, its not done, and quite frankly I’m so tired. Why did I chose sse? Compatibility with old hardware and, like most of my projects, learning and goofing around. This has the added benefit of making this all exclusively http, and being able to get integrated into my system of endpoints i already have.
PFPS Got a little sidetracked ya know just casually implemented pfps. no big deal. https://fries.hackclub.app/userpfp?user=fries
Ship Time! I just added an AI test client, I am not disclosing this as AI usage in the project, as this really isnt the project, and is only meant so users (like me) with virtually 0 front end design knowledge, can just use this, now, in the web. THE CLIENT YOU SEE IS AI PLEASE DO NOT JUDGE AGAINST THIS AS NONE OF THE SERVER CODE (the true project) IS AI
Images and livechat - I made an image api! You can upload infinite files, compressed to be 1/3 of their size ofc. Also started implementing live ws chatting with infinite channels that can be password locked. https://server/getimage?filename=testimage
GIFS Gifs have been added to the image api. (I can finally new line again!) Images you go: https://images.barfpile.dev/getimage/filename gifs you go: https://images.barfpile.dev/getgif/filename.gif (you can remove the .gif at the end and it will work fine everywhere but discord. You can also use getimage on a gif, but again, will work anywhere but discord.) (Attached gif was added by someone, idk who, while I was testing gifs lol. I am going to add basically metadata so you can get https://images.barfpile.dev/getmeta/filename and retrieve things like timestamp uploaded, filename, and who uploaded it.)
Live Chat Live chat is working in its most basic form! I did censor the usernames, solely because they used their real name lol. Color coding different users, the same person is censored with the same color across pics.
Live Chat Fixed! I fully fixed and implemented the livechat. It supports the creation of channels with passwords, message history, joining channels, sending to channels you’ve joined. If all users leave the channel, unless its a keep-alive channel, mostly predefined channels with no passwords like general and off-topic, the database for message history gets wiped, and the channel is up for grabs again! I dont have any pictures really, I did it last night on a different PC, so enjoy an 88x31!
More public channels and locking!
More Livechat and Currency Livechat: So I’ve done a lot more on livechat, you can create channels now (properly,) delete messages, almost have it so you can edit them, and typing indicators are almost done. Currency: I’ve started figuring out how users should get currency, and what it should go towards. Right now, the main idea is get it daily by posting/using livechat, then spend it on customization like user color, or upgrading max bio length.
PFP Decor / Display Names ALSO I HIT 20 HOURS These have been wip and were quite simple to implement, display name is just another value in the TINYDB database for users, and so is the profile decor. I got it from another app so I can’t really commit it because its not mine, however it works! There’s no way to set it yourself I just hand edited the DB. Also, users can now edit their username! I know that was a massive complaint in the first ship. Past that really all I changed was paths. Before i had paths like /getuser?user=fries which was dumb. I figured out how to, with flask, make it /user/fries and it gives the same information. Much cleaner.
Fixes and new paint Pretty much everything I have worked on this devlog simply involves fixes. “Oh, I’m not handling invalid json on a route, oops!” Or: “Oh usernames can be >32 chars because i messed up my if statement.” (I learned this one when someone with the entire bee movie script as their name appeared on my users route.) While it was all fixes I worked on, on top of this, due to wanting to commit roughly once every hour to keep people updated, I rewrote the empty path so it looks better. Link still points to the github repo. Auth Securely, Auth Silly.
Fixes and Continuity So basically this was just fixing a lot of weird things. For example, this being the main thing, the pfps stored whenever a user uploads them, get stored as 128x128. But the empty pfp, was 256x256. On top of this in some websocket things i was using "msg":"content" or "message":"content" interchangeably, but this has since been normalized. In all its just been a productive time, I’ve added a bunch, started working on a python library, and just gotten ready for ship 2!
Quick Devlog for the reroll Started just adding more pfp decor, had some people make me some. Yippee! Quick update: that’s not mine and I didnt get permission to use it, its the one i had for testing first because I got it from somewhere else real easily. It has since been removed, in favor for other ones I do have permission to use.
Fixes and Usage Well hey! It’s been a hot minute right? Lately I have been working on a lot more fixes, mainly on things like the social endpoint, and the image endpoint. Not terribly visible portions right now, but majorly important! I also got a used RPI5 which is now hosting it. That means, no more Nest downtime issues resetting my code! Yay! Notable Changes: The social posting endpoint returns the whole message object instead of just the ID. Files have been reorganized to be much cleaner Tons of little crashes and issues have been cleaned up, there are still more. I’ve started in on beautifying the logs!
LATEST UPDATES Auth Securely, Auth Silly <3 Normalizing Returns I’ve been doing a lot of work on simply normalizing some returns. Some of them were just slightly different like “The token is invalid” vs. “Invalid Token”, so those were condensed into “invalid token”, on top of this whenever i return a message i wrap it like: {"cmd":"success","message":"<original message>" . On top of this I also went through and changed some of the codes. DB Fixes Next thing I need to fix is any DB access needs to be routed through the helper funcs and properly closed. If you change your name, half the project still thinks only the original exists, while the other half, the correct half, only sees the new name. The reason is I have broken the project up into like 5 python files, 2 of which are both trying to simultaneously access the DB. Which, in-case you were wondering, is not good. Less Requests Something else I’ve been working on to prevent clients having to make like 3 requests for one thing, and to prevent the server from having to handle those, is to whenever a message is saved to the DB say from the social endpoint, when I send it back down, I attach the username and display name to it. This takes >2 http requests, get the messages then the usernames and user info, down to just 1. (Until you grab user pfps, which should be just grabbed once and cached.) Because this is really all I did I like… don’t have pictures? So… Enjoy the little 88x31 I made Also this is probably the longest devlog I’ve ever made, but I’m bored, and since I just got 6 months of Spotify premium as a gift, I’m letting the weird AI DJ thing just play whatever it feels like. It does, however, keep going back to the dark ages of 2024. Let me forget that year of music listening…
Im back Been working on the project a bit. Mainly just working on docs and helping people understand the API in a more sort of private environment. Should push a ship eventually, and its gonna be super awesome for everyone! :D Also maybe I did a devlog but i added timestamps to posts and stuff and made the total requests needed to do everything muuuuuuuch smaller, and made a smaller cache of data needed.
Multiplayer Im in the midst of making an extendable WS based multiplayer server, and figured I’d test it with a cool game somebody I know made! It’s a W.I.P. but works pretty well and everything server side is done lol.
Fixes, Simultaneous DB Editing, and JSONifying. Quick one since its like 11pm, I’ve been working on a lot of fixes. I, since the start of this project, haven’t closed DBs. Think about that. I am an intelligent human being. I’ve also been working on getting searching working (image) for the social api, and making sure everything works with that. On top of this, everything is still getting organized, and made to have very similar responses, so as a dev less work has to be done for you to support it. I also kinda started on a python library, but eh, we’ll see how it goes I suppose. Also have been working on some security, nothing commited, to try to make it harder to hack ig. Gn stardance! (im sick)
Music Server/New Chat Server Hello! I’ve lately been working on a music server. Users can upload any sort of audio file, mp3, ogg, it should support mp4 but i haven’t tested, and it converts it to an ogg file. The ogg file has a roughly 75% file size to the original MP3 while keeping the same quality. I’ve also been working on things like metadata storage, playlists, and more. On top of music, I’ve started a full rework of the live chatting system. It’s been going well so far, but I’m changing up how it works a little. It’s going to be closer to IRC + DMs, there will be no locked channels, no way to create custom channels anymore. Hopefully I can also drag some more people in, and make it much simpler to use, and on top of this make it super easy to link to Discord and such. So yeah! It’s been going well, I’m still alive, I’m running out of time to ship… and uh yeah! Have fun coding!
A lot… I JUST BROKE 30 HOURS ON THIS PROJECT SERVER-SIDE CODING OMG!!! :D Well Cami has been rolling along reallllllllly quickly. Things I’ve added/worked on: Playlists/More Music Stuff Fixing up the post search api Remake of ws chat server Fries have been implemented Fries transfer is working Fries daily claiming is working So many fixes (many things didnt quite properly handle errors and so they have been fixed) Changes to your user info are being locked behind fries. (PFP Decor is locked but pfp, bio, and more will be locked, basically everything but password changes) Image/Music uploading will likely be locked behind fries, or you will have to pay fries to upgrade the amount of stuff you can store. More PFP Decor has been added to my personal instance but that doesnt affect here. Server logs are prettier. More info attached to the user queries. Thanks for reading and sticking with this shitshow of a project.
AI generated a client so people can actually use it. Once again, I truthfully, have not used AI in this project for anything but front end, which I do not know how to do. Over the course of testing I have mainly used raw HTTP requests.
Well it was fun! (Its going for another week after i blow all my stardust.) Hello stardancers. Its 9-29-26. I’m not going to be able to make another ship and get it rated. Thank you everyone so much for the support on this project, and thanks for running Stardance! Mainly just working on live chatting, a decentralizable chatting service similar to discord, which will be picked up on phantom.hackclub.com. For anyone wondering what I got out of Stardance: 1 domain Outpost Badge (will make a project with that too!) Factorio Pico-8
Fixes/Tweaks Might as well just get some time out here, I’ve literally been working on livechatting and misc fixes. I’ve been so stressed and tired and distracted I don’t remember working on this at all. I’ve moved primarily to working on Phantom, tryna get me a blahaj and balatroooooooo also its been 12 days please ship me my items 😭 Live Chatting Decentralized? Check Ability to change servername dynamically? Check Editing/Deleting messages? Check we’re so goated :)
Ships:
Cami is a full authentication backend. I made this for use in my own projects, and as a way to learn web stuff with flask. It was challenging just getting it all working. Combining Flask and TinyDB (things I’m not too familiar with) to make this come together. To use, register an account on the homepage, then click around and see what you can do! THE CLIENT USED IS AI: I do not know how to do frontend html work, and that is not the project. The project is the backend python.
Welcome to Cami! It’s been a difficult 30 hour journey and I’m tryna get me Factorio to wrap up this awesome summer. :P Warning: The client is AI-Generated, it is not the project, simply a tool so you guys don’t have to make raw http requests with python. None of the rest of the project is AI-Generated....
|
1793000867.682174
|
1793087267.682174
|
|
44345
|
learnova-v2 by @ranveergill | Stardance
|
ranveergill
|
2
|
27.0
|
259
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T04:12:17Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "active recall is usually regraded as one of the best study methods of all time, and here you can practice it indefinitely! also, if you believe that your a better debater than ai/someone you know, you can challenge that here too! live at learnova.software :)", "repo": "https://github.com/ranveerlabs/learnova-v2", "demo": "https://www.learnova.software/"}, {"ship_num": 2, "ts": "2026-08-24T09:26:40Z", "hours": 19.0, "multiplier": 13.46, "payout": 259, "blessing": "neutral", "text": "Are you smarter than AI, your friends, or alone? Learnova is a study tool that only counts it as learned once you can say it back with no help. Multiple choice, then fill in the blank, then rebuild the explanation from pieces, then explain it cold, in your own words, with nothing to lean on. Most study tools stop testing you the moment you can recognize the right answer. This one starts there. The new part is who you’re up against. Debate Mode puts you against an AI opponent that argues the other side of whatever you just explained, four speeches, then a real judge call scores who actually held their ground. Or skip the AI and go against a friend instead, live, same format, one shared link, no accounts. The room exists the moment two people are in it and nothing else. Built this week: live 1v1 debate, real time, no database, a room is just two people and a shared connection. Rewrote how the grading talks to you, since a screen that quietly claims you contradicted a source that was never there does real damage to someone trying to learn. Killed the rating system twice over, first for hiding how different a study run and a debate round actually are, then for existing at all when neither needed to accumulate into a score. Rebuilt the whole color palette off the actual logo instead of picking colors that looked fine. None of it is graded on vibes. The AI opponent isn’t told to be nice or mean, it’s told to actually argue, and the judge is a second, separate model call that never sees what the first one said about itself. The score is out of ten, not a made up elo number a language model invented on the spot, because a model asked to do arithmetic will hand you a plausible number whether or not the arithmetic happened. Live at learnova.software. Open source. Built with Claude Code, over about five weeks of actual work, dates and all in the README because a repo that predates its own hackathon submission should say so plainly. Try it against yourself first. Then a friend. Then, if you’re feeling something, the AI.", "repo": "https://github.com/ranveerlabs/learnova-v2", "demo": "https://www.learnova.software/"}]...
|
[{"post_id": 77995, "ts": "202 [{"post_id": 77995, "ts": "2026-10-09T04:10:10Z", "hours": 3.2511, "text": "no idea how i have this unlogged time lol"}, {"post_id": 63383, "ts": "2026-09-07T05:35:06Z", "hours": 0.5103, "text": "trimmed it down and tried to remove anything that could be potentially flagged as ai. i kinda think it looks better now, anyways running out of devlog content haha"}, {"post_id": 61640, "ts": "2026-09-04T17:09:45Z", "hours": 0.5211, "text": "recent rejection said round mode doesnt work i think it might have just been in an api rate limit thing as i wasnt able to find anything proving thats actually true"}, {"post_id": 60528, "ts": "2026-09-02T22:30:58Z", "hours": 0.2811, "text": "idk why i keep getting rejected for ai use my last rejection literally said “emojis in readme convey ai use”, ive never had any emojis in the readme ever. anyways devlogging cuz i wanna claim my 16 mins of skimming docs"}, {"post_id": 60017, "ts": "2026-09-02T03:38:18Z", "hours": 0.3928, "text": "claiming 23 minutes"}, {"post_id": 59412, "ts": "2026-09-01T07:12:15Z", "hours": 3.0644, "text": "everything is a window now whole app reskinned. every screen sits in a title bar and a paper body on a dark desktop, hard borders, no rounded corner left anywhere, 71 of those came out the token swap broke the landing immediately. –ink went #101010, –ground went #2b2b2b, and the headline sits straight on the ground, so LEARNOVA was black on near-black. wrapping screens in a window fixed it. i would have shipped that on the arithmetic two bugs turned out to be the same shape. the notes sheet had tape, punch holes and a pencil at -right-7, all deliberately outside the container, which nobody notices until a screen has a border. and the timer was a conic-gradient ring with a bg-ground disc punched out to make its hole, so once bg-ground became the desktop it drew a dark circle on a white toolbar /feed shipped. no CI on this repo, check-runs returns total_count: 0, so the build half is the deployments api. unauthenticated github is 60 an hour per ip and that ip is the whole deployment, so the answer sits on globalThis for 60 seconds the palette went round the houses. the title bar started as the blue off the reference screenshot, the only colour in the app from outside its own set, then charcoal which read as the old learnova, then mint, then cream warmed toward the star’s gold. i said the blue was gone twice before it actually was, cuz the first pass only moved the title bar and –accent-wash is what paints ::selection worst near miss: computeRoute(“/debate/live/QBTR”, {code:“QBTR”}) came back unmasked and i had most of a paragraph written abt room codes leaking to analytics. turnValueToRegExp wasnt in scope, so it hit the function’s own catch and handed the input straight back. with the helper in scope its /debate/live/[code] still emulated chrome on one machine. analytics loads but has never reported, that only happens off a deploy"}, {"post_id": 53640, "ts": "2026-08-24T09:20:45Z", "hours": 5.425, "text": "live rooms, and the rating that stopped existing live 1v1 debate shipped. two people, a four character code, no accounts the real decision was what a room even is. serverless functions dont share memory between instances, so a Map tracking whether a room exists lies abt half the time. host creates it on one instance, the guest’s join lands on another, and the guest gets told the room doesnt exist while the host is sat inside it. so nothing tracks existence any more. presence on an ably channel is the room two bugs that only turned up by testing it properly only the host’s browser calls the judge, so the ballot came back written entirely from the host’s side. both players read the host’s strengths and the host’s weaknesses in the second person. the judge writes both ballots now and mirror swaps them for the guest and a room was ending when the first person left instead of the last, which threw out whoever had stayed this reverses the last log, twice both elo modules got deleted. one number going up and down implies a round mode run and a debate round measure the same thing, and they dont. it became a plain record instead then the record got deleted too. a debate ends on its verdict and nothing counts up across rounds results were showing +1,380 of 2,280, a division you have to do in your head at the exact moment you want one answer. its a score out of ten now. anything above ten written by an older build gets dropped rather than converted, cuz converting needs a denominator that was never stored cut suggestion chips, which turned “name a topic” into “pick one of these”. three motions that typewrote themselves onto the debate note for no functional reason. /proof, which was a third way into a landing page arguing there are two. thirteen exported symbols nothing was calling and the “get the ballot” button. the eighth speech lands and the round goes to the judge on its own palette rebuilt off the logo. the dark ground is sampled straight out of the asset, and every neutral swapped for the grey at the same relative luminance, so the contrast ratios that were already tuned still hold. type warmed to the logo’s cream and the accent became the star’s gold two prompt bugs the voice instructions were teaching third person inside their own example. and the ballot voice used bare letters A and B, which now and then came out as “a flaw in A’s hanging out point” worst near miss of the session: the case insensitive fix for the letter A also matched the article “a”, and shipped “with they cheaper alternative” thru a live judge call before anybody caught it separate one, numbered lists were coming out as a single run-on line. fixed, and property tested against 200 random chunkings copy the unavailable message used to claim nothing youd typed had been lost, which this app has no way of knowing bigger one. every ai call was failing with a raw HTTP 402 on a student’s screen, telling them to retry something that was never going to work, cuz the shared key had run out of balance. it says plainly that retrying wont fix it now readme the status section had gone stale before, so it got corrected twice this session first pass: a full eight speech live debate across two real browsers, 1.6s to join, each speech reaching the other window in 423 to 1039ms, and a 15.2 second wait before a disconnect gets noticed, written down as measured rather than rounded down. the judge was stubbed that pass, the key had no balance second pass, once the key refilled: two real judge calls, two genuinely different ballots, no stray letters still open: a judge call made from inside a live room and mirrored to the guest has only ever been checked against a stub"}, {"post_id": 48684, "ts": "2026-08-17T06:00:05Z", "hours": 5.7667, "text": "debate mode, and the source that wasnt there biggest thing this session is a second mode. round mode’s ladder tops out at saying something in your own words. debate wants something else out of you, holding a position for four speeches while an opponent tries to take it off you. own route, rather than bolting a sixth round on the end the rating is arithmetic the judge hands back a winner, a margin and ten dimension scores. the elo change gets worked out from those in integer maths the model never sees. ask a model to update an elo directly and you get a number that looks like arithmetic, and you cant catch it going wrong cuz every value it gives you is plausible two tabs and they never mix. open debate is judged on whether the argument holds up. tournament prep gets judged against a tournament bar, where a dropped argument is conceded and 60 means mediocre rather than good for a beginner. format is required and never defaulted, a Public Forum ballot handed to somebody practising Lincoln-Douglas is worse than no ballot cuz theyll act on it tritoflex somebody ran a topic-only session on Tritoflex, a spray-on rubber roofing compound, and got told over and over that it was torch-applied. he caught it cuz he installs the stuff. anybody studying something new wouldnt have ask the model cold abt an obscure term and it comes back with a protein, an alpha helix, signal transduction, implicated in cancer. none of it true, none of it reading as invented, and it never once says it doesnt know the worst bit wasnt a missing disclaimer. on a topic-only round 4 the marking screen printed “Contradicts the source” under a heading reading “The notes”, in a session where the student pasted nothing and the server blanks every citation on the way out anyway. so somebody who wrote a true sentence got told they contradicted evidence that had never existed. it says “the model disagrees” now the header badge went from “AI-generated” to “AI, unchecked”. they typed the topic in themselves so they already know who wrote it. what they have no way to know is that nothing checked it. “AI” stays in the label cuz it outlives the moment, screenshots get shared and come back a week later runs leave something behind they used to die with the tab. honest enough abt the plumbing. but retrieval practice does its work thru spacing, and meeting a concept once, failing to explain it and never seeing it again is the half that only feels like studying the session already worked out the thing worth keeping, a map of which ideas you can recognise but cant say. computed it, showed it once, threw it away on the walk to the results. one standing per concept sticks around now and the front door leads with whats still unsaid the tests that tested nothing my first two boundary assertions both passed against the exact bugs they were written for. one compared trimmed pieces, and trimming erases the evidence, so it cant tell a mid-word cut from a clean one. the other ran on a sample that had collapsed to a single chunk, so there was no join left in it to get wrong only found out bcuz i reverted the fix to watch them fail and they sat there green status the green “strong” band is verified, which closes the open item from the last log. seen in a browser by somebody who knew the answers, rather than by a driver answering option 1 every time readme the privacy section had gone from cautious to false. “nothing is stored beyond the current session” stopped being true the moment runs started leaving a record behind. thats twice a claim in there has drifted while the product moved under it, so anything that stores something now drags a readme check into the same commit still no accounts. standings are per device and clearing site data wipes them"}, {"post_id": 43181, "ts": "2026-08-08T09:29:30Z", "hours": 4.9756, "text": "deleting the score biggest change this session was taking things out. round mode had points, a running total and a combo multiplier. all three gone!!! the argument lowk fell out as soon as i said it aloud. the number at the top of the results was the run time, and the quickest way thru a round is to answer everything wrong immediately. so the headline figure was paying you for the one behaviour the app exists to catch. points and combos were the same information twice over, worked out from how fast and how often you were right, then shown next to how fast and how often you were right whats there instead weights every answer by how little help it had. warm up counts once, round 1 three times, round 2 five, round 3 six, and saying a concept in your own words in round 4 is worth 150. speed isnt in the formula anywhere and two tests hold that down: the same answers given at wildly different speeds come out identical, and fast-and-wrong lands below slow-and-right it reads +615 of 2,120. a bare number says nothing when a short session and a long one have different ceilings round 3 the chip tray used to have wrong words mixed in, so the round was a hunt for what to avoid. now it holds the sentence’s own pieces and nothing else grading stopped being fussy abt list order. seven tests, four of them cases that still have to fail: “sugar traps light” for “light traps sugar”, a scrambled non-list, a missing chip, a changed verb round 4 cant be skipped any more. there was a “stop here and see the results” button sitting right in front of the only moment in the session with nothing on screen to lean on, which is where bailing is most tempting the interface stopped hiding the header used to empty itself during a round, on the theory that chrome at the edges competes with retrieval. thats true for one person at a desk. round mode gets passed round a room with several people reading one screen, so it stays up now locking the page to the viewport turned up two bugs. one of them clipped the verdict off the bottom on a short window, and the verdict is the line that tells you the answer the run clock was a nice one. it measured wall clock from the start of the run, so it counted loading and the between-round screens, and it disagreed with the time the results reported. header said 3:20 against a reported 1:08. built off the same splits the results use now the cold open prompt trimmed it after noticing it asked the model to write explanation lines nobody reads. a/b against the real proxy over 10 topics took median completion tokens from 397 to 266, abt 33%, on the one call every student sits and waits for setTimeout i overrode it in the harness to freeze auto-advance long enough to screenshot a verdict, and it swallowed the harness’s own sleeps. script hung and i captured the wrong state. keep a reference to the real function before you replace it status the assembled round is verified, which closes the open item from the last log. full ladder played end to end, in dev and against a production build"}, {"post_id": 41804, "ts": "2026-08-06T07:19:45Z", "hours": 3.1092, "text": "round mode, inspo is hackclub mail!!!! you type a topic and start guessing. five rounds, each one takes away more of the help: two options, four options, a sentence with the word missing, the same sentence in pieces you have to put back together, then nothing on screen at all and you just say it. the ladder runs recognise -> produce bcuz thats the direction the research points, retrieval beats rereading and producing beats picking anyway that part was already built. today was worse the scores were fake correct answers kept turning up in the first slot. felt wrong, so i wrote a script that generates questions thru the real route and counts where the answer actually lands warm up came back 5 of 5 at index 0. round 1 was 7 / 5 / 3 / 0 which means every score this app has ever shown anybody was inflated. you could do well without reading the question it was my own prompt doing it. every JSON example i handed the model had “answerIndex”: 0 sitting in it, so of course it learned that. placement happens on the server after generation now, for every format with ordered options, and that includes the chip tray, which had been shuffling in the browser where nothing could measure it 197 questions across four topics. chi-square under the 5% critical value on every format repeated questions are gone too. the dedupe compares what a question asks for rather than how its worded, so a rephrasing doesnt sneak past. when a topic runs dry the generator gets told to ask abt distinctions and consequences instead of drawing from the same pool twice three things a diff would never show drove headless chrome over all 21 presentations, cuz none of this is visible in code constellation’s stars stacked into a column. tailwind emits .relative after .absolute, and Pick set relative, so it beat the absolute that was being passed in doors swung 72 degrees, which turns the correct answer edge on at the exact moment you need to read it and a burst balloon faded to 0.25 opacity. so a wrong answer got softened by becoming unreadable. that one still bugs me, the marking is the one part that has to stay honest and it was quietly making the bad news harder to look at audio the generated pad sounded like fan noise. gone. its “8bit Dungeon Level” by Kevin MacLeod now, CC BY 4.0, credited in the app and in the repo on by default, the feel is half of why the mode works, and theres a mute for anyone sitting in a library autoplay turned into its own afternoon. no browser lets a page make noise before you touch it, so the track asks to play on mount, the rejection arms a listener, and your first click or keypress is what starts it testing that turned up a bug i had already talked myself out of. react batches state, so if the first thing you touched was the mute button, the listener fired while the value still read on, started the track, then paused it a frame later. a blip of music played at exactly the person switching it off. set synchronously now Two things from the test rig mattered more than the thing it was testing. element.click() doesnt grant user activation in chrome, so my first run looked like the whole feature was broken and was just the harness lying to me. and running chrome with a permissive autoplay flag meant the gesture fallback never fired once, so i was measuring nothing at all not done nobody has played the full ladder in a real browser yet. the presentations render, thats genuinely all i know. tomorrow"}]...
|
Title: learnova-v2 by @ranveergill | Stardance
De Title: learnova-v2 by @ranveergill | Stardance
Devlogs:
round mode, inspo is hackclub mail!!!! you type a topic and start guessing. five rounds, each one takes away more of the help: two options, four options, a sentence with the word missing, the same sentence in pieces you have to put back together, then nothing on screen at all and you just say it. the ladder runs recognise -> produce bcuz thats the direction the research points, retrieval beats rereading and producing beats picking anyway that part was already built. today was worse the scores were fake correct answers kept turning up in the first slot. felt wrong, so i wrote a script that generates questions thru the real route and counts where the answer actually lands warm up came back 5 of 5 at index 0. round 1 was 7 / 5 / 3 / 0 which means every score this app has ever shown anybody was inflated. you could do well without reading the question it was my own prompt doing it. every JSON example i handed the model had “answerIndex”: 0 sitting in it, so of course it learned that. placement happens on the server after generation now, for every format with ordered options, and that includes the chip tray, which had been shuffling in the browser where nothing could measure it 197 questions across four topics. chi-square under the 5% critical value on every format repeated questions are gone too. the dedupe compares what a question asks for rather than how its worded, so a rephrasing doesnt sneak past. when a topic runs dry the generator gets told to ask abt distinctions and consequences instead of drawing from the same pool twice three things a diff would never show drove headless chrome over all 21 presentations, cuz none of this is visible in code constellation’s stars stacked into a column. tailwind emits .relative after .absolute, and Pick set relative, so it beat the absolute that was being passed in doors swung 72 degrees, which turns the correct answer edge on at the exact moment you need to read it and a burst balloon faded to 0.25 opacity. so a wrong answer got softened by becoming unreadable. that one still bugs me, the marking is the one part that has to stay honest and it was quietly making the bad news harder to look at audio the generated pad sounded like fan noise. gone. its “8bit Dungeon Level” by Kevin MacLeod now, CC BY 4.0, credited in the app and in the repo on by default, the feel is half of why the mode works, and theres a mute for anyone sitting in a library autoplay turned into its own afternoon. no browser lets a page make noise before you touch it, so the track asks to play on mount, the rejection arms a listener, and your first click or keypress is what starts it testing that turned up a bug i had already talked myself out of. react batches state, so if the first thing you touched was the mute button, the listener fired while the value still read on, started the track, then paused it a frame later. a blip of music played at exactly the person switching it off. set synchronously now Two things from the test rig mattered more than the thing it was testing. element.click() doesnt grant user activation in chrome, so my first run looked like the whole feature was broken and was just the harness lying to me. and running chrome with a permissive autoplay flag meant the gesture fallback never fired once, so i was measuring nothing at all not done nobody has played the full ladder in a real browser yet. the presentations render, thats genuinely all i know. tomorrow
deleting the score biggest change this session was taking things out. round mode had points, a running total and a combo multiplier. all three gone!!! the argument lowk fell out as soon as i said it aloud. the number at the top of the results was the run time, and the quickest way thru a round is to answer everything wrong immediately. so the headline figure was paying you for the one behaviour the app exists to catch. points and combos were the same information twice over, worked out from how fast and how often you were right, then shown next to how fast and how often you were right whats there instead weights every answer by how little help it had. warm up counts once, round 1 three times, round 2 five, round 3 six, and saying a concept in your own words in round 4 is worth 150. speed isnt in the formula anywhere and two tests hold that down: the same answers given at wildly different speeds come out identical, and fast-and-wrong lands below slow-and-right it reads +615 of 2,120. a bare number says nothing when a short session and a long one have different ceilings round 3 the chip tray used to have wrong words mixed in, so the round was a hunt for what to avoid. now it holds the sentence’s own pieces and nothing else grading stopped being fussy abt list order. seven tests, four of them cases that still have to fail: “sugar traps light” for “light traps sugar”, a scrambled non-list, a missing chip, a changed verb round 4 cant be skipped any more. there was a “stop here and see the results” button sitting right in front of the only moment in the session with nothing on screen to lean on, which is where bailing is most tempting the interface stopped hiding the header used to empty itself during a round, on the theory that chrome at the edges competes with retrieval. thats true for one person at a desk. round mode gets passed round a room with several people reading one screen, so it stays up now locking the page to the viewport turned up two bugs. one of them clipped the verdict off the bottom on a short window, and the verdict is the line that tells you the answer the run clock was a nice one. it measured wall clock from the start of the run, so it counted loading and the between-round screens, and it disagreed with the time the results reported. header said 3:20 against a reported 1:08. built off the same splits the results use now the cold open prompt trimmed it after noticing it asked the model to write explanation lines nobody reads. a/b against the real proxy over 10 topics took median completion tokens from 397 to 266, abt 33%, on the one call every student sits and waits for setTimeout i overrode it in the harness to freeze auto-advance long enough to screenshot a verdict, and it swallowed the harness’s own sleeps. script hung and i captured the wrong state. keep a reference to the real function before you replace it status the assembled round is verified, which closes the open item from the last log. full ladder played end to end, in dev and against a production build
debate mode, and the source that wasnt there biggest thing this session is a second mode. round mode’s ladder tops out at saying something in your own words. debate wants something else out of you, holding a position for four speeches while an opponent tries to take it off you. own route, rather than bolting a sixth round on the end the rating is arithmetic the judge hands back a winner, a margin and ten dimension scores. the elo change gets worked out from those in integer maths the model never sees. ask a model to update an elo directly and you get a number that looks like arithmetic, and you cant catch it going wrong cuz every value it gives you is plausible two tabs and they never mix. open debate is judged on whether the argument holds up. tournament prep gets judged against a tournament bar, where a dropped argument is conceded and 60 means mediocre rather than good for a beginner. format is required and never defaulted, a Public Forum ballot handed to somebody practising Lincoln-Douglas is worse than no ballot cuz theyll act on it tritoflex somebody ran a topic-only session on Tritoflex, a spray-on rubber roofing compound, and got told over and over that it was torch-applied. he caught it cuz he installs the stuff. anybody studying something new wouldnt have ask the model cold abt an obscure term and it comes back with a protein, an alpha helix, signal transduction, implicated in cancer. none of it true, none of it reading as invented, and it never once says it doesnt know the worst bit wasnt a missing disclaimer. on a topic-only round 4 the marking screen printed “Contradicts the source” under a heading reading “The notes”, in a session where the student pasted nothing and the server blanks every citation on the way out anyway. so somebody who wrote a true sentence got told they contradicted evidence that had never existed. it says “the model disagrees” now the header badge went from “AI-generated” to “AI, unchecked”. they typed the topic in themselves so they already know who wrote it. what they have no way to know is that nothing checked it. “AI” stays in the label cuz it outlives the moment, screenshots get shared and come back a week later runs leave something behind they used to die with the tab. honest enough abt the plumbing. but retrieval practice does its work thru spacing, and meeting a concept once, failing to explain it and never seeing it again is the half that only feels like studying the session already worked out the thing worth keeping, a map of which ideas you can recognise but cant say. computed it, showed it once, threw it away on the walk to the results. one standing per concept sticks around now and the front door leads with whats still unsaid the tests that tested nothing my first two boundary assertions both passed against the exact bugs they were written for. one compared trimmed pieces, and trimming erases the evidence, so it cant tell a mid-word cut from a clean one. the other ran on a sample that had collapsed to a single chunk, so there was no join left in it to get wrong only found out bcuz i reverted the fix to watch them fail and they sat there green status the green “strong” band is verified, which closes the open item from the last log. seen in a browser by somebody who knew the answers, rather than by a driver answering option 1 every time readme the privacy section had gone from cautious to false. “nothing is stored beyond the current session” stopped being true the moment runs started leaving a record behind. thats twice a claim in there has drifted while the product moved under it, so anything that stores something now drags a readme check into the same commit still no accounts. standings are per device and clearing site data wipes them
live rooms, and the rating that stopped existing live 1v1 debate shipped. two people, a four character code, no accounts the real decision was what a room even is. serverless functions dont share memory between instances, so a Map tracking whether a room exists lies abt half the time. host creates it on one instance, the guest’s join lands on another, and the guest gets told the room doesnt exist while the host is sat inside it. so nothing tracks existence any more. presence on an ably channel is the room two bugs that only turned up by testing it properly only the host’s browser calls the judge, so the ballot came back written entirely from the host’s side. both players read the host’s strengths and the host’s weaknesses in the second person. the judge writes both ballots now and mirror swaps them for the guest and a room was ending when the first person left instead of the last, which threw out whoever had stayed this reverses the last log, twice both elo modules got deleted. one number going up and down implies a round mode run and a debate round measure the same thing, and they dont. it became a plain record instead then the record got deleted too. a debate ends on its verdict and nothing counts up across rounds results were showing +1,380 of 2,280, a division you have to do in your head at the exact moment you want one answer. its a score out of ten now. anything above ten written by an older build gets dropped rather than converted, cuz converting needs a denominator that was never stored cut suggestion chips, which turned “name a topic” into “pick one of these”. three motions that typewrote themselves onto the debate note for no functional reason. /proof, which was a third way into a landing page arguing there are two. thirteen exported symbols nothing was calling and the “get the ballot” button. the eighth speech lands and the round goes to the judge on its own palette rebuilt off the logo. the dark ground is sampled straight out of the asset, and every neutral swapped for the grey at the same relative luminance, so the contrast ratios that were already tuned still hold. type warmed to the logo’s cream and the accent became the star’s gold two prompt bugs the voice instructions were teaching third person inside their own example. and the ballot voice used bare letters A and B, which now and then came out as “a flaw in A’s hanging out point” worst near miss of the session: the case insensitive fix for the letter A also matched the article “a”, and shipped “with they cheaper alternative” thru a live judge call before anybody caught it separate one, numbered lists were coming out as a single run-on line. fixed, and property tested against 200 random chunkings copy the unavailable message used to claim nothing youd typed had been lost, which this app has no way of knowing bigger one. every ai call was failing with a raw HTTP 402 on a student’s screen, telling them to retry something that was never going to work, cuz the shared key had run out of balance. it says plainly that retrying wont fix it now readme the status section had gone stale before, so it got corrected twice this session first pass: a full eight speech live debate across two real browsers, 1.6s to join, each speech reaching the other window in 423 to 1039ms, and a 15.2 second wait before a disconnect gets noticed, written down as measured rather than rounded down. the judge was stubbed that pass, the key had no balance second pass, once the key refilled: two real judge calls, two genuinely different ballots, no stray letters still open: a judge call made from inside a live room and mirrored to the guest has only ever been checked against a stub
everything is a window now whole app reskinned. every screen sits in a title bar and a paper body on a dark desktop, hard borders, no rounded corner left anywhere, 71 of those came out the token swap broke the landing immediately. –ink went #101010, –ground went #2b2b2b, and the headline sits straight on the ground, so LEARNOVA was black on near-black. wrapping screens in a window fixed it. i would have shipped that on the arithmetic two bugs turned out to be the same shape. the notes sheet had tape, punch holes and a pencil at -right-7, all deliberately outside the container, which nobody notices until a screen has a border. and the timer was a conic-gradient ring with a bg-ground disc punched out to make its hole, so once bg-ground became the desktop it drew a dark circle on a white toolbar /feed shipped. no CI on this repo, check-runs returns total_count: 0, so the build half is the deployments api. unauthenticated github is 60 an hour per ip and that ip is the whole deployment, so the answer sits on globalThis for 60 seconds the palette went round the houses. the title bar started as the blue off the reference screenshot, the only colour in the app from outside its own set, then charcoal which read as the old learnova, then mint, then cream warmed toward the star’s gold. i said the blue was gone twice before it actually was, cuz the first pass only moved the title bar and –accent-wash is what paints ::selection worst near miss: computeRoute(“/debate/live/QBTR”, {code:“QBTR”}) came back unmasked and i had most of a paragraph written abt room codes leaking to analytics. turnValueToRegExp wasnt in scope, so it hit the function’s own catch and handed the input straight back. with the helper in scope its /debate/live/[code] still emulated chrome on one machine. analytics loads but has never reported, that only happens off a deploy
claiming 23 minutes
idk why i keep getting rejected for ai use my last rejection literally said “emojis in readme convey ai use”, ive never had any emojis in the readme ever. anyways devlogging cuz i wanna claim my 16 mins of skimming docs
recent rejection said round mode doesnt work i think it might have just been in an api rate limit thing as i wasnt able to find anything proving thats actually true
trimmed it down and tried to remove anything that could be potentially flagged as ai. i kinda think it looks better now, anyways running out of devlog content haha
no idea how i have this unlogged time lol
Ships:
Are you smarter than AI, your friends, or alone? Learnova is a study tool that only counts it as learned once you can say it back with no help. Multiple choice, then fill in the blank, then rebuild the explanation from pieces, then explain it cold, in your own words, with nothing to lean on. Most study tools stop testing you the moment you can recognize the right answer. This one starts there. The new part is who you’re up against. Debate Mode puts you against an AI opponent that argues the other side of whatever you just explained, four speeches, then a real judge call scores who actually held their ground. Or skip the AI and go against a friend instead, live, same format, one shared link, no accounts. The room exists the moment two people are in it and nothing else. Built this week: live 1v1 debate, real time, no database, a room is just two people and a shared connection. Rewrote how the grading talks to you, since a screen that quietly claims you contradicted a source that was never there does real damage to someone trying to learn. Killed the rating system twice over, first for hiding how different a study run and a debate round actually are, then for existing at all when neither needed to accumulate into a score. Rebuilt the whole color palette off the actual logo instead of picking colors that looked fine. None of it is graded on vibes. The AI opponent isn’t told to be nice or mean, it’s told to actually argue, and the judge is a second, separate model call that never sees what the first one said about itself. The score is out of ten, not a made up elo number a language model invented on the spot, because a model asked to do arithmetic will hand you a plausible number whether or not the arithmetic happened. Live at learnova.software. Open source. Built with Claude Code, over about five weeks of actual work, dates and all in the README because a repo that predates its own hackathon submission should say so plainly. Try it against yourself first. Then a friend. Then, if you’re feeling something, the AI.
active recall is usually regraded as one of the best study methods of all time, and here you can practice it indefinitely! also, if you believe that your a better debater than ai/someone you know, you can challenge that here too! live at learnova.software :)...
|
1793083671.264793
|
1793170071.264793
|
|
44357
|
Starforge by @lacorte | Stardance
|
lacorte
|
2
|
81.24
|
1116
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T15:29:30Z", "hours": 34.0, "multiplier": 18.98, "payout": 618, "blessing": "neutral", "text": "⭐ Starforge is a pixel art & animation studio that runs entirely in your browser. Open (starforge.lacorte.city)[https://starforge.lacorte.city] and draw, as of this ship, your drawing moves. Ship 2 is the Animation Update. Animate : a frame timeline where every frame carries its own duration in milliseconds. Add, reorder and duplicate frames, play the reel on the document’s own clock, and draw with onion skinning. Export : an animated GIF encoder written byte by byte, from the GIF89a header to the LZW dictionary resets. When your art has more than 256 colors, a hand-rolled median-cut quantizer folds it into a legal palette instead of refusing. The Export dialog plays the actual GIF before you download it, next to its true byte size. Spritesheets come out of the same door. Draw : mirror mode, switch on an axis and the editor paints the reflection live under your pencil. The Color Studio mixes any color in HSV, hex or per-channel RGBA. Trackpad zoom got tamed: wheel deltas accumulate into clean notches instead of stepping twenty-five times per glide. Keep your work : editable .starforge project files, and Portable PNG, a real image with the whole project embedded inside, so the file you post is also the file you keep editing. Autosave still catches every stroke, and even a crash screen can still export your drawing. Under the hood : 563 tests, zero dependencies in the core. The encoder is proven against ffmpeg that decodes my GIFs and every pixel comes back identical, including a noise frame built to overflow the LZW dictionary. Quantization is deterministic, same art to the same bytes, and folds ~10,000 colors into 256 in about 23ms. Where it’s going : next ship, the “multiplayer” in the tagline becomes real, a hand-rolled CRDT (last-writer-wins per cell, Lamport clocks) and shareable rooms. Works on your phone. Shortcuts follow Aseprite. Press ? in the editor.", "repo": "https://github.com/Gabriel-Lacorte/starforge", "demo": "https://starforge.lacorte.city/"}, {"ship_num": 2, "ts": "2026-08-10T01:15:34Z", "hours": 29.0, "multiplier": 17.82, "payout": 498, "blessing": "neutral", "text": "⭐ Starforge is a pixel art studio that runs entirely in your browser. Open starforge.lacorte.city and draw. This first ship is the whole editor core, built from scratch in TypeScript with zero dependencies in the core. Draw : pencil, eraser, line, rectangle and ellipse (outline or filled), and a bucket fill with per-channel tolerance and a contiguous/global switch. Rectangular selection that lifts the pixels and lets you drag them anywhere. Layers : add, duplicate, reorder, rename. Per-layer opacity, seven blend modes, visibility and lock. Keep your work : undo/redo across pixel strokes and structural edits alike, autosave in the browser, and PNG export If the editor ever crashes, the error screen still exports your drawing. Under the hood : 208 tests, including property tests that throw hundreds of random actions at the history and require a byte-identical document back. The renderer composites once per change, not once per layer: the cache key is two integers, and panning triggers zero recompositions. Flood fill, Bresenham lines, ellipse rasterizer, composito, all hand-rolled, no graphics libraries. Where it’s going : the “multiplayer” in the tagline is the arc: a hand-rolled CRDT (last-writer-wins per cell with Lamport clocks) and shareable rooms are the next major ships. Works on your phone. Shortcuts follow Aseprite. Press ? in the editor.", "repo": "https://github.com/Gabriel-Lacorte/starforge", "demo": "https://starforge.lacorte.city/"}]...
|
[{"post_id": 64302, "ts": "202 [{"post_id": 64302, "ts": "2026-09-08T16:20:23Z", "hours": 8.6656, "text": "⭐ Starforge is a pixel art & animation studio that runs in your browser. Last time the relay queue was in memory. Now it is a real wire using native WebSocket to talk with the relay I wrote by hand on node:http , handshake, framing, mask, fragmentation, ping/pong, close codes, all of it. Draw a horizontal stroke here, a vertical one there, and both canvases land on the same pixels. 900 pixels travel in 2,730 bytes. Raw it would be 7,200 (8 bytes per pixel: u16 x , u16 y , u32 color ). On the wire the cells sort by (y, x) , coordinates go as zigzag deltas, colors go as an index into a 1-entry table. That is 3.033 bytes per pixel, and every one of the 19 operation kinds round-trips byte-for-byte. The server does not trust a single byte, each op is validated with the same applyOperation the editor uses, on a clone. A bad op earns an ERROR and the connection stays open. Receipts: 662 unit tests green 23 Chromium E2E zero production dependencies Next: the ephemeral room becomes shareable rooms /r/<id>"}, {"post_id": 61840, "ts": "2026-09-04T23:16:43Z", "hours": 9.5767, "text": "⭐ Starforge is a pixel art & animation studio that runs in your browser. Since last week Starforge learned how to disagree without falling apart, and got more comfortable on tablets along the way. This is the first piece of multiplayer, two complete editors, two independent copies of the same drawing, and a queue between them. There is no server yet. I can draw in both editors, hold every message back, reverse their order, deliver one twice, and the documents still finish on the same pixels. Alongside that invisible foundation, community conversations pointed at five visible workflow breaks: the compact tablet layout only kicked in below 720 px, colours sat with layers and frames instead of the brush, palette authoring bounced between two dialogs, brush opacity used a tiny track while layer opacity had a fine large slider, and precise add/subtract selection hid behind keyboard modifiers touch users never see. All five are fixed in this pass. Receipts 633 green unit tests, with 4 ffmpeg cross four pinned seeds × 100 generated operations across three replicas, including pixel conflicts, scalar edits, palette replacement, layer/frame creation, deletion and ordering 20 Chromium E2E tests pass receiving and applying a 900-pixel patch averages about 0.49 ms on my development machine (2,034 patches/second in the recorded run) zero production dependencies in the core Next: the queue becomes a real wire, WebSocket handshake will be written by hand on node:http with the relay on a Raspberry Pi."}, {"post_id": 52640, "ts": "2026-08-22T21:36:24Z", "hours": 9.3367, "text": "⭐ Day 18 of building Starforge, a pixel art & animation studio that lives in your browser. That heart is only half real. I drew the left side and the editor drew the right side under my pencil, live. Mirror mode landed today, and I spent an embarrassing amount of time just watching the other half appear. Two more things came with it. The Export dialog now plays your actual GIF before you download it, next to its true size, same bytes as the download, so the dialog can’t lie to you. My greeting star comes out at 2.4 KB, using 125 of 256 colors. And the encoder learned to lose colors gracefully, which is my favorite thing I’ve built this week: How it works A GIF holds at most 256 colors. Until today, art with more colors hit a wall, an error message asking you to reduce your palette. I hated that message, so now the encoder runs median cut instead. Median cut, in human terms: pour every color in your drawing into one box. Find the box’s longest side, red, green or blue, whichever stretches widest, sort the colors along that side, and cut the box in half at the median. Repeat, always cutting the widest box you have left. After 255 cuts you hold 256 boxes, and each box’s average becomes one crayon in the final palette. Colors that sat close together end up sharing a crayon, which is exactly the kind of loss your eye forgives. The sneaky part is that the same drawing must produce the identical file every single time, so every sort breaks ties by the color’s own value and every average rounds the same way. There’s a test that encodes the same art twice and demands the bytes back, identical. Receipts 563 green tests ~10,000 colors in, 256 out, in about 23ms ffmpeg decodes the quantized file, and re-encoding what it hands back produces the identical bytes Last post I asked you to export a GIF and drop it in the comments. Nobody did :C, fair enough, the star was doing all the work. So today I made it personal: open starforge.lacorte.city , turn on mirror mode, and draw half a thing. The editor does the other half. Post what you get, I’ll feature my favorite in the next devlog :D. And a real question I can’t decide alone: diagonal axes or kaleidoscope. which should mirror mode learn first? Both are on the backlog. You can decide the order. (If you want to catch the next post, follow the project, that button actually notifies you. )"}, {"post_id": 51943, "ts": "2026-08-21T21:51:53Z", "hours": 5.2739, "text": "⭐ Starforge is a pixel art & animation studio that runs in your browser. The GIF above was drawn, animated and exported inside Starforge. Yesterday I said I was writing the GIF encoder by hand. It’s finished, and already sitting behind the Export button in the editor. How it works A GIF doesn’t store pixels. It stores a conversation between two sides that build the same notebook and never send it. The encoder walks the image. The first time it meets a run of pixels it spells the run out, then writes that run in a notebook next to a number. The next time the same run shows up, it sends the number instead of the pixels. The decoder reads those numbers and builds the identical notebook as it goes, which is why the notebook itself never travels, both sides derive it from the same stream. That’s LZW, and it’s lovely right up until you notice the decoder is permanently one entry behind. It can’t file a new run until it has read the code that comes after it. So when the notebook outgrows the current code width, the two sides widen at different moments, and the encoder has to wait one step longer than feels correct. Get that off-by-one wrong and the file is perfect for a few hundred bytes and then dissolves into confetti. That was my morning. Receipts 545 green tests I encoded with my code and decoded with ffmpeg . Every pixel came back identical 16 frames of 256×256 encode in 135ms Browsers quietly treat any GIF delay under 2 centiseconds as 10, so the encoder floors every frame there. Draw something at starforge.lacorte.city , export the GIF, and drop it in the comments! I’ll feature my favorites in the next devlog :D."}, {"post_id": 51700, "ts": "2026-08-21T15:01:44Z", "hours": 7.9314, "text": "⭐ Starforge is a pixel art & animation studio that runs in your browser. Yesterday I said those numbered cells at the bottom of the screenshot were today’s story. Here they are: every cell is a frame with its own duration in milliseconds, play runs the reel on the document’s own clock, and since today, the frame you’re drawing shows its neighbours behind it as ghosts. The star that greets you is a loop with 4 frames now, so you can already see the animation. Receipts : 527 green tests 3 recompositions parked with ghosts on three new end-to-end tests in a real browser Next : I’m writing a GIF encoder from scratch. By hand. :D"}, {"post_id": 51127, "ts": "2026-08-20T17:01:06Z", "hours": 11.9494, "text": "⭐ Starforge is a pixel art & animation studio that runs in your browser. The first ship reviews asked for three things: custom colors (two voters), a less twitchy zoom (one), and opening files (one). All three landed this week. The Color Studio mixes any color in HSV, hex or per-channel RGBA and drops it straight into your palette. The zoom got tamed (story below). And you can now save and open editable .starforge projects, including inside a Portable PNG, a real image with the whole project embedded in it, so the file you post is also the file you can keep editing. Wheel deltas lie about intent A Mac voter said the zoom flew. They were right, and the bug was pretty interesting (it also ate my whole morning). One click of a mouse wheel arrives as a single event of about 100px, but a trackpad glide arrives as dozens of tiny ~4px events. The old code stepped the zoom once per event: a mouse user got one clean step per click, a trackpad user got twenty-five. And I didn’t even know pinch was part of the bug until I read how Chrome handles it: a pinch is faked as ctrl+wheel, so it lands in the same handler too. The fix: accumulate to 100, then discard the remainder. Every event banks its delta. A step only fires when the bank crosses a notch, and turning around mid-glide resets the bank instead of cancelling a step you already saw. Receipts : 511 green tests an e2e that draws, reloads the page and exports in a real browser golden ink fixtures pinned by SHA256 Those numbered cells at the bottom of the screenshot are tomorrow’s story :D"}, {"post_id": 44328, "ts": "2026-08-10T00:30:52Z", "hours": 5.2836, "text": "⭐ Starforge is a pixel art editor that runs in your browser. No engine work today, since I focused on a more important point: Whoever opens starforge.lacorte.city from a feed post, leaves in about two minutes, with no instructions and usually a phone in their hand, so the whole day went into that first visit. You can start your own document now insted of only erasing the star, your drawings survives a reload, and on a phone the layer panel became a drawer. How it works Most web editors take your drawing with them when they break. This one doesn’t. When a component throws, an error boundary renders a screen where Export PNG still works, if the editor dies, you get the PNG out before you reload. Two reasons that’s possible. The document never lived inside the component that broke: it belongs to the DocumentSession, outside the render tree. And the export never goes through the editor, it composites the frame straight from the document. The thing that holds your art and the thing that failed are not the same thing. Receipts: 208 green tests draw, reload, auto-save a keys help menu for shortcuts and gestures zoom by button, fit in one click Tomorrow morning the first real ship goes out :D"}, {"post_id": 43584, "ts": "2026-08-08T22:37:35Z", "hours": 6.3333, "text": "⭐ Starforge is a pixel art editor that runs in your browser. Yesterday it could only draw in a single surface. Today the same old star is five stacked layers, carrying its own opacity, visibility and lock, plus a rule for how its colors blend with the layers below. How it works Compositing every layer on every frame can’t hold 60fps. At 256x256 with eight layers at 800% zoom that’s eight blits of 2048×2048 per frame, about 33 megapixels of work to show a picture that didn’t change. So the editor composites once per change into an offscreen canvas, and the screen just draws that one image. Rendering with no cost since that nothing changed. All with 169 green tests."}, {"post_id": 42960, "ts": "2026-08-07T23:09:15Z", "hours": 10.7408, "text": "⭐ Starfoge: A multiplayer pixel art & animation studio that runs in your browser. Day three, and it finally draws! The whole toolbox landed with six drawing tools and keyboard shortcuts already known by pixel artists. Yesterday’s 37 green tests are 117 today. Today i want to deep dive in one of the questions i had: why fast strokes come out dotted. The browser only tells the page where the mouse is once per screen frame (~60fps), but a hand can cross half the canvas between two of those reports and a quick zigzag would become a trail of separated dots. The fix comes in two layers: First , the browser actually keeps the positions it skipped and hands them back in a bundle with each event, so I ask for those in-between samples. Second , even those have gaps when the gesture is really fast, so between every pair of samples I draw a tiny line using Bresenham algorithm , the same grid walker my line tool uses, it steps from one pixel to a touching neighbor and can’t skip a cell by construction. So every stroke you see is secretly dozens of tiny straight lines, stitched end to end. Tomorrow i will start landing Layers to our studio. Thanks for reading and see you on the next devlog :D"}, {"post_id": 42013, "ts": "2026-08-06T15:42:02Z", "hours": 6.3106, "text": "⭐ Starforge is alive in the browser! This is day two building a multiplayer pixel art studio. So far the editor opens with a little star, and every pixel stays razor sharp at any zoom. With 37 green tests I already started coding the first drawing tools (pencil, eraser, bucket). The sharpness comes from a two stage blit with shared memory. A sprite’s pixels live in one Uint8Array wrapped in an ImageData view, using only one buffer for model and image bytes. Stage one pushes just the changed rectangle onto an offscreen canvas (1:1) which ignores scaling and smoothing so it never blurs. Stage two is a single draw image that stretches the offscreen canvas to the current zoom with the GPU doing the nearest-neighbor upscaling for free. When the pencil lands next ship, the bytes it writes are already the bytes the renderer reads."}]...
|
Title: Starforge by @lacorte | Stardance
Devlogs: Title: Starforge by @lacorte | Stardance
Devlogs:
⭐ Starforge is alive in the browser! This is day two building a multiplayer pixel art studio. So far the editor opens with a little star, and every pixel stays razor sharp at any zoom. With 37 green tests I already started coding the first drawing tools (pencil, eraser, bucket). The sharpness comes from a two stage blit with shared memory. A sprite’s pixels live in one Uint8Array wrapped in an ImageData view, using only one buffer for model and image bytes. Stage one pushes just the changed rectangle onto an offscreen canvas (1:1) which ignores scaling and smoothing so it never blurs. Stage two is a single draw image that stretches the offscreen canvas to the current zoom with the GPU doing the nearest-neighbor upscaling for free. When the pencil lands next ship, the bytes it writes are already the bytes the renderer reads.
⭐ Starfoge: A multiplayer pixel art & animation studio that runs in your browser. Day three, and it finally draws! The whole toolbox landed with six drawing tools and keyboard shortcuts already known by pixel artists. Yesterday’s 37 green tests are 117 today. Today i want to deep dive in one of the questions i had: why fast strokes come out dotted. The browser only tells the page where the mouse is once per screen frame (~60fps), but a hand can cross half the canvas between two of those reports and a quick zigzag would become a trail of separated dots. The fix comes in two layers: First , the browser actually keeps the positions it skipped and hands them back in a bundle with each event, so I ask for those in-between samples. Second , even those have gaps when the gesture is really fast, so between every pair of samples I draw a tiny line using Bresenham algorithm , the same grid walker my line tool uses, it steps from one pixel to a touching neighbor and can’t skip a cell by construction. So every stroke you see is secretly dozens of tiny straight lines, stitched end to end. Tomorrow i will start landing Layers to our studio. Thanks for reading and see you on the next devlog :D
⭐ Starforge is a pixel art editor that runs in your browser. Yesterday it could only draw in a single surface. Today the same old star is five stacked layers, carrying its own opacity, visibility and lock, plus a rule for how its colors blend with the layers below. How it works Compositing every layer on every frame can’t hold 60fps. At 256x256 with eight layers at 800% zoom that’s eight blits of 2048×2048 per frame, about 33 megapixels of work to show a picture that didn’t change. So the editor composites once per change into an offscreen canvas, and the screen just draws that one image. Rendering with no cost since that nothing changed. All with 169 green tests.
⭐ Starforge is a pixel art editor that runs in your browser. No engine work today, since I focused on a more important point: Whoever opens starforge.lacorte.city from a feed post, leaves in about two minutes, with no instructions and usually a phone in their hand, so the whole day went into that first visit. You can start your own document now insted of only erasing the star, your drawings survives a reload, and on a phone the layer panel became a drawer. How it works Most web editors take your drawing with them when they break. This one doesn’t. When a component throws, an error boundary renders a screen where Export PNG still works, if the editor dies, you get the PNG out before you reload. Two reasons that’s possible. The document never lived inside the component that broke: it belongs to the DocumentSession, outside the render tree. And the export never goes through the editor, it composites the frame straight from the document. The thing that holds your art and the thing that failed are not the same thing. Receipts: 208 green tests draw, reload, auto-save a keys help menu for shortcuts and gestures zoom by button, fit in one click Tomorrow morning the first real ship goes out :D
⭐ Starforge is a pixel art & animation studio that runs in your browser. The first ship reviews asked for three things: custom colors (two voters), a less twitchy zoom (one), and opening files (one). All three landed this week. The Color Studio mixes any color in HSV, hex or per-channel RGBA and drops it straight into your palette. The zoom got tamed (story below). And you can now save and open editable .starforge projects, including inside a Portable PNG, a real image with the whole project embedded in it, so the file you post is also the file you can keep editing. Wheel deltas lie about intent A Mac voter said the zoom flew. They were right, and the bug was pretty interesting (it also ate my whole morning). One click of a mouse wheel arrives as a single event of about 100px, but a trackpad glide arrives as dozens of tiny ~4px events. The old code stepped the zoom once per event: a mouse user got one clean step per click, a trackpad user got twenty-five. And I didn’t even know pinch was part of the bug until I read how Chrome handles it: a pinch is faked as ctrl+wheel, so it lands in the same handler too. The fix: accumulate to 100, then discard the remainder. Every event banks its delta. A step only fires when the bank crosses a notch, and turning around mid-glide resets the bank instead of cancelling a step you already saw. Receipts : 511 green tests an e2e that draws, reloads the page and exports in a real browser golden ink fixtures pinned by SHA256 Those numbered cells at the bottom of the screenshot are tomorrow’s story :D
⭐ Starforge is a pixel art & animation studio that runs in your browser. Yesterday I said those numbered cells at the bottom of the screenshot were today’s story. Here they are: every cell is a frame with its own duration in milliseconds, play runs the reel on the document’s own clock, and since today, the frame you’re drawing shows its neighbours behind it as ghosts. The star that greets you is a loop with 4 frames now, so you can already see the animation. Receipts : 527 green tests 3 recompositions parked with ghosts on three new end-to-end tests in a real browser Next : I’m writing a GIF encoder from scratch. By hand. :D
⭐ Starforge is a pixel art & animation studio that runs in your browser. The GIF above was drawn, animated and exported inside Starforge. Yesterday I said I was writing the GIF encoder by hand. It’s finished, and already sitting behind the Export button in the editor. How it works A GIF doesn’t store pixels. It stores a conversation between two sides that build the same notebook and never send it. The encoder walks the image. The first time it meets a run of pixels it spells the run out, then writes that run in a notebook next to a number. The next time the same run shows up, it sends the number instead of the pixels. The decoder reads those numbers and builds the identical notebook as it goes, which is why the notebook itself never travels, both sides derive it from the same stream. That’s LZW, and it’s lovely right up until you notice the decoder is permanently one entry behind. It can’t file a new run until it has read the code that comes after it. So when the notebook outgrows the current code width, the two sides widen at different moments, and the encoder has to wait one step longer than feels correct. Get that off-by-one wrong and the file is perfect for a few hundred bytes and then dissolves into confetti. That was my morning. Receipts 545 green tests I encoded with my code and decoded with ffmpeg . Every pixel came back identical 16 frames of 256×256 encode in 135ms Browsers quietly treat any GIF delay under 2 centiseconds as 10, so the encoder floors every frame there. Draw something at starforge.lacorte.city , export the GIF, and drop it in the comments! I’ll feature my favorites in the next devlog :D.
⭐ Day 18 of building Starforge, a pixel art & animation studio that lives in your browser. That heart is only half real. I drew the left side and the editor drew the right side under my pencil, live. Mirror mode landed today, and I spent an embarrassing amount of time just watching the other half appear. Two more things came with it. The Export dialog now plays your actual GIF before you download it, next to its true size, same bytes as the download, so the dialog can’t lie to you. My greeting star comes out at 2.4 KB, using 125 of 256 colors. And the encoder learned to lose colors gracefully, which is my favorite thing I’ve built this week: How it works A GIF holds at most 256 colors. Until today, art with more colors hit a wall, an error message asking you to reduce your palette. I hated that message, so now the encoder runs median cut instead. Median cut, in human terms: pour every color in your drawing into one box. Find the box’s longest side, red, green or blue, whichever stretches widest, sort the colors along that side, and cut the box in half at the median. Repeat, always cutting the widest box you have left. After 255 cuts you hold 256 boxes, and each box’s average becomes one crayon in the final palette. Colors that sat close together end up sharing a crayon, which is exactly the kind of loss your eye forgives. The sneaky part is that the same drawing must produce the identical file every single time, so every sort breaks ties by the color’s own value and every average rounds the same way. There’s a test that encodes the same art twice and demands the bytes back, identical. Receipts 563 green tests ~10,000 colors in, 256 out, in about 23ms ffmpeg decodes the quantized file, and re-encoding what it hands back produces the identical bytes Last post I asked you to export a GIF and drop it in the comments. Nobody did :C, fair enough, the star was doing all the work. So today I made it personal: open starforge.lacorte.city , turn on mirror mode, and draw half a thing. The editor does the other half. Post what you get, I’ll feature my favorite in the next devlog :D. And a real question I can’t decide alone: diagonal axes or kaleidoscope. which should mirror mode learn first? Both are on the backlog. You can decide the order. (If you want to catch the next post, follow the project, that button actually notifies you. )
⭐ Starforge is a pixel art & animation studio that runs in your browser. Since last week Starforge learned how to disagree without falling apart, and got more comfortable on tablets along the way. This is the first piece of multiplayer, two complete editors, two independent copies of the same drawing, and a queue between them. There is no server yet. I can draw in both editors, hold every message back, reverse their order, deliver one twice, and the documents still finish on the same pixels. Alongside that invisible foundation, community conversations pointed at five visible workflow breaks: the compact tablet layout only kicked in below 720 px, colours sat with layers and frames instead of the brush, palette authoring bounced between two dialogs, brush opacity used a tiny track while layer opacity had a fine large slider, and precise add/subtract selection hid behind keyboard modifiers touch users never see. All five are fixed in this pass. Receipts 633 green unit tests, with 4 ffmpeg cross four pinned seeds × 100 generated operations across three replicas, including pixel conflicts, scalar edits, palette replacement, layer/frame creation, deletion and ordering 20 Chromium E2E tests pass receiving and applying a 900-pixel patch averages about 0.49 ms on my development machine (2,034 patches/second in the recorded run) zero production dependencies in the core Next: the queue becomes a real wire, WebSocket handshake will be written by hand on node:http with the relay on a Raspberry Pi.
⭐ Starforge is a pixel art & animation studio that runs in your browser. Last time the relay queue was in memory. Now it is a real wire using native WebSocket to talk with the relay I wrote by hand on node:http , handshake, framing, mask, fragmentation, ping/pong, close codes, all of it. Draw a horizontal stroke here, a vertical one there, and both canvases land on the same pixels. 900 pixels travel in 2,730 bytes. Raw it would be 7,200 (8 bytes per pixel: u16 x , u16 y , u32 color ). On the wire the cells sort by (y, x) , coordinates go as zigzag deltas, colors go as an index into a 1-entry table. That is 3.033 bytes per pixel, and every one of the 19 operation kinds round-trips byte-for-byte. The server does not trust a single byte, each op is validated with the same applyOperation the editor uses, on a clone. A bad op earns an ERROR and the connection stays open. Receipts: 662 unit tests green 23 Chromium E2E zero production dependencies Next: the ephemeral room becomes shareable rooms /r/<id>
Ships:
⭐ Starforge is a pixel art studio that runs entirely in your browser. Open starforge.lacorte.city and draw. This first ship is the whole editor core, built from scratch in TypeScript with zero dependencies in the core. Draw : pencil, eraser, line, rectangle and ellipse (outline or filled), and a bucket fill with per-channel tolerance and a contiguous/global switch. Rectangular selection that lifts the pixels and lets you drag them anywhere. Layers : add, duplicate, reorder, rename. Per-layer opacity, seven blend modes, visibility and lock. Keep your work : undo/redo across pixel strokes and structural edits alike, autosave in the browser, and PNG export If the editor ever crashes, the error screen still exports your drawing. Under the hood : 208 tests, including property tests that throw hundreds of random actions at the history and require a byte-identical document back. The renderer composites once per change, not once per layer: the cache key is two integers, and panning triggers zero recompositions. Flood fill, Bresenham lines, ellipse rasterizer, composito, all hand-rolled, no graphics libraries. Where it’s going : the “multiplayer” in the tagline is the arc: a hand-rolled CRDT (last-writer-wins per cell with Lamport clocks) and shareable rooms are the next major ships. Works on your phone. Shortcuts follow Aseprite. Press ? in the editor.
⭐ Starforge is a pixel art & animation studio that runs entirely in your browser. Open (starforge.lacorte.city)[https://starforge.lacorte.city] and draw, as of this ship, your drawing moves. Ship 2 is the Animation Update. Animate : a frame timeline where every frame carries its own duration in milliseconds. Add, reorder and duplicate frames, play the reel on the document’s own clock, and draw with onion skinning. Export : an animated GIF encoder written byte by byte, from the GIF89a header to the LZW dictionary resets. When your art has more than 256 colors, a hand-rolled median-cut quantizer folds it into a legal palette instead of refusing. The Export dialog plays the actual GIF before you download it, next to its true byte size. Spritesheets come out of the same door. Draw : mirror mode, switch on an axis and the editor paints the reflection live under your pencil. The Color Studio mixes any color in HSV, hex or per-channel RGBA. Trackpad zoom got tamed: wheel deltas accumulate into clean notches instead of stepping twenty-five times per glide. Keep your work : editable .starforge project files, and Portable PNG, a real image with the whole project embedded inside, so the file you post is also the file you keep editing. Autosave still catches every stroke, and even a crash screen can still export your drawing. Under the hood : 563 tests, zero dependencies in the core. The encoder is proven against ffmpeg that decodes my GIFs and every pixel comes back identical, including a noise frame built to overflow the LZW dictionary. Quantization is deterministic, same art to the same bytes, and folds ~10,000 colors into 256 in about 23ms. Where it’s going : next ship, the “multiplayer” in the tagline becomes real, a hand-rolled CRDT (last-writer-wins per cell, Lamport clocks) and shareable rooms. Works on your phone. Shortcuts follow Aseprite. Press ? in the editor....
|
1792878732.4859972
|
1793742732.4859972
|
|
44461
|
donline!!! by @boredon | Stardance
|
boredon
|
2
|
12.0
|
14
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-12T09:17:42Z", "hours": 1.0, "multiplier": 14.45, "payout": 14, "blessing": "neutral", "text": "(reship so that it can go into rating!) I made a newspaper-themed personal website, with lots of info and lots of Tails. This is my first time ever making an actual website. I initially planned for it to be way simpler, but the idea of a newspaper as a website was irresistible and I had to pursue it. The most challenging part by far was figuring out how to format divs that would accommodate the hybrid spacing and style of traditional newspapers. I had to tinker a lot with flexboxes. On top of that, I also had to labour on making the website as responsive as possible on all screen sizes, which I achieved with clever decisions on the divs (definitely not just “width: 100%” on everything). I’m so glad with how everything turned out and I hope you guys will enjoy reading it as much as I enjoyed making it (sometimes, when it wasn’t bugging out)! Please give me feedback on stuff I should improve or add, as I will be updating this frequently even after it ships!", "repo": "https://github.com/Donald-Mutuku/the-caffeine-herald", "demo": "https://donald-mutuku.github.io/the-caffeine-herald/"}, {"ship_num": 2, "ts": "2026-08-10T22:17:32Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a newspaper-themed personal website, with lots of info and lots of Tails. This is my first time ever making an actual website. I initially planned for it to be way simpler, but the idea of a newspaper as a website was irresistible and I had to pursue it. The most challenging part by far was figuring out how to format divs that would accommodate the hybrid spacing and style of traditional newspapers. I had to tinker a lot with flexboxes. On top of that, I also had to labour on making the website as responsive as possible on all screen sizes, which I achieved with clever decisions on the divs (definitely not just “width: 100%” on everything). I’m so glad with how everything turned out and I hope you guys will enjoy reading it as much as I enjoyed making it (sometimes, when it wasn’t bugging out)! Please give me feedback on stuff I should improve or add, as I will be updating this frequently even after it ships!", "repo": "https://github.com/Donald-Mutuku/the-caffeine-herald", "demo": "https://donald-mutuku.github.io/the-caffeine-herald/"}]...
|
[{"post_id": 45657, "ts": "202 [{"post_id": 45657, "ts": "2026-08-12T09:14:08Z", "hours": 1.0033, "text": "icing on the cake: stickers!! i learnt a little bit of JavaScript today, especially focusing on mouse interactions, and i figured i’d apply it to my website. and what better way to do that than adding stickers! i was so sure they were gonna take 15 minutes tops but nope. for some reason, the stickers initially just vanished when you tried to grab them, and i spent about an hour trying to fix it, only to realize the problem was the sticker-container being set to position: relative; . that was literally it :// anyways, i think i’ll stop tinkering with this website for now, but i will add stickers, maybe copious amounts for all you sticker-loving maniacs. ok byebye! to-do: add more tails"}, {"post_id": 44847, "ts": "2026-08-10T21:35:37Z", "hours": 3.3286, "text": "day 4 of making my personal website: final commit! today was so packed oml. i might be ready to ship this already! there are so many changes i introduced today, including changing the header to a more readable “THE CAFFEINE HERALD” making a carousel for my artworks (day 2 me would be proud) adding 2 google docs embeds so that i can bless my viewers with my beautiful works of literature added a whole column of spotify embed widgets so that y’all can enjoy my atrocious music taste added a music recommendations article so that you can not only listen to, but read about my atrocious music taste added a projects section with, get this, actual projects! added images from my gallery because there was empty space lol i’ll yap a bit about my design choices: the orange accent is a call back to tails, who’s basically part of me atp the off-white background is meant to mimic old fading newspapers the terminal-like font (Iosevka Charon) is meant to contrast with the old design, so the result is a fresh combo of digital and analog media. anyways, i’m so proud of how this turned out and i can’t wait for you guys to be able to check it out. it’s all done (in only 11 hours!) and i’ll ship it later today. yayayayayay!"}, {"post_id": 43816, "ts": "2026-08-09T07:52:12Z", "hours": 2.7344, "text": "day 3 of making my personal website. i completely overhauled the design to match this newspaper aesthetic and i really love how it looks!! getting the columns right was def the most difficult part, but now that i got it down, i only need to add a couple of sections and i’ll be done! yay!"}, {"post_id": 42944, "ts": "2026-08-07T22:39:45Z", "hours": 0.9319, "text": "day third time’s a charm i spent WAYYYY too much time on Figma (pls add hackatime to figma 😭) drafting how i want my website to look, and i think I got something i like! i settled for a newspaper-layout style website when i realized there’s no better way to cram info onto a screen than by packing it in columns. i have so many idea planned for this, including interactive advertisements and maybe even a music widget, and i am so excited to see how it’ll turn out. for today tho, i only managed to make a neat little header for my newspaper, which definitely took a reasonable amount of time ( cough 55 minutes cough ). can’t wait to make the rest tomorrow!"}, {"post_id": 42794, "ts": "2026-08-07T18:08:03Z", "hours": 2.1894, "text": "day two of making my personal website! finished the about me section and moving on to the projects page… and i’m stuck again. i tried making a carousel for my images but it no-clipped out of the page. so i tried to lock them in a container, but now the carousel doesn’t move. so i got rid of the carousel and stacked the images, and now ALL of them clip out of the container. ended up giving up cuz it got too late, but i’ll fix it tomorrow promise 🙏 i’ve also finally decided that i’ll completely change the design of my website, and i got the perfect idea while reading a newspaper (subtle foreshadowing?? 👀👀👀) see y’all tomorrow :DD"}, {"post_id": 42192, "ts": "2026-08-06T20:07:52Z", "hours": 1.3586, "text": "and so it begins… day 1 of making my personal website and i am… so lost. i have not done html/css in quite a while, but i was way rustier than i expected and i spent WAY too long trying to figure out how to organize and format divs. (why does align-items:center; not always, you know, align items in the center??) i’m not too sure about where i’m going with the design, but it doesn’t look too bad honestly. by far my proudest achievement was figuring out how to make the bullet point lists all by myself . even if it’s like, what, 2 lines of code, i love how it looks and that it’s not AI. to-do: design the projects page (doesn’t exist rn) add more stuff to my home page add more tails (most important)"}]...
|
Title: donline!!! by @boredon | Stardance
Devlogs Title: donline!!! by @boredon | Stardance
Devlogs:
and so it begins… day 1 of making my personal website and i am… so lost. i have not done html/css in quite a while, but i was way rustier than i expected and i spent WAY too long trying to figure out how to organize and format divs. (why does align-items:center; not always, you know, align items in the center??) i’m not too sure about where i’m going with the design, but it doesn’t look too bad honestly. by far my proudest achievement was figuring out how to make the bullet point lists all by myself . even if it’s like, what, 2 lines of code, i love how it looks and that it’s not AI. to-do: design the projects page (doesn’t exist rn) add more stuff to my home page add more tails (most important)
day two of making my personal website! finished the about me section and moving on to the projects page… and i’m stuck again. i tried making a carousel for my images but it no-clipped out of the page. so i tried to lock them in a container, but now the carousel doesn’t move. so i got rid of the carousel and stacked the images, and now ALL of them clip out of the container. ended up giving up cuz it got too late, but i’ll fix it tomorrow promise 🙏 i’ve also finally decided that i’ll completely change the design of my website, and i got the perfect idea while reading a newspaper (subtle foreshadowing?? 👀👀👀) see y’all tomorrow :DD
day third time’s a charm i spent WAYYYY too much time on Figma (pls add hackatime to figma 😭) drafting how i want my website to look, and i think I got something i like! i settled for a newspaper-layout style website when i realized there’s no better way to cram info onto a screen than by packing it in columns. i have so many idea planned for this, including interactive advertisements and maybe even a music widget, and i am so excited to see how it’ll turn out. for today tho, i only managed to make a neat little header for my newspaper, which definitely took a reasonable amount of time ( cough 55 minutes cough ). can’t wait to make the rest tomorrow!
day 3 of making my personal website. i completely overhauled the design to match this newspaper aesthetic and i really love how it looks!! getting the columns right was def the most difficult part, but now that i got it down, i only need to add a couple of sections and i’ll be done! yay!
day 4 of making my personal website: final commit! today was so packed oml. i might be ready to ship this already! there are so many changes i introduced today, including changing the header to a more readable “THE CAFFEINE HERALD” making a carousel for my artworks (day 2 me would be proud) adding 2 google docs embeds so that i can bless my viewers with my beautiful works of literature added a whole column of spotify embed widgets so that y’all can enjoy my atrocious music taste added a music recommendations article so that you can not only listen to, but read about my atrocious music taste added a projects section with, get this, actual projects! added images from my gallery because there was empty space lol i’ll yap a bit about my design choices: the orange accent is a call back to tails, who’s basically part of me atp the off-white background is meant to mimic old fading newspapers the terminal-like font (Iosevka Charon) is meant to contrast with the old design, so the result is a fresh combo of digital and analog media. anyways, i’m so proud of how this turned out and i can’t wait for you guys to be able to check it out. it’s all done (in only 11 hours!) and i’ll ship it later today. yayayayayay!
icing on the cake: stickers!! i learnt a little bit of JavaScript today, especially focusing on mouse interactions, and i figured i’d apply it to my website. and what better way to do that than adding stickers! i was so sure they were gonna take 15 minutes tops but nope. for some reason, the stickers initially just vanished when you tried to grab them, and i spent about an hour trying to fix it, only to realize the problem was the sticker-container being set to position: relative; . that was literally it :// anyways, i think i’ll stop tinkering with this website for now, but i will add stickers, maybe copious amounts for all you sticker-loving maniacs. ok byebye! to-do: add more tails
Ships:
I made a newspaper-themed personal website, with lots of info and lots of Tails. This is my first time ever making an actual website. I initially planned for it to be way simpler, but the idea of a newspaper as a website was irresistible and I had to pursue it. The most challenging part by far was figuring out how to format divs that would accommodate the hybrid spacing and style of traditional newspapers. I had to tinker a lot with flexboxes. On top of that, I also had to labour on making the website as responsive as possible on all screen sizes, which I achieved with clever decisions on the divs (definitely not just “width: 100%” on everything). I’m so glad with how everything turned out and I hope you guys will enjoy reading it as much as I enjoyed making it (sometimes, when it wasn’t bugging out)! Please give me feedback on stuff I should improve or add, as I will be updating this frequently even after it ships!
(reship so that it can go into rating!) I made a newspaper-themed personal website, with lots of info and lots of Tails. This is my first time ever making an actual website. I initially planned for it to be way simpler, but the idea of a newspaper as a website was irresistible and I had to pursue it. The most challenging part by far was figuring out how to format divs that would accommodate the hybrid spacing and style of traditional newspapers. I had to tinker a lot with flexboxes. On top of that, I also had to labour on making the website as responsive as possible on all screen sizes, which I achieved with clever decisions on the divs (definitely not just “width: 100%” on everything). I’m so glad with how everything turned out and I hope you guys will enjoy reading it as much as I enjoyed making it (sometimes, when it wasn’t bugging out)! Please give me feedback on stuff I should improve or add, as I will be updating this frequently even after it ships!...
|
1793065882.824671
|
1793152282.824671
|
|
44462
|
Waaaaaaaaluigi Ware by @Vini | Stardance
|
Vini
|
2
|
21.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T20:51:18Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I have made I made a completely functioning waluigi ware godot game The most challenging part The most challenging part of creating this was the last one getting all the collision hit boxes to work The thing I’m most proud of The thing I’m most proud of is the text when it tells you what to do the tweening by code was difficult so yes I got a tiny bit of help form AI TO EXPLAIN how it works NOT TO ctrl c ctrl v What you need to know to test my project This might be buggy but I hope you like it when you click to try to collect the onions in the clicker game you can click the onions with the text still there The text does not pause or stop the timer when the text is there please start the game please try to rate this good and I hope you like this", "repo": "https://github.com/wildevi26250-tech/Waaaaaaaaaario-Ware", "demo": "https://wildevi26250-tech.itch.io/waluigi-ware"}, {"ship_num": 2, "ts": "2026-08-11T05:23:32Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a pretty good game if I dont say so myself its quite good for a first time godot user I like it wuite much. (Wait that doesent english right). Anyways it works pretty well and im quite happy with.", "repo": "https://github.com/wildevi26250-tech/Waaaaaaaaaario-Ware", "demo": "https://wildevi26250-tech.itch.io/waluigi-ware"}]...
|
[{"post_id": 65848, "ts": "202 [{"post_id": 65848, "ts": "2026-09-11T08:14:19Z", "hours": 0.9197, "text": "Gonna ship tomorrow Did some final bug checking and fixing Added a restart if the monster gets to far it makes you lose a life yeah it’s really buggy and kind of crappy but I don’t care"}, {"post_id": 55402, "ts": "2026-08-27T06:35:35Z", "hours": 4.5886, "text": "Tremendous amounts of pain (Please help) I spent about 2 hours wanting to make a rhythm minigame gave up on that Then spent another hour trying to figure out collisions and sword attacks Worked it all out but by Jove it was annoying as hell"}, {"post_id": 51328, "ts": "2026-08-20T22:26:33Z", "hours": 4.3744, "text": "Added half of a Rhythm game This Rhythm minigame is very silly Working on getting some new art in there Thats most of whats been happening"}, {"post_id": 46744, "ts": "2026-08-14T06:52:35Z", "hours": 2.505, "text": "Fixed some basic issues Why the fudge was the timer behind the bricks turnsout all I needed to do is add a canvas layer as a parent made the game genrally better by adding text animations and stuff"}, {"post_id": 45019, "ts": "2026-08-11T04:58:01Z", "hours": 0.5347, "text": "Got everything ready for shipping Fixed some minor bugs like the screen not streatching properly Just some optimization and cleaning really"}, {"post_id": 43606, "ts": "2026-08-08T23:31:50Z", "hours": 3.6431, "text": "Added final Minigame & Clicker game Added block blast as final minigame Added the clicker minigame Added the win and lose screens Gonna ship soon"}, {"post_id": 43086, "ts": "2026-08-08T05:15:56Z", "hours": 2.3519, "text": "Finished first mini game Added fully walking waluigi with walk cycles He collects the garlics"}, {"post_id": 42850, "ts": "2026-08-07T19:52:28Z", "hours": 2.1681, "text": "Added title screen and half of first minigame Title screen and working buttons Pretty cookie concept Please try"}]...
|
Title: Waaaaaaaaluigi Ware by @Vini | Stardance
D Title: Waaaaaaaaluigi Ware by @Vini | Stardance
Devlogs:
Added title screen and half of first minigame Title screen and working buttons Pretty cookie concept Please try
Finished first mini game Added fully walking waluigi with walk cycles He collects the garlics
Added final Minigame & Clicker game Added block blast as final minigame Added the clicker minigame Added the win and lose screens Gonna ship soon
Got everything ready for shipping Fixed some minor bugs like the screen not streatching properly Just some optimization and cleaning really
Fixed some basic issues Why the fudge was the timer behind the bricks turnsout all I needed to do is add a canvas layer as a parent made the game genrally better by adding text animations and stuff
Added half of a Rhythm game This Rhythm minigame is very silly Working on getting some new art in there Thats most of whats been happening
Tremendous amounts of pain (Please help) I spent about 2 hours wanting to make a rhythm minigame gave up on that Then spent another hour trying to figure out collisions and sword attacks Worked it all out but by Jove it was annoying as hell
Gonna ship tomorrow Did some final bug checking and fixing Added a restart if the monster gets to far it makes you lose a life yeah it’s really buggy and kind of crappy but I don’t care
Ships:
I made a pretty good game if I dont say so myself its quite good for a first time godot user I like it wuite much. (Wait that doesent english right). Anyways it works pretty well and im quite happy with.
What I have made I made a completely functioning waluigi ware godot game The most challenging part The most challenging part of creating this was the last one getting all the collision hit boxes to work The thing I’m most proud of The thing I’m most proud of is the text when it tells you what to do the tweening by code was difficult so yes I got a tiny bit of help form AI TO EXPLAIN how it works NOT TO ctrl c ctrl v What you need to know to test my project This might be buggy but I hope you like it when you click to try to collect the onions in the clicker game you can click the onions with the text still there The text does not pause or stop the timer when the text is there please start the game please try to rate this good and I hope you like this...
|
1793065885.6509688
|
1793152285.6509688
|
|
44477
|
MeowGame! by @CharlieCatMeow | Stardance
|
CharlieCatMeow
|
2
|
34.0
|
431
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T15:23:00Z", "hours": 29.0, "multiplier": 14.72, "payout": 431, "blessing": "neutral", "text": "MeowGame MeowGame is a forest-themed WarioWare style game featuring 7 minigames! All art is drawn by me, it’s my first time doing this, so don’t expect it to look fabulous. The minigames: Platformer Clicking Game Fly through obstacles (Like Flappy Bird) Collect falling fruit Jump over spiky bushes Climb to the top (Kind of like Doodle Jump) Maneuver a raft There’s also a pause menu, just press the Esc key. If you’re stuck, the controls are shown during the intermission just before the game. It took me quite a while to get accustomed to everything, from the basic Godot UI to drawing the pixel art. I learned quite a lot throughout this whole process and am pretty happy about the result. Looking back, there are definitely things I would’ve done differently, but as my first step into game development this is pretty good I think. I redid a bunch of stuff on the way and kept changing stuff. it took me a while to get a unified theme going (forest and stuff) Also if you haven’t noticed, the character I drew is inspired from Sekiro. Drawing that character was the hardest, especially the walking animation.", "repo": "https://github.com/CharlieTheCatMeow/WarioWare-Game", "demo": "https://charliecatmeow.itch.io/meowgame"}, {"ship_num": 2, "ts": "2026-08-06T16:08:52Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "(Please read the README first) MeowGame! is a WarioWare inspired game with two minigames: A platformer and a clicker game. The difficulty is very easy please keep that in mind. The art is all drawn by hand so it may look a bit silly. Quite a fun experience creating my first game. I got a grasp of the basics of Godot now and am excited to further develog this game.", "repo": "https://github.com/CharlieTheCatMeow/WarioWare-Game", "demo": "https://charliecatmeow.itch.io/meowgame"}]...
|
[{"post_id": 66655, "ts": "202 [{"post_id": 66655, "ts": "2026-09-12T14:47:10Z", "hours": 2.9856, "text": "MeowGame Devlog #12 Even more fixes and small changes Some more decoration and visual stuff I added some bushes in the background of two minigames. I also adjusted the lighting a bit. Particle changes I changed the particles a bit. Some of them should be more noticable now. Pause menu update You can now find settings inside the pause menu. Audio fix I found out the volume that was being changed with the slider in the game settings wasn’t working probably, so I fixed that. Timer changes I changed the timers on some minigames so the game is a bit more balanced. Clicking sound There is now a sound when you click menu buttons because why not Timer visibility The timer wasn’t visible in one or two minigames, so that’s fixed too. README I also updated the README a bit in preperation for shipping. That should be all"}, {"post_id": 61577, "ts": "2026-09-04T15:36:35Z", "hours": 2.7022, "text": "MeowGame Devlog #11 More stuff Pause menu I added a pause menu. You can choose to return to the main menu now. Thanks to whoever gave me this idea. Some particles I added a few particles to some levels. The first minigame I changed it a bit and also added some lanterns Controls Controls for the next minigame are now visible during the intermission. Also added arrow keys and stuff back into the controls. Ambient sound I added ambient sound to all levels (I think)"}, {"post_id": 57420, "ts": "2026-08-29T15:43:02Z", "hours": 3.0892, "text": "MeowGame Devlog #10 (Wow a 10th devlog already) Normal maps and god rays God rays I found a shader for god rays online and decided to put them in my scenes. Very pretty things they are Normal Maps I found out that normal maps exist. I proceeded to add a normal map to almost every texture in the game. It isn’t a huge difference but it’s there and that’s cool."}, {"post_id": 52884, "ts": "2026-08-23T08:19:18Z", "hours": 2.0542, "text": "MeowGame Devlog #9 Some small stuff I did some performance improvements and added some particle effects. I added a falling leaves effect to the 4th minigame (I think) and added some wind particles to a few other minigames. I had to change the particles from GPUParticles2d to CPUParticles2d, otherwise the browser lags for some reason. I forgot what else I may have done that wasn’t there before."}, {"post_id": 48062, "ts": "2026-08-16T10:50:12Z", "hours": 7.5864, "text": "MeowGame! Devlog #8 It’s a long one, I got a bit carried away I changed some minigames so that it all fits one theme (forests and stuff) Changed the Pong minigame into a game where you have to collect fruit that falls from a tree. Also replaced the racing game with a minigame kinda like Geometry Dash. Changed the art on the flappy bird game to fit the forest theme more. More minigames! I added two more minigames (I think) A doodle jump game where you have to reach the top. A game where you have to maneuver a raft through obstacles Also did some minor quality of life improvements. That’s all :D"}, {"post_id": 44762, "ts": "2026-08-10T19:14:10Z", "hours": 2.2844, "text": "Let there be light MeowGame! Devlog #7 I started experimenting with lights. I recently found out that lights and stuff exist in 2d, so I experimented a bit. I added some lights and glow to my first platformer minigame. I also spent some time redrawing the player sprite. I wanted to have one that’s a bit more detailed to avoid a big difference in pixel size. That’s all :D"}, {"post_id": 43963, "ts": "2026-08-09T12:59:02Z", "hours": 3.2581, "text": "MeowGame! Devlog #6 Top down racing game I added a top down racing game, you have to complete one lap before the timer ends. I also experimented a bit with lighting and stuff. I don’t quite understand it yet but it looks fun."}, {"post_id": 43259, "ts": "2026-08-08T12:47:03Z", "hours": 2.4878, "text": "MeowGame! Devlog #5 I added a Pong game I added a simple pong minigame. There’s not much to say about that, it’s pretty self-explanatory. Also, particles I figured out how the particle system works and have implemented some in a few places. Sounds! I added a coin pickup sound. That’s all, cheers!"}, {"post_id": 42557, "ts": "2026-08-07T11:41:09Z", "hours": 2.8578, "text": "MeowGame! Devlog #4 Added a Flappy Bird game I added a space themed flappy bird game. This was my first time doing a bit of proper coding in GDscript, everything is still a bit weird for me. Redid some art. I updated the art for the platformer minigame, I hope it looks a bit better now."}, {"post_id": 42005, "ts": "2026-08-06T15:28:32Z", "hours": 1.1956, "text": "MeowGame! Devlog #3 Spent a bit of time on art and polishing the game. I added: Flasks as a life counter New Background ✨ Animated character for the platformer minigame Polished some small stuff Overall very enjoyable project, I hope my drawing skills aren’t too bad Will ship now."}, {"post_id": 41904, "ts": "2026-08-06T12:30:31Z", "hours": 3.0183, "text": "MeowGame! Devlog #2 Pretty much finished the guide now I added two minigames, a win screen and a lose screen. It got a lot easier after understanding the basics of how Godot works and I got through it fairly easily. I really enjoyed creating my own custom textures (first time doing this). Some of it is nightmare fuel though (I can’t draw cats) I’m still in the process of refining some stuff and hope I can get to the 5 hour requirement while doing so."}, {"post_id": 41814, "ts": "2026-08-06T08:17:58Z", "hours": 0.9336, "text": "MeowGame! Devlog #1 First Devlog of this project! Godot is completely new to me, so I used the first hour to follow the guide and get a grasp on the basics. I added a start menu and the level_scene as told by the guide. Looking forward to continue working on this project."}]...
|
Title: MeowGame! by @CharlieCatMeow | Stardance
D Title: MeowGame! by @CharlieCatMeow | Stardance
Devlogs:
MeowGame! Devlog #1 First Devlog of this project! Godot is completely new to me, so I used the first hour to follow the guide and get a grasp on the basics. I added a start menu and the level_scene as told by the guide. Looking forward to continue working on this project.
MeowGame! Devlog #2 Pretty much finished the guide now I added two minigames, a win screen and a lose screen. It got a lot easier after understanding the basics of how Godot works and I got through it fairly easily. I really enjoyed creating my own custom textures (first time doing this). Some of it is nightmare fuel though (I can’t draw cats) I’m still in the process of refining some stuff and hope I can get to the 5 hour requirement while doing so.
MeowGame! Devlog #3 Spent a bit of time on art and polishing the game. I added: Flasks as a life counter New Background ✨ Animated character for the platformer minigame Polished some small stuff Overall very enjoyable project, I hope my drawing skills aren’t too bad Will ship now.
MeowGame! Devlog #4 Added a Flappy Bird game I added a space themed flappy bird game. This was my first time doing a bit of proper coding in GDscript, everything is still a bit weird for me. Redid some art. I updated the art for the platformer minigame, I hope it looks a bit better now.
MeowGame! Devlog #5 I added a Pong game I added a simple pong minigame. There’s not much to say about that, it’s pretty self-explanatory. Also, particles I figured out how the particle system works and have implemented some in a few places. Sounds! I added a coin pickup sound. That’s all, cheers!
MeowGame! Devlog #6 Top down racing game I added a top down racing game, you have to complete one lap before the timer ends. I also experimented a bit with lighting and stuff. I don’t quite understand it yet but it looks fun.
Let there be light MeowGame! Devlog #7 I started experimenting with lights. I recently found out that lights and stuff exist in 2d, so I experimented a bit. I added some lights and glow to my first platformer minigame. I also spent some time redrawing the player sprite. I wanted to have one that’s a bit more detailed to avoid a big difference in pixel size. That’s all :D
MeowGame! Devlog #8 It’s a long one, I got a bit carried away I changed some minigames so that it all fits one theme (forests and stuff) Changed the Pong minigame into a game where you have to collect fruit that falls from a tree. Also replaced the racing game with a minigame kinda like Geometry Dash. Changed the art on the flappy bird game to fit the forest theme more. More minigames! I added two more minigames (I think) A doodle jump game where you have to reach the top. A game where you have to maneuver a raft through obstacles Also did some minor quality of life improvements. That’s all :D
MeowGame Devlog #9 Some small stuff I did some performance improvements and added some particle effects. I added a falling leaves effect to the 4th minigame (I think) and added some wind particles to a few other minigames. I had to change the particles from GPUParticles2d to CPUParticles2d, otherwise the browser lags for some reason. I forgot what else I may have done that wasn’t there before.
MeowGame Devlog #10 (Wow a 10th devlog already) Normal maps and god rays God rays I found a shader for god rays online and decided to put them in my scenes. Very pretty things they are Normal Maps I found out that normal maps exist. I proceeded to add a normal map to almost every texture in the game. It isn’t a huge difference but it’s there and that’s cool.
MeowGame Devlog #11 More stuff Pause menu I added a pause menu. You can choose to return to the main menu now. Thanks to whoever gave me this idea. Some particles I added a few particles to some levels. The first minigame I changed it a bit and also added some lanterns Controls Controls for the next minigame are now visible during the intermission. Also added arrow keys and stuff back into the controls. Ambient sound I added ambient sound to all levels (I think)
MeowGame Devlog #12 Even more fixes and small changes Some more decoration and visual stuff I added some bushes in the background of two minigames. I also adjusted the lighting a bit. Particle changes I changed the particles a bit. Some of them should be more noticable now. Pause menu update You can now find settings inside the pause menu. Audio fix I found out the volume that was being changed with the slider in the game settings wasn’t working probably, so I fixed that. Timer changes I changed the timers on some minigames so the game is a bit more balanced. Clicking sound There is now a sound when you click menu buttons because why not Timer visibility The timer wasn’t visible in one or two minigames, so that’s fixed too. README I also updated the README a bit in preperation for shipping. That should be all
Ships:
(Please read the README first) MeowGame! is a WarioWare inspired game with two minigames: A platformer and a clicker game. The difficulty is very easy please keep that in mind. The art is all drawn by hand so it may look a bit silly. Quite a fun experience creating my first game. I got a grasp of the basics of Godot now and am excited to further develog this game.
MeowGame MeowGame is a forest-themed WarioWare style game featuring 7 minigames! All art is drawn by me, it’s my first time doing this, so don’t expect it to look fabulous. The minigames: Platformer Clicking Game Fly through obstacles (Like Flappy Bird) Collect falling fruit Jump over spiky bushes Climb to the top (Kind of like Doodle Jump) Maneuver a raft There’s also a pause menu, just press the Esc key. If you’re stuck, the controls are shown during the intermission just before the game. It took me quite a while to get accustomed to everything, from the basic Godot UI to drawing the pixel art. I learned quite a lot throughout this whole process and am pretty happy about the result. Looking back, there are definitely things I would’ve done differently, but as my first step into game development this is pretty good I think. I redid a bunch of stuff on the way and kept changing stuff. it took me a while to get a unified theme going (forest and stuff) Also if you haven’t noticed, the character I drew is inspired from Sekiro. Drawing that character was the hardest, especially the walking animation....
|
1793094895.2769687
|
1793181295.2769687
|
|
44521
|
TRIANGULATOR by @velocity | Stardance
|
velocity
|
2
|
10.0
|
150
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T15:54:16Z", "hours": 2.0, "multiplier": 12.84, "payout": 36, "blessing": "neutral", "text": "This is my second ship. For my first ship, I had built a very barebones app with a lot of bugs and issues. It simply turned images into triangles, and there was a lot of room for improvement. For this ship, I tried to implement everything that the reviews had asked for. I added a gallery, expanded the README significantly, made my devlogs more detailed, and added clear instructions explaining what each parameter does. I’m very happy with how this project turned out, especially considering how much I improved it from my first ship. The only major improvement I would still like to make is getting the program to run locally. That would be a challenge because of the limited resources available in a browser, but it’s something I’d like to work toward in the future. Since I have a lot of pictures I am going to upload one of my favorite ones, a photo I processed about 3 hours into this project.", "repo": "https://github.com/Velocity918/Trianglator", "demo": "https://trianglator-kohl.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-13T09:23:10Z", "hours": 8.0, "multiplier": 14.13, "payout": 114, "blessing": "neutral", "text": "I have made a simple web app that takes in and image a turns it into triangles, hence the name Triangulator. I am very proud of the algorithm i have written myself for colour detection, placing points in backgrounds and finding midpoint of each triangle. This also helped me revisit some html and css. I would love for people to play around with my project and in the future I might make my project better. Something I still want to improve is time as vercel servers are slow, so the large number of calculations takes a lot of time.", "repo": "https://github.com/Velocity918/Trianglator", "demo": "https://trianglator-kohl.vercel.app/"}]...
|
[{"post_id": 58206, "ts": "202 [{"post_id": 58206, "ts": "2026-08-30T15:48:00Z", "hours": 1.0042, "text": "Final post for this project :< I have finally added a processing screen so you know when the images are actually processing. I have added a gallery of my favorite outputs yet. Added instruction on how to use the website and cleaned up the UI, Check out the website"}, {"post_id": 58079, "ts": "2026-08-30T12:59:44Z", "hours": 1.0003, "text": "I cleaned all the code, fixed a massive deployment error (sadly the time did not count). I significantly improved my README.md, Read my README ."}, {"post_id": 46448, "ts": "2026-08-13T17:39:14Z", "hours": 0.3603, "text": "Fixed my triangulator for transparent images"}, {"post_id": 46208, "ts": "2026-08-13T08:48:02Z", "hours": 0.6492, "text": "added customizability + deployed it so anyone can use it :)"}, {"post_id": 45040, "ts": "2026-08-11T08:51:30Z", "hours": 1.6856, "text": "turned into a web app (looks terrible)"}, {"post_id": 44596, "ts": "2026-08-10T13:51:09Z", "hours": 1.8664, "text": "improved backgrounds by adding points specifically to the background"}, {"post_id": 43156, "ts": "2026-08-08T08:27:59Z", "hours": 1.3475, "text": "Improved the colour accuracy using a meshes and polygons"}, {"post_id": 42034, "ts": "2026-08-06T16:18:25Z", "hours": 2.5136, "text": "Made the Bare bone structure of the program"}]...
|
Title: TRIANGULATOR by @velocity | Stardance
Devl Title: TRIANGULATOR by @velocity | Stardance
Devlogs:
Made the Bare bone structure of the program
Improved the colour accuracy using a meshes and polygons
improved backgrounds by adding points specifically to the background
turned into a web app (looks terrible)
added customizability + deployed it so anyone can use it :)
Fixed my triangulator for transparent images
I cleaned all the code, fixed a massive deployment error (sadly the time did not count). I significantly improved my README.md, Read my README .
Final post for this project :< I have finally added a processing screen so you know when the images are actually processing. I have added a gallery of my favorite outputs yet. Added instruction on how to use the website and cleaned up the UI, Check out the website
Ships:
I have made a simple web app that takes in and image a turns it into triangles, hence the name Triangulator. I am very proud of the algorithm i have written myself for colour detection, placing points in backgrounds and finding midpoint of each triangle. This also helped me revisit some html and css. I would love for people to play around with my project and in the future I might make my project better. Something I still want to improve is time as vercel servers are slow, so the large number of calculations takes a lot of time.
This is my second ship. For my first ship, I had built a very barebones app with a lot of bugs and issues. It simply turned images into triangles, and there was a lot of room for improvement. For this ship, I tried to implement everything that the reviews had asked for. I added a gallery, expanded the README significantly, made my devlogs more detailed, and added clear instructions explaining what each parameter does. I’m very happy with how this project turned out, especially considering how much I improved it from my first ship. The only major improvement I would still like to make is getting the program to run locally. That would be a challenge because of the limited resources available in a browser, but it’s something I’d like to work toward in the future. Since I have a lot of pictures I am going to upload one of my favorite ones, a photo I processed about 3 hours into this project....
|
1793072935.6529481
|
1793159335.6529481
|
|
44537
|
STEMNet.gr by @rosandrox | Stardance
|
rosandrox
|
2
|
72.0
|
1278
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T16:15:32Z", "hours": 52.0, "multiplier": 19.12, "payout": 987, "blessing": "neutral", "text": "STEMNet GREECE CAN YOU PLS STAR MY REPO AND GIMME STARS / I POORED A LOT OF EFFORT INTO IT Created by: Rosario Alexandros Morabito (prodevmod) . I built this as a CS50 final project that turned into a real world mission. PLS READ STEMNet was born out of a real struggle in Greece. Here, proper hands-on STEM education and local school clubs are hard to find, and getting your hands on basic electronics like an Arduino is a challenge you either rely on a single physical store in the whole country or buy online. But since parents often don’t trust internet shopping, young innovators get stuck. I wanted to fix this by building a cozy, peer to peer home where young Greek makers of the same age and passion can finally connect, share project feedback, and feel like they aren’t alone. Like I often times feel. Y develop it further The overwhelming amount of positive feedback I got from my previous shipping of the project and my friends who I cowardly showed it to because I was a bit scared they were going to make fun of me pushed me into expanding this with a React framework for the V1, but trust me, even more is coming. What’s Inside the Platform? The STEM Extra Vault: A handy resource library packed with everything students need to kickstart their independent journey into electronics and coding, making up for what traditional schools miss. Community Groups ( can also be used as School Clubs): Forum style discussion spaces where everyone can chat about their favorite topics. Students can even spin up their own groups to act as virtual versions of real world school clubs. Events & Future Webinars: A dedicated space tracking upcoming competitions, team meetups, and future online STEM teaching sessions that I plan to host once the user base grows. Self-Cleaning Notifications: A smart alert system that automatically wipes read notifications older than 30 days (with a cron job for FREE), keeping the interface clean so users never get overwhelmed by clutter. Built-in Safety & Sigma Profiles: BTS, the site keeps things secure with robust account verification thru session cookies and recapca, safe link-checking to keep malicious websites away thru nginx , customized user profiles with social and GitHub links, and easy account settings. I would realy want to see this project skyrocket! If you have any recomandations about how I can scale it or grow my userbase pls tell me!!!", "repo": "https://github.com/prodevmod/STEMNet.gr", "demo": "https://www.stemnet.app"}, {"ship_num": 2, "ts": "2026-08-09T22:25:15Z", "hours": 20.0, "multiplier": 14.46, "payout": 291, "blessing": "neutral", "text": "See video HERE(OLD VERSION OF SITE): https://youtu.be/QUGb-TlbM0Q . I built STEMNet.gr, a student-driven social hub and resource directory designed specifically for Greek students. It aims to bridge the gap for students who lack local access to STEM clubs, robotics, and academic mentorship. It’s a space to discover curated educational resources, post and find events, and build a community where students can learn from and support each other. Moving from a CS50 project to a production-ready application was a steep learning curve. I spent countless hours diving into Flask, Jinja, and database documentation to ensure the site is secure against SQL injections and unauthorized access. Balancing feature development—like AJAX for real-time interaction, mobile responsiveness, and a custom dark/light mode theme system—while ensuring the site remains fast and secure, was the biggest challenge. I am most proud of creating a self-sustaining, alumni-driven ecosystem. This isn’t just a directory; it’s a platform where students can give back by contributing events they’ve discovered, effectively filling the guidance gap for those starting their STEM journey. I’ve successfully migrated it to a faster, more robust server infrastructure, implemented a secure registration flow, and built a fully functional social graph (followers/following).", "repo": "https://github.com/prodevmod/STEMNet.gr", "demo": "https://www.stemnet.app"}]...
|
[{"post_id": 61591, "ts": "202 [{"post_id": 61591, "ts": "2026-09-04T16:02:16Z", "hours": 0.6472, "text": "GUYS I DID SOME FINAL TOUCHUPS! I AM READY TO SHIP! THE TOUCHUPS HAD TO DO WITH THE GROUPPOSTS CONTENT RENDERING!💀💀💀💀"}, {"post_id": 61454, "ts": "2026-09-04T11:53:33Z", "hours": 4.0161, "text": "I FINISHED ITTTT! So, I basically cleaned up the CSS as I told in the previous devlog. I also added category tags in every post, which was a feature of the HTML version but I had forgot to add it. Then, I also added a going and interesting interactions in events so that people may express where they would like to go from all the events. I also added the refactored edit and delete functions for events and groups, they weren’t working. I fixed the notifications cleanup which was previously not working, it was a cron job I added in the previous devlog. Also, in the profile page, I have now separated the person’s content into posts and replies, that way the UX is far better. Also, I made a crop image component so that the users can customize which part of the image they want in their PFP, and that is also good because now I don’t have to do the fitting anymore because once they have selected it, only the selected part of the icon is saved, so it becomes a lot more gestible for me. I am also adding content so that stemnet has lots of stuff, and further on I will be adding one or two more details and then shipping it. I really don’t think there is anything else to do, I really put a lot of hours into this, and yeah."}, {"post_id": 60704, "ts": "2026-09-03T08:14:23Z", "hours": 3.1347, "text": "Hello!!! Sooooo I Did a few things like: I added pagination for if and when I get a larger userbase the app/webapp won’t crash (Mostly for mobile users) by loading all posts at once. I added a few things in the backend to make expanding this app/webapp easier. I also added RSVP buttons for “Going” and “Interested” in EventDetails and Events pages to make them more interesting. Implemented handleRsvp function to manage user RSVP status and update counts. Adjusted comment reply button to display comment count. Updated requirements.txt to include Pillow and redis. Added a second cron job to cleanup old read notifications NEXT UP: Fixing the UI Add right image sizes in every page w/ content Fix the reversed colours thing"}, {"post_id": 60288, "ts": "2026-09-02T15:46:17Z", "hours": 2.7697, "text": "Today I worked on the cybersecurity aspect of my site btw :P ( I meant to write : but I did a typo P). I honestly was chilling doing nginx configuration and I also secured the recaptcha key. I also took heed of one of my comments and added an api for malicious domains plus I hardcoded some others. I also moved the sanatisation to the forms themselves (post, create group)"}, {"post_id": 59440, "ts": "2026-09-01T09:12:44Z", "hours": 2.9211, "text": "I did all of the following: I’m thinking to fix the change password, change email, and report a bug functions. Also, make it able to upload GIFs for content types because currently, although possible, it is not working. I don’t know why. I have to troubleshoot it. And to fix those verification tokens and redirection. Problems I ENCOUNTERED: I tried and tried times again to fix my redirecting script for half an hour antil my stupid a$$ realised the problem was that resend was injecting a tracker in the website to track if the email was clicked and I removed it resulting on verification links working. After searching up my content error on stack overflow I found out it was neither a supabase or python storing error but it was in fact a nginx framework error that needed one line to be solved:( UP NEXT I am currently running Pentests and rawlers to optimise my webapps cybersecurity and when done I ll prevent any vulenerabilities (I got dyslexia). Right after that I ll try to get a userbase by using lapse to record me addvertising my site!"}, {"post_id": 59016, "ts": "2026-08-31T16:28:57Z", "hours": 6.0711, "text": "SOOOOOOOO: Today I tried to make up for yesterday (I only did like 2 hrs) and here is what I did: So, I updated the navbar to have a settings page, which I was inspired to make because when trying to find an icon that represents stem extras and all the stem together and not just one kind of stem, a gear came to mind. But then I thought I should also make settings, so I put that aside for the time. And now I made the stem extras icon a more chemistry-looking bottle, and the gear I kept for the settings as I said I would. Everything is pretty much the same, except I made an edit and delete event buttons that were much needed because after all the test events I made, it was getting kind of sloppy and unprofessional because it was filled with gibberish. Same goes for the groups, so I did the exact same thing. Also, I made a table for the users to delete a post that many people have replied to by adding a soft delete function that basically checks if the post is deletable, and if it is not, it changes it to this post is no longer available, this post has been deleted. So, I then proceeded to make the settings page, which was very difficult and still I haven’t got over yet. So, I’ve made the appearance and delete account. I made the delete account button to work. It was kind of difficult so that I could secure it that there is no misuse of this button and hackers might mass delete accounts by hacking into them. I also made a report bug, change email, and change password tabs that although they technically or three work, they need some improvement, which I will make in the next devlog. I also made the appearance into something more modern and nice, which is like every other setting, an accordion dropdown that you press to switch to what mode you want. I’m trying to currently recreate the icon near the mode text so it’s a bit more fun, and I will do it in the next devlog. Logout works just fine. I’ve made custom emails and verification tokens for every single action. Also, They still need some work to be done. The verification tokens have made because they currently don’t redirect you back to a login page or something, so they feel empty and don’t work exactly as they are built to work as. Everything else is pretty much the same. I updated the content type so users can upload much larger files. For the next dev log, I’m thinking to fix the change password, change email, and report a bug functions. Also, make it able to upload GIFs for content types because currently, although possible, it is not working. I don’t know why. I have to troubleshoot it. And to fix those verification tokens and redirection."}, {"post_id": 57911, "ts": "2026-08-30T07:34:49Z", "hours": 1.1781, "text": "IT TOOK ME 1 HOUR BUT IT WAS WORH IT: LADIES AND GENTS THE NOTIFICATION ICON CHANGES TO INDICATE YOU HAVE NOTIFICATIONS I’ ll describe this session cuz it was so funny frfr: So like I got started wondering why the notification button in navbar doesnt update I then proceeded to delete the svg s I had and replace them with pc generated ones Then I proceeded to change the structure of both my app.py and navbar.jsx (visible in my commits) But I suddenly remembered I can debug with console logs which I have kept cuz y not To cut it short after debugging I saw in the console log a messoge that said and I quote index-D9jqm-wX.js:11 Navbar hasUnreadNotifications: undefined undefined and that was when I realised I had nowhere in the .jsx included the hasUnreadNotification boolean so there was no way of the client knowing what I was yapping abt in Navbar.jsx basically I was saying check if hasUnreadNotification is True I then used the find thingy of VSCode to add the argument to all the react pages Up Next: Have it tested by people give feedback. Activate global acces via Clouflare Automate deletion of old events with cron"}, {"post_id": 57539, "ts": "2026-08-29T18:28:38Z", "hours": 6.2389, "text": "BEFORE I START TAKE 5 mins of your time pls to test my webapp and suggest additions: SUGEST ON GITHUB https://github.com/prodevmod/STEMNet.gr/issues?q=is%3Aissu MY SITE: https://www.stemnet.app I Just finished the Issues I had made from playtestsing with my bros! These are the functional changes made: REPLY buttons worked flawelessly at every page of the site but it took me 2 hrs cause of how many different pathways were inside my webapp and I had to sort them out but guess what it finally took me 3 hrs because there was a PROBLEM with my code CAUSE I HAD to change the api/posts/post_id to api/post_id/posts but had forgotten to change the route and the method from POST to GET and lost 1 f-ing hour of my time searching for a single line of code. REGISTER page was easy I just had to remove some labels to make the UI mure user friendly, like honestly most changes were frontend based in this part so with my BIG brain and a litle of react documentation it was basically a peice of cake THE NOTIFICATIONS PART WAS THE MOST TIME CONSUMING BECAUSE IT TOOK ME 1 hour researching and 2 hours actually typing cause what was written (mostly frontend) was wrong and I had to create a new table for notifications. Ig I just didn’t know how to implement the notifications. Last part was RECAPTCHA V2 for more stable results it was very easy to do (took me 20 mins tops) Next: TESTING with MY bros Making notification icon full when user has unread notifications IMPLEMENT UR IDEAS"}, {"post_id": 56684, "ts": "2026-08-28T15:24:20Z", "hours": 3.0264, "text": "So, for the first half of this session, I was trying to debug the app and website deployment because the app deployment overrode the website deployment. And at some point, nothing worked. I then went ahead and play-tested my site with some friends, and we found some key issues that I have to fix, such as the fact that reply buttons are not functional in all pages, the register page has some unclear parts, while the notifications page doesn’t work at all. While testing, I found that a friend of mine couldn’t register, and so I tried to register too, but it wouldn’t let me because of the reCAPTCHA. So, that’s how I decided to remove reCAPTCHA v3 completely and apply reCAPTCHA v2, which I haven’t done yet. I also then went ahead and made some issues to my GitHub repository so I can keep track of what I need to change. I’m thinking of merging the two branches, although I’m not sure yet because I would like to have my main branch. I might rename my main branch and make default the react-version branch. I also made a mobile branch, but that’s only on the local git. And that’s all I did for this session. I’m thinking of expanding more on this idea and advertising it, and then also shipping it, but that’s for later on. I must first fix every mistake and then do some testing with relatives, friends, and if you want to, you can participate. And then I’m going to have to have them fill out a form so that I find out which are the weakest points of my UI and what functionalities I could add.Also app works now!!!"}, {"post_id": 56510, "ts": "2026-08-28T09:42:45Z", "hours": 0.6783, "text": "Small note: I made a deplyable app but because it is compiled with capacitor it needed a domain and I entered my websites domain so either the app will work fully and the web server ,ust close either only the frontent works!Actual mobile FOOTAGE(My pfp is so JOLLY):"}, {"post_id": 56450, "ts": "2026-08-28T06:51:35Z", "hours": 2.6586, "text": "SO the UI and most of backend is the same (IT WAS A PREEEEEETY BORING SESSION. Moreover in this session I just: (THE APP HAS LIGHT MODE TO, I JUST PREFER DARK) Cleaned up the CSS and .jsx files Polished and Tested Everything was fine Made the webapp’s logo Hated myself cuz I didn’t know how to deploy my site deployed my sit with hackclub nest server and nginx and gunicorn Playtested w/ some friends and gathered opinions What I Have yet to do: make polished/final UI deploy a mobile app version too Start advertising Contacting people interested in hosting my app Propose my idea to the greek government(I have veryyyyyyyyyyyy High Hopes I know) Follow me cuz this is just the start of this WEBAPP! PLEEEEEEEEEEAAAAAASE STAR MY REPO!"}, {"post_id": 55595, "ts": "2026-08-27T15:30:57Z", "hours": 6.9036, "text": "Ladies and Gents there was not in fact a 5% left… More like 50% … Soooooo: I implemented all the event functions and group functions to work as intended. Also, I made the post detail and the event detail. I made the create group, create post, and everything.I included every function of the previous version that was in HTML, so academic profiles for the registering, multimedia code sharing and links, events and groups featuring dedicated tracking for STEM-related events. Social interactions, the platform includes a standard follower-following network. Security and technical architecture, I built using Python Flask, so I didn’t need to change anything security-wise, so I just kept the old version that using SQLite. It then translated to PostgreSQL alongside Supabase for the cloud file storage, and I have added all the login rate limits so that there is no login brute force.This was my first time coding in react so I learned two distinct ways + css to code a frontend and 1 way to do the backend!"}, {"post_id": 55042, "ts": "2026-08-26T13:57:27Z", "hours": 5.2628, "text": "💀💀I AM EXHAUSTED I SEE ERRORS EVERYWHERE! However on the bright side 95% of the website is done for the react version and I am commiting my REACT V1 today!So, let’s see what changed in the React version. So, I added a logout icon that is created on spot as most icons because I removed mine but kept a few to make the site simpler and more easy to load, though I kept my like buttons and my reply buttons. I removed the image to be shown from the actual profile page so that more content fits into less space. The events are pretty much the same only that I added a footer box so that the user understands where the description starts and where the specifications end. I replaced the gem with a gear and I named the page StemNet Extras Education because it sounded more like the actual thing. The group is functioning every function of the group so nothing changed there. Notifications have a bit different way of functioning but it is the same logic. Pretty much everything is the same just in React with a bit better UI and UX.The basic reason why I didn’t do more devlogs and more analytical work is because the hackathon was down so I couldn’t log anything. And when hackathon came back up around 3 hours of work I had already done, I encountered ton of bugs. That’s why I’m exhausted right now. In fact, this is an edited devlog. In my normal devlog I didn’t upload anything because I was exhausted and wanted to take a break. The thread view or the post detail post works the same. I added a cute profile picture for anyone who hasn’t got one with their initial. Light mode and dark mode are better now. Before they were a bit choppy and in some places they didn’t work. New post is very organized. And most of the text is changing with force white and force black because for some reason all the CSS I wrote didn’t make sense to me. So I just added a force thing so I could label the things I want to turn what I want them to turn to."}, {"post_id": 54729, "ts": "2026-08-25T20:12:25Z", "hours": 3.5881, "text": "So one of the MANY reviewers sugested I build the application / website in react and so I have started doing that! I also drew stemnet logo! I ll cover that in the next devlog cause my lapse is still open IN CASE I wanna change it! However turns out react framework is relativly easy! But bcs I am kinda slow it took me 1 week of studying to start building! I redisigned the css to cover some of my needs and made the register login, index and custom error pages! I also found it easier to integrate my rate limit in a simple warning on the login screen! I am working on a seperate branch for better version control (I AM SO SMART IKR), first time actually using anything else than add push pull remote and satus commands for git ( I AM SO PROUD). Abt the actual project: The react framework is wayyyyyyyyyyyyyyyyyyy faster and leaves room for me to do silly things! I addaptes some things like integrating reply in posts directly (FREEDOM OF REACT) that couldn’t be implemented in html Imma do the rest of the app now I also fixed the images so that their shown in their proper aspect as I was suggested I dont also dont have much to document on as much of the work I did in python css and react was baxically boilerplate code found in documentation!"}, {"post_id": 48706, "ts": "2026-08-17T06:48:45Z", "hours": 0.6875, "text": "Guys when reviewing my project please make an account if you dont want to share your real info atleast use a fake email generator and login from the inbox cause rly all the dedication i ve put into this project is in that page after logging in."}, {"post_id": 45438, "ts": "2026-08-11T21:44:13Z", "hours": 1.8439, "text": "I cleaned up some things I added a login limit to avoid bruteforce and a custom html page for when the user exceeds the limit. I wrote the README.md from scratch cause I had used AI to make the process quicker. I added comments so anyone who might wants to do a PR isn’t deterred by the ammount of confusing jargon.Fixed some css issues and added more to the STEM EXTRA page. I also added a captcha v3 verificator to avoid having bots raid my platform…. PLEASE READ PREVIOUS DEVLOGS TO UNDERSTAND THE MISSSION"}, {"post_id": 44272, "ts": "2026-08-09T22:21:53Z", "hours": 0.5536, "text": "Just run last tests added more stem material!!!! With these devlog I want to gain your atention to spread the word to people you think will find it useful as it is primarly for greek students but the important part is that it is for students that do not have stem guidance and don’t know where to start from. With these project students not only gain guidance and benefit from the community but can contribute back into it (by posting about an upcoming event they heard about) creating a self sustaining alumni driven platform.Thank you for your attention!!! Enjoy my project!! Make sure to checkout the vid (old version) see progress!!! https://youtu.be/QUGb-TlbM0Q"}, {"post_id": 44235, "ts": "2026-08-09T21:07:37Z", "hours": 1.91, "text": "Okay, so I did the last cleanup, so my project is ready for shipping. In this session, I removed the feed button because it was unnecessary. The stemnet.gr logo takes you to the feed. I restricted the navigation feature icons only for the logged-in users. I forced the login prompt button to retain a clean white text background and properly structured the mobile and desktop navbar. I added hero card styling. I also added an extremely beneficial part of the site with all the extra academics a student can take. There I will upload different links and resources for Greek students to study STEM outside of the school curriculum. I think that’s a very good idea and very nice I created and thought of. And while testing the final product, I was headbanging to “So Lucky” by Twice and “Loser” by Tame Impala."}, {"post_id": 44082, "ts": "2026-08-09T16:36:46Z", "hours": 3.9775, "text": "I added the group chat section with search results in integration in search.html. Added the dedicated group chat ads section that queries matching groups. Feed discovery banner has some sponsored or featured group chats. Then I added the light and dark mode system with zero flash theme script. I embedded the synchronous script. I also added a dynamic navbar toggle so it will be more user-friendly and theme-aware UI that inverts the colors of non-visible UI depending on the theme."}, {"post_id": 43709, "ts": "2026-08-09T03:49:02Z", "hours": 2.4692, "text": "I’ve implemented a lot of cybersecurity measures, so SQL injection or mitigations won’t happen. I fixed the SQL search. Following and followers list .html didn’t work before, now it works flawlessly. I changed servers because the server I used was very slow. I am using Nest of Hacklab currently. Yeah, that’s all the changes for today, but it turned out pretty neat. Check out the video."}, {"post_id": 42907, "ts": "2026-08-07T21:14:20Z", "hours": 0.4639, "text": "I officially think the first version of my site is ready to be shipped. I fixed some last minute bugs. I added AJAX so that the user doesn’t have to always refresh the page to see their likes.For further informations visit the github repo. Alo I hosted it on nest so that the site would be faster. I also spent 4-5 Hours reading flask and jinja and json documentation to debug and apply cybersecurity measures. Youtube preview: https://www.youtube.com/watch?v=QUGb-TlbM0Q"}, {"post_id": 42764, "ts": "2026-08-07T17:16:02Z", "hours": 3.0769, "text": "Big coding session. I migrated the site to the Hacklab Nest because it gives me more potential and a larger and faster server. It will have many benefits. I finished the basic idea I had in mind for this site. Basically, it includes: A feed An event section A notification section A profile section, along with followers and following sections An affiliate links section in the profile page Posts that show up both in the feed and the logged-out section A search button to search for users and posts that might interest you A filter feature to search posts by category A new post button A log out button A login button A register button with registration verification provided by resend"}, {"post_id": 42275, "ts": "2026-08-06T22:07:18Z", "hours": 2.0411, "text": "I’m clocking off for the day. I think I finished the biggest part of the project. I improved my site’s cyber security from brute force SQL injections, remote post, delete, and edit. I added: a search page an event page a post page a feed page a profile page followers and following list a follow button a like button a comment to reply button where you basically post something replying to something else However I doubt the efficiency of this project and if it’s going to carry out as I want it. I really hope it does. Ideally I host it online with a custom domain. I have the eligibility to take one for free because I’m in the GitHub student pack. I don’t know if it’s really worth it. Take a look at my project and you tell me. I also added a profile picture. please comment your opinion: should I make it public or what? https://stemnet-gr.onrender.com/register"}, {"post_id": 42080, "ts": "2026-08-06T17:17:40Z", "hours": 2.225, "text": "I have made the web app applicable to a mobile app too so if you join from mobile, everything will be in a normal view and it will not be deformed. I worked on the profile. The followers and following are applicable, clickable, and you can see who you are following or who your followers are. I added links to GitHub and LinkedIn, which have their own personalized icons. All the rest have just a bug icon, a reference to all the bugs that have deterred many fellow coders. Next, I’m planning to create the full post and events mechanism because, on this site, you can add posts or events. Additionally, I will implement notifications, which is another functionality. After that, I will work on the verification of each user with an automated email and upload the first working STEMnet to GitHub, although I have a lot to work on."}, {"post_id": 41893, "ts": "2026-08-06T12:09:12Z", "hours": 3.3692, "text": "Before you see the progress I’ve made, I want you to know this project was made by me as the final project of my CS50 course. Not just to get over the course but to solve an actual problem you see in Greece we have very limited access to clubs and robotics in general. Imagine there is only one shop in the whole state that you can buy electronic components from. I managed to make an SQL database with all the users’ posts, likes, etc., information, a login page, a new post page, a profile page, and affiliate links for networking between students. I’m still working on cyber security. However we are clear of SQL injections so that’s good. The CSS is rather simple but working and I think I will keep it. I might add some shadows just to make it feel more interactive. The buttons are already interactive so that’s good."}]...
|
Title: STEMNet.gr by @rosandrox | Stardance
Devlo Title: STEMNet.gr by @rosandrox | Stardance
Devlogs:
Before you see the progress I’ve made, I want you to know this project was made by me as the final project of my CS50 course. Not just to get over the course but to solve an actual problem you see in Greece we have very limited access to clubs and robotics in general. Imagine there is only one shop in the whole state that you can buy electronic components from. I managed to make an SQL database with all the users’ posts, likes, etc., information, a login page, a new post page, a profile page, and affiliate links for networking between students. I’m still working on cyber security. However we are clear of SQL injections so that’s good. The CSS is rather simple but working and I think I will keep it. I might add some shadows just to make it feel more interactive. The buttons are already interactive so that’s good.
I have made the web app applicable to a mobile app too so if you join from mobile, everything will be in a normal view and it will not be deformed. I worked on the profile. The followers and following are applicable, clickable, and you can see who you are following or who your followers are. I added links to GitHub and LinkedIn, which have their own personalized icons. All the rest have just a bug icon, a reference to all the bugs that have deterred many fellow coders. Next, I’m planning to create the full post and events mechanism because, on this site, you can add posts or events. Additionally, I will implement notifications, which is another functionality. After that, I will work on the verification of each user with an automated email and upload the first working STEMnet to GitHub, although I have a lot to work on.
I’m clocking off for the day. I think I finished the biggest part of the project. I improved my site’s cyber security from brute force SQL injections, remote post, delete, and edit. I added: a search page an event page a post page a feed page a profile page followers and following list a follow button a like button a comment to reply button where you basically post something replying to something else However I doubt the efficiency of this project and if it’s going to carry out as I want it. I really hope it does. Ideally I host it online with a custom domain. I have the eligibility to take one for free because I’m in the GitHub student pack. I don’t know if it’s really worth it. Take a look at my project and you tell me. I also added a profile picture. please comment your opinion: should I make it public or what? https://stemnet-gr.onrender.com/register
Big coding session. I migrated the site to the Hacklab Nest because it gives me more potential and a larger and faster server. It will have many benefits. I finished the basic idea I had in mind for this site. Basically, it includes: A feed An event section A notification section A profile section, along with followers and following sections An affiliate links section in the profile page Posts that show up both in the feed and the logged-out section A search button to search for users and posts that might interest you A filter feature to search posts by category A new post button A log out button A login button A register button with registration verification provided by resend
I officially think the first version of my site is ready to be shipped. I fixed some last minute bugs. I added AJAX so that the user doesn’t have to always refresh the page to see their likes.For further informations visit the github repo. Alo I hosted it on nest so that the site would be faster. I also spent 4-5 Hours reading flask and jinja and json documentation to debug and apply cybersecurity measures. Youtube preview: https://www.youtube.com/watch?v=QUGb-TlbM0Q
I’ve implemented a lot of cybersecurity measures, so SQL injection or mitigations won’t happen. I fixed the SQL search. Following and followers list .html didn’t work before, now it works flawlessly. I changed servers because the server I used was very slow. I am using Nest of Hacklab currently. Yeah, that’s all the changes for today, but it turned out pretty neat. Check out the video.
I added the group chat section with search results in integration in search.html. Added the dedicated group chat ads section that queries matching groups. Feed discovery banner has some sponsored or featured group chats. Then I added the light and dark mode system with zero flash theme script. I embedded the synchronous script. I also added a dynamic navbar toggle so it will be more user-friendly and theme-aware UI that inverts the colors of non-visible UI depending on the theme.
Okay, so I did the last cleanup, so my project is ready for shipping. In this session, I removed the feed button because it was unnecessary. The stemnet.gr logo takes you to the feed. I restricted the navigation feature icons only for the logged-in users. I forced the login prompt button to retain a clean white text background and properly structured the mobile and desktop navbar. I added hero card styling. I also added an extremely beneficial part of the site with all the extra academics a student can take. There I will upload different links and resources for Greek students to study STEM outside of the school curriculum. I think that’s a very good idea and very nice I created and thought of. And while testing the final product, I was headbanging to “So Lucky” by Twice and “Loser” by Tame Impala.
Just run last tests added more stem material!!!! With these devlog I want to gain your atention to spread the word to people you think will find it useful as it is primarly for greek students but the important part is that it is for students that do not have stem guidance and don’t know where to start from. With these project students not only gain guidance and benefit from the community but can contribute back into it (by posting about an upcoming event they heard about) creating a self sustaining alumni driven platform.Thank you for your attention!!! Enjoy my project!! Make sure to checkout the vid (old version) see progress!!! https://youtu.be/QUGb-TlbM0Q
I cleaned up some things I added a login limit to avoid bruteforce and a custom html page for when the user exceeds the limit. I wrote the README.md from scratch cause I had used AI to make the process quicker. I added comments so anyone who might wants to do a PR isn’t deterred by the ammount of confusing jargon.Fixed some css issues and added more to the STEM EXTRA page. I also added a captcha v3 verificator to avoid having bots raid my platform…. PLEASE READ PREVIOUS DEVLOGS TO UNDERSTAND THE MISSSION
Guys when reviewing my project please make an account if you dont want to share your real info atleast use a fake email generator and login from the inbox cause rly all the dedication i ve put into this project is in that page after logging in.
So one of the MANY reviewers sugested I build the application / website in react and so I have started doing that! I also drew stemnet logo! I ll cover that in the next devlog cause my lapse is still open IN CASE I wanna change it! However turns out react framework is relativly easy! But bcs I am kinda slow it took me 1 week of studying to start building! I redisigned the css to cover some of my needs and made the register login, index and custom error pages! I also found it easier to integrate my rate limit in a simple warning on the login screen! I am working on a seperate branch for better version control (I AM SO SMART IKR), first time actually using anything else than add push pull remote and satus commands for git ( I AM SO PROUD). Abt the actual project: The react framework is wayyyyyyyyyyyyyyyyyyy faster and leaves room for me to do silly things! I addaptes some things like integrating reply in posts directly (FREEDOM OF REACT) that couldn’t be implemented in html Imma do the rest of the app now I also fixed the images so that their shown in their proper aspect as I was suggested I dont also dont have much to document on as much of the work I did in python css and react was baxically boilerplate code found in documentation!
💀💀I AM EXHAUSTED I SEE ERRORS EVERYWHERE! However on the bright side 95% of the website is done for the react version and I am commiting my REACT V1 today!So, let’s see what changed in the React version. So, I added a logout icon that is created on spot as most icons because I removed mine but kept a few to make the site simpler and more easy to load, though I kept my like buttons and my reply buttons. I removed the image to be shown from the actual profile page so that more content fits into less space. The events are pretty much the same only that I added a footer box so that the user understands where the description starts and where the specifications end. I replaced the gem with a gear and I named the page StemNet Extras Education because it sounded more like the actual thing. The group is functioning every function of the group so nothing changed there. Notifications have a bit different way of functioning but it is the same logic. Pretty much everything is the same just in React with a bit better UI and UX.The basic reason why I didn’t do more devlogs and more analytical work is because the hackathon was down so I couldn’t log anything. And when hackathon came back up around 3 hours of work I had already done, I encountered ton of bugs. That’s why I’m exhausted right now. In fact, this is an edited devlog. In my normal devlog I didn’t upload anything because I was exhausted and wanted to take a break. The thread view or the post detail post works the same. I added a cute profile picture for anyone who hasn’t got one with their initial. Light mode and dark mode are better now. Before they were a bit choppy and in some places they didn’t work. New post is very organized. And most of the text is changing with force white and force black because for some reason all the CSS I wrote didn’t make sense to me. So I just added a force thing so I could label the things I want to turn what I want them to turn to.
Ladies and Gents there was not in fact a 5% left… More like 50% … Soooooo: I implemented all the event functions and group functions to work as intended. Also, I made the post detail and the event detail. I made the create group, create post, and everything.I included every function of the previous version that was in HTML, so academic profiles for the registering, multimedia code sharing and links, events and groups featuring dedicated tracking for STEM-related events. Social interactions, the platform includes a standard follower-following network. Security and technical architecture, I built using Python Flask, so I didn’t need to change anything security-wise, so I just kept the old version that using SQLite. It then translated to PostgreSQL alongside Supabase for the cloud file storage, and I have added all the login rate limits so that there is no login brute force.This was my first time coding in react so I learned two distinct ways + css to code a frontend and 1 way to do the backend!
SO the UI and most of backend is the same (IT WAS A PREEEEEETY BORING SESSION. Moreover in this session I just: (THE APP HAS LIGHT MODE TO, I JUST PREFER DARK) Cleaned up the CSS and .jsx files Polished and Tested Everything was fine Made the webapp’s logo Hated myself cuz I didn’t know how to deploy my site deployed my sit with hackclub nest server and nginx and gunicorn Playtested w/ some friends and gathered opinions What I Have yet to do: make polished/final UI deploy a mobile app version too Start advertising Contacting people interested in hosting my app Propose my idea to the greek government(I have veryyyyyyyyyyyy High Hopes I know) Follow me cuz this is just the start of this WEBAPP! PLEEEEEEEEEEAAAAAASE STAR MY REPO!
Small note: I made a deplyable app but because it is compiled with capacitor it needed a domain and I entered my websites domain so either the app will work fully and the web server ,ust close either only the frontent works!Actual mobile FOOTAGE(My pfp is so JOLLY):
So, for the first half of this session, I was trying to debug the app and website deployment because the app deployment overrode the website deployment. And at some point, nothing worked. I then went ahead and play-tested my site with some friends, and we found some key issues that I have to fix, such as the fact that reply buttons are not functional in all pages, the register page has some unclear parts, while the notifications page doesn’t work at all. While testing, I found that a friend of mine couldn’t register, and so I tried to register too, but it wouldn’t let me because of the reCAPTCHA. So, that’s how I decided to remove reCAPTCHA v3 completely and apply reCAPTCHA v2, which I haven’t done yet. I also then went ahead and made some issues to my GitHub repository so I can keep track of what I need to change. I’m thinking of merging the two branches, although I’m not sure yet because I would like to have my main branch. I might rename my main branch and make default the react-version branch. I also made a mobile branch, but that’s only on the local git. And that’s all I did for this session. I’m thinking of expanding more on this idea and advertising it, and then also shipping it, but that’s for later on. I must first fix every mistake and then do some testing with relatives, friends, and if you want to, you can participate. And then I’m going to have to have them fill out a form so that I find out which are the weakest points of my UI and what functionalities I could add.Also app works now!!!
BEFORE I START TAKE 5 mins of your time pls to test my webapp and suggest additions: SUGEST ON GITHUB https://github.com/prodevmod/STEMNet.gr/issues?q=is%3Aissu MY SITE: https://www.stemnet.app I Just finished the Issues I had made from playtestsing with my bros! These are the functional changes made: REPLY buttons worked flawelessly at every page of the site but it took me 2 hrs cause of how many different pathways were inside my webapp and I had to sort them out but guess what it finally took me 3 hrs because there was a PROBLEM with my code CAUSE I HAD to change the api/posts/post_id to api/post_id/posts but had forgotten to change the route and the method from POST to GET and lost 1 f-ing hour of my time searching for a single line of code. REGISTER page was easy I just had to remove some labels to make the UI mure user friendly, like honestly most changes were frontend based in this part so with my BIG brain and a litle of react documentation it was basically a peice of cake THE NOTIFICATIONS PART WAS THE MOST TIME CONSUMING BECAUSE IT TOOK ME 1 hour researching and 2 hours actually typing cause what was written (mostly frontend) was wrong and I had to create a new table for notifications. Ig I just didn’t know how to implement the notifications. Last part was RECAPTCHA V2 for more stable results it was very easy to do (took me 20 mins tops) Next: TESTING with MY bros Making notification icon full when user has unread notifications IMPLEMENT UR IDEAS
IT TOOK ME 1 HOUR BUT IT WAS WORH IT: LADIES AND GENTS THE NOTIFICATION ICON CHANGES TO INDICATE YOU HAVE NOTIFICATIONS I’ ll describe this session cuz it was so funny frfr: So like I got started wondering why the notification button in navbar doesnt update I then proceeded to delete the svg s I had and replace them with pc generated ones Then I proceeded to change the structure of both my app.py and navbar.jsx (visible in my commits) But I suddenly remembered I can debug with console logs which I have kept cuz y not To cut it short after debugging I saw in the console log a messoge that said and I quote index-D9jqm-wX.js:11 Navbar hasUnreadNotifications: undefined undefined and that was when I realised I had nowhere in the .jsx included the hasUnreadNotification boolean so there was no way of the client knowing what I was yapping abt in Navbar.jsx basically I was saying check if hasUnreadNotification is True I then used the find thingy of VSCode to add the argument to all the react pages Up Next: Have it tested by people give feedback. Activate global acces via Clouflare Automate deletion of old events with cron
SOOOOOOOO: Today I tried to make up for yesterday (I only did like 2 hrs) and here is what I did: So, I updated the navbar to have a settings page, which I was inspired to make because when trying to find an icon that represents stem extras and all the stem together and not just one kind of stem, a gear came to mind. But then I thought I should also make settings, so I put that aside for the time. And now I made the stem extras icon a more chemistry-looking bottle, and the gear I kept for the settings as I said I would. Everything is pretty much the same, except I made an edit and delete event buttons that were much needed because after all the test events I made, it was getting kind of sloppy and unprofessional because it was filled with gibberish. Same goes for the groups, so I did the exact same thing. Also, I made a table for the users to delete a post that many people have replied to by adding a soft delete function that basically checks if the post is deletable, and if it is not, it changes it to this post is no longer available, this post has been deleted. So, I then proceeded to make the settings page, which was very difficult and still I haven’t got over yet. So, I’ve made the appearance and delete account. I made the delete account button to work. It was kind of difficult so that I could secure it that there is no misuse of this button and hackers might mass delete accounts by hacking into them. I also made a report bug, change email, and change password tabs that although they technically or three work, they need some improvement, which I will make in the next devlog. I also made the appearance into something more modern and nice, which is like every other setting, an accordion dropdown that you press to switch to what mode you want. I’m trying to currently recreate the icon near the mode text so it’s a bit more fun, and I will do it in the next devlog. Logout works just fine. I’ve made custom emails and verification tokens for every single action. Also, They still need some work to be done. The verification tokens have made because they currently don’t redirect you back to a login page or something, so they feel empty and don’t work exactly as they are built to work as. Everything else is pretty much the same. I updated the content type so users can upload much larger files. For the next dev log, I’m thinking to fix the change password, change email, and report a bug functions. Also, make it able to upload GIFs for content types because currently, although possible, it is not working. I don’t know why. I have to troubleshoot it. And to fix those verification tokens and redirection.
I did all of the following: I’m thinking to fix the change password, change email, and report a bug functions. Also, make it able to upload GIFs for content types because currently, although possible, it is not working. I don’t know why. I have to troubleshoot it. And to fix those verification tokens and redirection. Problems I ENCOUNTERED: I tried and tried times again to fix my redirecting script for half an hour antil my stupid a$$ realised the problem was that resend was injecting a tracker in the website to track if the email was clicked and I removed it resulting on verification links working. After searching up my content error on stack overflow I found out it was neither a supabase or python storing error but it was in fact a nginx framework error that needed one line to be solved:( UP NEXT I am currently running Pentests and rawlers to optimise my webapps cybersecurity and when done I ll prevent any vulenerabilities (I got dyslexia). Right after that I ll try to get a userbase by using lapse to record me addvertising my site!
Today I worked on the cybersecurity aspect of my site btw :P ( I meant to write : but I did a typo P). I honestly was chilling doing nginx configuration and I also secured the recaptcha key. I also took heed of one of my comments and added an api for malicious domains plus I hardcoded some others. I also moved the sanatisation to the forms themselves (post, create group)
Hello!!! Sooooo I Did a few things like: I added pagination for if and when I get a larger userbase the app/webapp won’t crash (Mostly for mobile users) by loading all posts at once. I added a few things in the backend to make expanding this app/webapp easier. I also added RSVP buttons for “Going” and “Interested” in EventDetails and Events pages to make them more interesting. Implemented handleRsvp function to manage user RSVP status and update counts. Adjusted comment reply button to display comment count. Updated requirements.txt to include Pillow and redis. Added a second cron job to cleanup old read notifications NEXT UP: Fixing the UI Add right image sizes in every page w/ content Fix the reversed colours thing
I FINISHED ITTTT! So, I basically cleaned up the CSS as I told in the previous devlog. I also added category tags in every post, which was a feature of the HTML version but I had forgot to add it. Then, I also added a going and interesting interactions in events so that people may express where they would like to go from all the events. I also added the refactored edit and delete functions for events and groups, they weren’t working. I fixed the notifications cleanup which was previously not working, it was a cron job I added in the previous devlog. Also, in the profile page, I have now separated the person’s content into posts and replies, that way the UX is far better. Also, I made a crop image component so that the users can customize which part of the image they want in their PFP, and that is also good because now I don’t have to do the fitting anymore because once they have selected it, only the selected part of the icon is saved, so it becomes a lot more gestible for me. I am also adding content so that stemnet has lots of stuff, and further on I will be adding one or two more details and then shipping it. I really don’t think there is anything else to do, I really put a lot of hours into this, and yeah.
GUYS I DID SOME FINAL TOUCHUPS! I AM READY TO SHIP! THE TOUCHUPS HAD TO DO WITH THE GROUPPOSTS CONTENT RENDERING!💀💀💀💀
Ships:
See video HERE(OLD VERSION OF SITE): https://youtu.be/QUGb-TlbM0Q . I built STEMNet.gr, a student-driven social hub and resource directory designed specifically for Greek students. It aims to bridge the gap for students who lack local access to STEM clubs, robotics, and academic mentorship. It’s a space to discover curated educational resources, post and find events, and build a community where students can learn from and support each other. Moving from a CS50 project to a production-ready application was a steep learning curve. I spent countless hours diving into Flask, Jinja, and database documentation to ensure the site is secure against SQL injections and unauthorized access. Balancing feature development—like AJAX for real-time interaction, mobile responsiveness, and a custom dark/light mode theme system—while ensuring the site remains fast and secure, was the biggest challenge. I am most proud of creating a self-sustaining, alumni-driven ecosystem. This isn’t just a directory; it’s a platform where students can give back by contributing events they’ve discovered, effectively filling the guidance gap for those starting their STEM journey. I’ve successfully migrated it to a faster, more robust server infrastructure, implemented a secure registration flow, and built a fully functional social graph (followers/following).
STEMNet GREECE CAN YOU PLS STAR MY REPO AND GIMME STARS / I POORED A LOT OF EFFORT INTO IT Created by: Rosario Alexandros Morabito (prodevmod) . I built this as a CS50 final project that turned into a real world mission. PLS READ STEMNet was born out of a real struggle in Greece. Here, proper hands-on STEM education and local school clubs are hard to find, and getting your hands on basic electronics like an Arduino is a challenge you either rely on a single physical store in the whole country or buy online. But since parents often don’t trust internet shopping, young innovators get stuck. I wanted to fix this by building a cozy, peer to peer home where young Greek makers of the same age and passion can finally connect, share project feedback, and feel like they aren’t alone. Like I often times feel. Y develop it further The overwhelming amount of positive feedback I got from my previous shipping of the project and my friends who I cowardly showed it to because I was a bit scared they were going to make fun of me pushed me into expanding this with a React framework for the V1, but trust me, even more is coming. What’s Inside the Platform? The STEM Extra Vault: A handy resource library packed with everything students need to kickstart their independent journey into electronics and coding, making up for what traditional schools miss. Community Groups ( can also be used as School Clubs): Forum style discussion spaces where everyone can chat about their favorite topics. Students can even spin up their own groups to act as virtual versions of real world school clubs. Events & Future Webinars: A dedicated space tracking upcoming competitions, team meetups, and future online STEM teaching sessions that I plan to host once the user base grows. Self-Cleaning Notifications: A smart alert system that automatically wipes read notifications older than 30 days (with a cron job for FREE), keeping the interface clean so users never get overwhelmed by clutter. Built-in Safety & Sigma Profiles: BTS, the site keeps things secure with robust account verification thru session cookies and recapca, safe link-checking to keep malicious websites away thru nginx , customized user profiles with social and GitHub links, and easy account settings. I would realy want to see this project skyrocket! If you have any recomandations about how I can scale it or grow my userbase pls tell me!!!...
|
1793072946.3665419
|
1793159346.3665419
|
|
44617
|
GeorgeOS by @GeorgeSun | Stardance
|
GeorgeSun
|
2
|
6.0
|
26
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T15:47:01Z", "hours": 3.0, "multiplier": 6.72, "payout": 26, "blessing": "neutral", "text": "I made GeorgeOS, an operating system that comes with numerous app which focuses on customizability. Some of the features include a lock screen, desktop, window manager, multi-desktop manager, widgets, and sound effects. The apps include a calculator, photos, paint, weather, camera, mail, Github, Holy Moly, LinkedIn, Youtube, Instagram, System Breach, profile creator, and customization. The most challenging part of this project was the camera app as it had the most sophisticated features such as taking pictures and videos and being able to download them from the web browser. I am most proud of the themes as all of the themes look very nice. You can explore my project right now by clicking the try project button!", "repo": "https://github.com/Geofoods/GeorgeOS", "demo": "https://geofoods.github.io/GeorgeOS/"}, {"ship_num": 2, "ts": "2026-08-12T15:48:48Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made GeorgeOS, an operating system that comes with numerous app which focuses on customizability. Some of the features include a lock screen, desktop, window manager, multi-desktop manager, and sound effects. The apps include a calculator, photos, paint, weather, camera, mail, Github, Holy Moly, LinkedIn, Youtube, Instagram, System Breach, and customization. The most challenging part of this project was the camera app as it had the most sophisticated features such as taking pictures and videos and being able to download them from the web browser. I am most proud of the themes as all of the themes look very nice. You can explore my project right now by clicking the try project button!", "repo": "https://github.com/Geofoods/GeorgeOS", "demo": "https://geofoods.github.io/GeorgeOS/"}]...
|
[{"post_id": 54530, "ts": "202 [{"post_id": 54530, "ts": "2026-08-25T15:38:33Z", "hours": 3.3408, "text": "I added multiple more features for Web OS 2 such as Widgets, light/dark mode, and profiles so that each user can work independently!"}, {"post_id": 45823, "ts": "2026-08-12T15:30:45Z", "hours": 0.3028, "text": "I have finished my personal OS with the ability to drag apps on the taskbar and drag them onto the desktop as well with it also working by clicking the icons on the taskbar"}, {"post_id": 45803, "ts": "2026-08-12T14:51:28Z", "hours": 0.7181, "text": "I added more customization options such as being able to change the icon and text size and also adding an animated space background that includes moving starts and a fading background"}, {"post_id": 44711, "ts": "2026-08-10T17:29:59Z", "hours": 2.2147, "text": "This is my first Devlog of my personal OS GeorgeOS! It has apps which link to all of my socials as well as some useful apps such as calculator, weather, and camera. The mail app can be used to send emails directly through me through an automated system. The UI is also heavily inspired by MacOS which is my favorite UI design with the liquid glass"}]...
|
Title: GeorgeOS by @GeorgeSun | Stardance
Devlogs Title: GeorgeOS by @GeorgeSun | Stardance
Devlogs:
This is my first Devlog of my personal OS GeorgeOS! It has apps which link to all of my socials as well as some useful apps such as calculator, weather, and camera. The mail app can be used to send emails directly through me through an automated system. The UI is also heavily inspired by MacOS which is my favorite UI design with the liquid glass
I added more customization options such as being able to change the icon and text size and also adding an animated space background that includes moving starts and a fading background
I have finished my personal OS with the ability to drag apps on the taskbar and drag them onto the desktop as well with it also working by clicking the icons on the taskbar
I added multiple more features for Web OS 2 such as Widgets, light/dark mode, and profiles so that each user can work independently!
Ships:
I made GeorgeOS, an operating system that comes with numerous app which focuses on customizability. Some of the features include a lock screen, desktop, window manager, multi-desktop manager, and sound effects. The apps include a calculator, photos, paint, weather, camera, mail, Github, Holy Moly, LinkedIn, Youtube, Instagram, System Breach, and customization. The most challenging part of this project was the camera app as it had the most sophisticated features such as taking pictures and videos and being able to download them from the web browser. I am most proud of the themes as all of the themes look very nice. You can explore my project right now by clicking the try project button!
I made GeorgeOS, an operating system that comes with numerous app which focuses on customizability. Some of the features include a lock screen, desktop, window manager, multi-desktop manager, widgets, and sound effects. The apps include a calculator, photos, paint, weather, camera, mail, Github, Holy Moly, LinkedIn, Youtube, Instagram, System Breach, profile creator, and customization. The most challenging part of this project was the camera app as it had the most sophisticated features such as taking pictures and videos and being able to download them from the web browser. I am most proud of the themes as all of the themes look very nice. You can explore my project right now by clicking the try project button!...
|
1793087523.1364398
|
1793173923.1364398
|
|
44682
|
andOS by @clumsy261 | Stardance
|
clumsy261
|
2
|
22.47
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T21:30:25Z", "hours": 13.0, "multiplier": 2.39, "payout": 30, "blessing": "neutral", "text": "Here is the newest version of my webOS! https://clumsy261.github.io/andOS/ Among the new features from the first part there are: -a new notes app -a new code editor app (for custom user scripts) -an actual app store for user made apps -resizeable windows (made easy by just using resizeElement(card) in any custom script) -ping pong app (vibe coded but made to be a proof of concept) -secret easter egg add (check out what the andOS name actually means) This was a really nice experience, now I really understand most html, css and js concepts (not many courses offer that). Hopefully this will get some attention and users will start building actual apps. :D (come to think of it it’s just a fancy server for testing web code)", "repo": "https://github.com/clumsy261/andOS", "demo": "https://clumsy261.github.io/andOS/"}, {"ship_num": 2, "ts": "2026-08-12T11:39:40Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a custom webOS using the guide offered by stardance. It was really simple, thinking back on it. I added a template for future apps and made it more efficient with file sorting. I’m planning on adding an actual window creator app, where a user can write any code they want to compile into the OS as an actual app.", "repo": "https://github.com/clumsy261/andOS", "demo": "https://clumsy261.github.io/andOS/"}]...
|
[{"post_id": 57544, "ts": "202 [{"post_id": 57544, "ts": "2026-08-29T18:35:49Z", "hours": 0.4653, "text": "I’ve looked at some post-use apps made by some users and fixed some bugs: if the icon is invalid it’s replaced by a default “gears” app doesn’t allow blank titles anymore - they get renamed “App ” if left blank Now I’m debating wether or not to manually remove junk apps - test blobs made by some users just for testing the platform"}, {"post_id": 56201, "ts": "2026-08-27T21:07:27Z", "hours": 1.3964, "text": "I just wrote a decent README so, It’s finished!!! :D (for the 17th time) The app store isn’t very rich right now, but I plan on adding more apps if users request any"}, {"post_id": 54728, "ts": "2026-08-25T20:11:46Z", "hours": 2.5144, "text": "First app is up! :D Made a ping-pong game (mostly ai slop) … BUT I KNOW how it works, had to make the game pause when hidden and resume when the window gets clicked."}, {"post_id": 53813, "ts": "2026-08-24T14:48:35Z", "hours": 3.6983, "text": "The hard part is done. AndOS now has a code editor, “compiler” and publisher ~ and all bugs that I knew of are gone :D"}, {"post_id": 53095, "ts": "2026-08-23T15:06:54Z", "hours": 0.8214, "text": "He he hell yeah It’s done. A working demo for the submitting apps is done, now any user can actually create their own app inside my webos (for real this time) I’ll add some user-friendly documentation soon on the prebuilt functions and more."}, {"post_id": 53051, "ts": "2026-08-23T13:22:57Z", "hours": 1.2092, "text": "I have succesfully made a custom script for custom apps. Now an entire window can be opened on my page with an object like this. I only need to add two things, one local interface to actually submit the code from a user, and then a public app store."}, {"post_id": 49774, "ts": "2026-08-18T18:14:30Z", "hours": 1.2, "text": "Today was a good day, I finished the notes app earlier (not sure it was today) aaaand implemented a new feature I wanted for some time. Now every day my os has a new background, the nasa apod background! I also added an info window that includes the name and info about the image. I got the idea from windows back when I had to use it without a license and this was the default."}, {"post_id": 48882, "ts": "2026-08-17T13:30:52Z", "hours": 1.0886, "text": "Completed the notes app! New feature: Apps can now be resized properly, since the resize function returns an event-target that can be used in the custom app script."}, {"post_id": 47371, "ts": "2026-08-15T08:40:00Z", "hours": 0.7733, "text": "I’ve implemented two new functions!! The resizeElement initializez a div in the bottom right corner of the window. It acts as a handle to resize the window. It has no practical use I can think of, aside from user experience. And then there is the overlay function, I forgot to put this in from the original guide but now this allows each app to be put in front of the others when interacted with."}, {"post_id": 45708, "ts": "2026-08-12T11:35:01Z", "hours": 1.7156, "text": "It’s officially done! There are still features I’d like to add later on, but for now this is a functional webOS. You can check out the latest demo right here: https://clumsy261.github.io/andOS/"}, {"post_id": 44168, "ts": "2026-08-09T18:59:33Z", "hours": 2.3583, "text": "Finally have a good demo for the weather app!!"}, {"post_id": 43950, "ts": "2026-08-09T12:23:04Z", "hours": 0.6453, "text": "Officially made a user-friendly (kinda) platform to add apps, I will now go on to some actual apps and I’m done"}, {"post_id": 43857, "ts": "2026-08-09T09:23:12Z", "hours": 1.0436, "text": "Finally made the apps fully modular, any js script can be made by anyone, I have to make a platform now to upload such scripts"}, {"post_id": 43459, "ts": "2026-08-08T18:38:44Z", "hours": 1.5206, "text": "Soooo I’m like halfway thru the guide (the interesting part of it), finally got everything working, I just want to make it more modular (I’ll explain later)"}, {"post_id": 42890, "ts": "2026-08-07T20:58:56Z", "hours": 1.7061, "text": "Finally made the moving tab work, I have a great plan for this. I’m thinking of changing the background daily, and to put a “find out more about this image tab”, that’s basically the apod api"}]...
|
Title: andOS by @clumsy261 | Stardance
Devlogs:
F Title: andOS by @clumsy261 | Stardance
Devlogs:
Finally made the moving tab work, I have a great plan for this. I’m thinking of changing the background daily, and to put a “find out more about this image tab”, that’s basically the apod api
Soooo I’m like halfway thru the guide (the interesting part of it), finally got everything working, I just want to make it more modular (I’ll explain later)
Finally made the apps fully modular, any js script can be made by anyone, I have to make a platform now to upload such scripts
Officially made a user-friendly (kinda) platform to add apps, I will now go on to some actual apps and I’m done
Finally have a good demo for the weather app!!
It’s officially done! There are still features I’d like to add later on, but for now this is a functional webOS. You can check out the latest demo right here: https://clumsy261.github.io/andOS/
I’ve implemented two new functions!! The resizeElement initializez a div in the bottom right corner of the window. It acts as a handle to resize the window. It has no practical use I can think of, aside from user experience. And then there is the overlay function, I forgot to put this in from the original guide but now this allows each app to be put in front of the others when interacted with.
Completed the notes app! New feature: Apps can now be resized properly, since the resize function returns an event-target that can be used in the custom app script.
Today was a good day, I finished the notes app earlier (not sure it was today) aaaand implemented a new feature I wanted for some time. Now every day my os has a new background, the nasa apod background! I also added an info window that includes the name and info about the image. I got the idea from windows back when I had to use it without a license and this was the default.
I have succesfully made a custom script for custom apps. Now an entire window can be opened on my page with an object like this. I only need to add two things, one local interface to actually submit the code from a user, and then a public app store.
He he hell yeah It’s done. A working demo for the submitting apps is done, now any user can actually create their own app inside my webos (for real this time) I’ll add some user-friendly documentation soon on the prebuilt functions and more.
The hard part is done. AndOS now has a code editor, “compiler” and publisher ~ and all bugs that I knew of are gone :D
First app is up! :D Made a ping-pong game (mostly ai slop) … BUT I KNOW how it works, had to make the game pause when hidden and resume when the window gets clicked.
I just wrote a decent README so, It’s finished!!! :D (for the 17th time) The app store isn’t very rich right now, but I plan on adding more apps if users request any
I’ve looked at some post-use apps made by some users and fixed some bugs: if the icon is invalid it’s replaced by a default “gears” app doesn’t allow blank titles anymore - they get renamed “App ” if left blank Now I’m debating wether or not to manually remove junk apps - test blobs made by some users just for testing the platform
Ships:
I made a custom webOS using the guide offered by stardance. It was really simple, thinking back on it. I added a template for future apps and made it more efficient with file sorting. I’m planning on adding an actual window creator app, where a user can write any code they want to compile into the OS as an actual app.
Here is the newest version of my webOS! https://clumsy261.github.io/andOS/ Among the new features from the first part there are: -a new notes app -a new code editor app (for custom user scripts) -an actual app store for user made apps -resizeable windows (made easy by just using resizeElement(card) in any custom script) -ping pong app (vibe coded but made to be a proof of concept) -secret easter egg add (check out what the andOS name actually means) This was a really nice experience, now I really understand most html, css and js concepts (not many courses offer that). Hopefully this will get some attention and users will start building actual apps. :D (come to think of it it’s just a fancy server for testing web code)...
|
1793090867.4271574
|
1793177267.4271574
|
|
44689
|
Inventory Management System by @Vedant_Daga | Star Inventory Management System by @Vedant_Daga | Stardance...
|
Vedant_Daga
|
2
|
10.0
|
115
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T04:02:26Z", "hours": 3.0, "multiplier": 8.87, "payout": 30, "blessing": "neutral", "text": "Inventory Management System an electronics parts inventory that tracks how many of each part you own, how many are in projects, and how many you can actually use. try it: https://inventory-system-manager.vercel.app sign up with any username and password. what it does projects hold parts. tear one down and say what happened to each: returned, soldered in, or broken. only the last two leave your inventory shopping list builds itself from what your builds asked for and couldn’t get every quantity change is logged. 10k and 10KΩ get caught as one resistor and merged fixed since last ship search matches every word, so “LCD display” works filter by tag, package and value without typing remove button sits inside the project table no more reloading to see new shopping list items shopping list exports to csv or text a real front page phone layout: buttons stack full width, tables scroll opt-in public roster test suite is back, 228 green how to test it sign up, parts > import, paste 10k resistor, 180, 10k, through-hole, passive new project, ask for more than you own, check the bench for the shortfall tear down, mark some soldered, submit, then reopen and watch it come back add 10K ohm and watch duplicates catch it", "repo": "https://github.com/DagaVedant/Inventory-Management-System", "demo": "https://inventory-system-manager.vercel.app/accounts/login/?next=/"}, {"ship_num": 2, "ts": "2026-08-24T15:08:02Z", "hours": 7.0, "multiplier": 12.82, "payout": 85, "blessing": "neutral", "text": "Inventory Management System its a electronics parts inventory that tracks how many of each part you own, how many are in projects, and how many you can actually use for a new project. try it: https://web-production-d6073.up.railway.app demo login: demo / stardancedemo what it is almost all of the other inventory tool assumes that once a part is used, it never comes back, which work for warehouses, not smaller projects start a project, it holds parts. tear it down, say what happened to each one: returned, soldered in, or broken only soldered and broken actually leave your inventory shopping list builds itself out of what your live builds asked for and couldn’t get every quantity change is logged with the balance it produced and the project that caused it 10k and 10KΩ are one resistor to me and two rows to a database. it catches those and merges them what was hard picking what to store. i store owned only, and compute held and available, so they can’t drift apart allocation used to refuse you if you were short. that meant a project could never be short, which meant the shopping list had nothing to build from. had to let it take what exists and record the rest making teardown undoable needed a whole extra field, because returned parts come from two different places and mixing them makes it unreversible fuzzy matching without being too fuzzy. 4.7k and 47k are different resistors so you can’t just strip punctuation tests found 4 bugs i thought were fine. 2 of them were failing silently what im proud of the ledger. every number on the site has a receipt, and there’s a command that recounts and tells you if it’s lying teardown being reversible. it was a one way door and that was scary to use how to test it log in as demo, go to bench open weather station , hit tear down, mark a few soldered and a few broken, submit watch owned drop, then hit reopen and watch it all come back bench again for the shopping list. 12 parts short across live builds click any part for its history table. every row says what changed and what it left behind parts > duplicates . 10k / 10KΩ and 470uF / 470 µF are sitting there as separate rows. merge one and watch the quantities add up or add a part called 10K ohm yourself and watch it get caught immediately", "repo": "https://github.com/DagaVedant/Inventory-Management-System", "demo": "https://inventory-system-manager.vercel.app/accounts/login/?next=/"}]...
|
[{"post_id": 64017, "ts": "202 [{"post_id": 64017, "ts": "2026-09-08T03:57:26Z", "hours": 1.7586, "text": "Devlog 4: Adding all the reviewer feedback went through every review from the last ship and fixed what was asked for. search : “LCD display” found nothing because the whole phrase had to match one field. now every word has to match somewhere. filters : tag, package and value dropdowns next to the search box, so you can cross-check values without typing. remove button : it sat outside the project table. it is inside the row now stale pages : you had to reload to see new shopping list items. that was the back button showing a cached page. fixed. shopping list export : download it as csv or plain text. front page : the root url used to bounce you to the login form. now it explains the idea and shows the bench. phones : below 600px the button rows stack full width, forms go one field per line, and wide tables scroll in their own box. roster : opt-in from settings. your bench goes on a public list with its part count, busiest tags and biggest stacks."}, {"post_id": 55213, "ts": "2026-08-26T19:30:38Z", "hours": 1.6142, "text": "Devlog 3 bug fixes getting all the ready to reship (reviewers pointed out a few things) not that many features will add tons more after feedback from this ship"}, {"post_id": 51947, "ts": "2026-08-21T22:01:35Z", "hours": 4.4806, "text": "ANYONE REVIEWING OR RATING, THE RAILWAY URL IS CLOSED AND I SWITCHED TO VERCEL. GO TO THE GITHUB OR THE PROJECT DETAILS Devlog 2 - Inventory Management System what changed the app tracks WHY a number moved now, not just what it is add stock, recount, teardown loss: all logged with a running balance a part’s page reads like a bank statement teardown can be undone (it was permanent before, on a 2 click button) shopping list that isnt tied to a project, for “im running low on 10ks” duplicate detection + merge. 10k, 10 K and 10kΩ are one resistor to a human and 3 rows to a database tags actually do smth now: click to filter, autocomplete, rename everywhere sortable columns, bench dashboard, paste-a-list import, rate limiting, backups bugs (the fun part save meeeeeeeee 🙏 ) making a part skipped the ledger completely. worked fine cuz the views covered it, which is how that survives until someone adds a 5th path deliveries read a stale number and left parts on the shopping list AFTER they arrived. silent, no error, nothing a literal backspace char got into a regex from shell escaping so it could never match. found it cuz 10kohms refused to fold into 10k named a flag --stdout and django remapped its own stdout kwarg onto it. backups looked fine and wrote to nowhere"}, {"post_id": 42237, "ts": "2026-08-06T21:06:01Z", "hours": 2.1522, "text": "Devlog 1 - Inventory Management System basically all of the sensors i own (A LOTTTTT) all live in one giant bin (ill send a pic of it in the next devlog trust). so recently, my dad fried me because i bought the same temperature sensor i bought like 3 weeks ago or smth (DHT22 for anyone intrested). basically what im building is a web app that acts like a inventory system for all my sensors. the thing that makes this diff from a spreadsheet or google docs is that this is SUPPOSED to be able to track ur parts are in use, soldered, broken, or available (not even close to there yet) the main reason i chose that type of system is because when i tried using a spreadsheet (ik, 1900s) it worked until i made more than 2 projects. with one project it works perfectly, but i have multiple projects at a time, each either on a perfboard or soldered down. and then some of them smoke, burn out, or even are faulty. the main thing about this app is that its going to be able to store what parts were used in ur project, and when u say u disassembled it, it will automatically move those parts back based on what you said — soldered, broken, reuseable . the empty app right now the app is literally empty. its just the Django admin page. i just spent some time getting everything linked like a new repo, railway app, postgres database, etc. i wanted to deploy everything rn rather than later cuz i dont want it to be a pain once i get to shipping this. it took like 2ish hours in total so not that bad, and basically none of it was using Django other than the admin page. the main problem i faced was ModuleNotFoundError: No module named '________' (shh i left it blank). i saved a new start command and a predeploy command so it works better. next four models, and figuring out the right formula to make sure that ur parts dont randomly start increasing — i tried creating a small POC algorithm and it went from having 2 DHT22’s to 5 DHT22’s after two fake projects."}]...
|
Title: Inventory Management System by @Vedant_Daga Title: Inventory Management System by @Vedant_Daga | Stardance
Devlogs:
Devlog 1 - Inventory Management System basically all of the sensors i own (A LOTTTTT) all live in one giant bin (ill send a pic of it in the next devlog trust). so recently, my dad fried me because i bought the same temperature sensor i bought like 3 weeks ago or smth (DHT22 for anyone intrested). basically what im building is a web app that acts like a inventory system for all my sensors. the thing that makes this diff from a spreadsheet or google docs is that this is SUPPOSED to be able to track ur parts are in use, soldered, broken, or available (not even close to there yet) the main reason i chose that type of system is because when i tried using a spreadsheet (ik, 1900s) it worked until i made more than 2 projects. with one project it works perfectly, but i have multiple projects at a time, each either on a perfboard or soldered down. and then some of them smoke, burn out, or even are faulty. the main thing about this app is that its going to be able to store what parts were used in ur project, and when u say u disassembled it, it will automatically move those parts back based on what you said — soldered, broken, reuseable . the empty app right now the app is literally empty. its just the Django admin page. i just spent some time getting everything linked like a new repo, railway app, postgres database, etc. i wanted to deploy everything rn rather than later cuz i dont want it to be a pain once i get to shipping this. it took like 2ish hours in total so not that bad, and basically none of it was using Django other than the admin page. the main problem i faced was ModuleNotFoundError: No module named '________' (shh i left it blank). i saved a new start command and a predeploy command so it works better. next four models, and figuring out the right formula to make sure that ur parts dont randomly start increasing — i tried creating a small POC algorithm and it went from having 2 DHT22’s to 5 DHT22’s after two fake projects.
ANYONE REVIEWING OR RATING, THE RAILWAY URL IS CLOSED AND I SWITCHED TO VERCEL. GO TO THE GITHUB OR THE PROJECT DETAILS Devlog 2 - Inventory Management System what changed the app tracks WHY a number moved now, not just what it is add stock, recount, teardown loss: all logged with a running balance a part’s page reads like a bank statement teardown can be undone (it was permanent before, on a 2 click button) shopping list that isnt tied to a project, for “im running low on 10ks” duplicate detection + merge. 10k, 10 K and 10kΩ are one resistor to a human and 3 rows to a database tags actually do smth now: click to filter, autocomplete, rename everywhere sortable columns, bench dashboard, paste-a-list import, rate limiting, backups bugs (the fun part save meeeeeeeee 🙏 ) making a part skipped the ledger completely. worked fine cuz the views covered it, which is how that survives until someone adds a 5th path deliveries read a stale number and left parts on the shopping list AFTER they arrived. silent, no error, nothing a literal backspace char got into a regex from shell escaping so it could never match. found it cuz 10kohms refused to fold into 10k named a flag --stdout and django remapped its own stdout kwarg onto it. backups looked fine and wrote to nowhere
Devlog 3 bug fixes getting all the ready to reship (reviewers pointed out a few things) not that many features will add tons more after feedback from this ship
Devlog 4: Adding all the reviewer feedback went through every review from the last ship and fixed what was asked for. search : “LCD display” found nothing because the whole phrase had to match one field. now every word has to match somewhere. filters : tag, package and value dropdowns next to the search box, so you can cross-check values without typing. remove button : it sat outside the project table. it is inside the row now stale pages : you had to reload to see new shopping list items. that was the back button showing a cached page. fixed. shopping list export : download it as csv or plain text. front page : the root url used to bounce you to the login form. now it explains the idea and shows the bench. phones : below 600px the button rows stack full width, forms go one field per line, and wide tables scroll in their own box. roster : opt-in from settings. your bench goes on a public list with its part count, busiest tags and biggest stacks.
Ships:
Inventory Management System its a electronics parts inventory that tracks how many of each part you own, how many are in projects, and how many you can actually use for a new project. try it: https://web-production-d6073.up.railway.app demo login: demo / stardancedemo what it is almost all of the other inventory tool assumes that once a part is used, it never comes back, which work for warehouses, not smaller projects start a project, it holds parts. tear it down, say what happened to each one: returned, soldered in, or broken only soldered and broken actually leave your inventory shopping list builds itself out of what your live builds asked for and couldn’t get every quantity change is logged with the balance it produced and the project that caused it 10k and 10KΩ are one resistor to me and two rows to a database. it catches those and merges them what was hard picking what to store. i store owned only, and compute held and available, so they can’t drift apart allocation used to refuse you if you were short. that meant a project could never be short, which meant the shopping list had nothing to build from. had to let it take what exists and record the rest making teardown undoable needed a whole extra field, because returned parts come from two different places and mixing them makes it unreversible fuzzy matching without being too fuzzy. 4.7k and 47k are different resistors so you can’t just strip punctuation tests found 4 bugs i thought were fine. 2 of them were failing silently what im proud of the ledger. every number on the site has a receipt, and there’s a command that recounts and tells you if it’s lying teardown being reversible. it was a one way door and that was scary to use how to test it log in as demo, go to bench open weather station , hit tear down, mark a few soldered and a few broken, submit watch owned drop, then hit reopen and watch it all come back bench again for the shopping list. 12 parts short across live builds click any part for its history table. every row says what changed and what it left behind parts > duplicates . 10k / 10KΩ and 470uF / 470 µF are sitting there as separate rows. merge one and watch the quantities add up or add a part called 10K ohm yourself and watch it get caught immediately
Inventory Management System an electronics parts inventory that tracks how many of each part you own, how many are in projects, and how many you can actually use. try it: https://inventory-system-manager.vercel.app sign up with any username and password. what it does projects hold parts. tear one down and say what happened to each: returned, soldered in, or broken. only the last two leave your inventory shopping list builds itself from what your builds asked for and couldn’t get every quantity change is logged. 10k and 10KΩ get caught as one resistor and merged fixed since last ship search matches every word, so “LCD display” works filter by tag, package and value without typing remove button sits inside the project table no more reloading to see new shopping list items shopping list exports to csv or text a real front page phone layout: buttons stack full width, tables scroll opt-in public roster test suite is back, 228 green how to test it sign up, parts > import, paste 10k resistor, 180, 10k, through-hole, passive new project, ask for more than you own, check the bench for the shortfall tear down, mark some soldered, submit, then reopen and watch it come back add 10K ohm and watch duplicates catch it...
|
1793098546.1352954
|
1793184946.1352954
|
|
44701
|
StudyBuddy by @Vedant_Daga | Stardance
|
Vedant_Daga
|
2
|
76.0
|
1064
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T03:35:26Z", "hours": 23.0, "multiplier": 18.54, "payout": 436, "blessing": "neutral", "text": "StudyBuddy - https://trystudybuddy.vercel.app fyi before u try it: reading runs on a free model with a shared daily cap, and ship day is way more traffic than a normal day. please use the sample worksheets wherever u can (they’re the first thing on the upload page, one click) and upload at most one of ur own pdfs for the next day or two. if the homepage says the free reads are used up, the samples still work. what it does upload a worksheet pdf. it reads every question off the page, tags each one by topic, and works out the answer key. u mark which ones u got wrong and it brings them back on an FSRS schedule (the algo anki uses). across every test u upload it turns “i got 12 wrong” into “ur bad at ratios”. what changed since last time runs on openrouter’s free tier instead of my gpu. not a proof of concept anymore one worksheet is ~4 requests instead of ~42. pages are read in groups the site says when the day’s free reads are running low. clear about the trial: 3 worksheets free, then still free, u just add questions by hand or plug in ur own key. what was hard free models reason before they answer and bill that against the output limit which ends up causing an error, but its really hard to figure out the embedding-only shortcut for sorting looked fine and was wrong a third of the time so fixed it", "repo": "https://github.com/DagaVedant/StudyBuddy", "demo": "https://trystudybuddy.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-19T19:30:17Z", "hours": 53.0, "multiplier": 12.7, "payout": 628, "blessing": "neutral", "text": "StudyBuddy Turn the worksheets you have already done into a record of what you actually know. Try it: https://trystudybuddy.vercel.app Code: https://github.com/DagaVedant/StudyBuddy What I made Upload a worksheet you already finished, as a PDF or photos. A vision model pulls out every question, its options and its answer key. You mark what you got wrong. That is the only input it needs. It sorts questions into 87 topics across SAT and competition maths. Then it ranks your weak areas and schedules revision using FSRS, the algorithm behind Anki. It also writes practice questions on your weak topics and exports misses to Blooket. Built on my own past papers: 387 real questions from 22 worksheets. What was challenging The models can run in four places: my GPU, your API key, your own Ollama, or not at all. A student with a GPU should never send homework to my server. A student with nothing should still get something. Topic tagging needs an embedding model that serverless hosting cannot run. So the shortlist is a pgvector query on the server and the vector is computed anywhere, including in your browser under WebAssembly. Worst bug was three characters: I stored the global fetch on a class field, which passes the object as the receiver. Node allows it, browsers throw Illegal invocation. Every test passed and the only runtime that mattered was broken. What I am proud of It does not lie to you. Weak topics are ranked by a Wilson lower bound, not a raw percentage, so two unlucky answers cannot fake a weakness. Model-written questions are kept out of your accuracy, so the ranking cannot feed the questions it generates. Every model response is schema-checked before it reaches the database. Generated practice is sifted against thirteen specific failure modes. When my GPU is off, the upload screen says so instead of spinning. 1,459 unit tests, 84 end to end, 293 commits. How to test it Sign in with Google, or an email and password. Upload any worksheet you have already done. A past paper works well. Check what it read. Each question sits beside the page image it came from. Mark what you missed, then open the dashboard. The free trial reads three worksheets on my own GPU. If it is off, your upload queues and the app tells you. To skip the wait, settings takes your own API key or connects to Ollama on your machine. guys i wish this was markdown compatible but its not so sorry", "repo": "https://github.com/DagaVedant/StudyBuddy", "demo": "https://trystudybuddy.vercel.app/"}]...
|
[{"post_id": 66334, "ts": "202 [{"post_id": 66334, "ts": "2026-09-12T03:21:31Z", "hours": 3.7986, "text": "Devlog 24: StudyBuddy so a lot of the feedback said “cool but it needs ur gpu on”. that made it seem like a PoC, so now its running on the free tier of openrouter. making the free tier work one request per question was never going to fit a daily cap. extraction now sends up to 10 pages / 25 questions per call, sorting and answer key go 10 questions at a time. ~4 requests per worksheet instead of ~42 the homepage and upload page count the day’s calls. 80% says busy, 100% stops reading and points u at the samples. samples upload page leads with the three samples as one-click cards; ur own pdf is the second option and says how much of the shared allowance is used. removed phone photo uploads (highly innaccurate on the free tier of models i have)"}, {"post_id": 61499, "ts": "2026-09-04T13:23:50Z", "hours": 0.4864, "text": "Devlog 23 - StudyBuddy i just had some minutes left on this so im just making the devlog still waiting for my ship to be approved (been waiting a few days) no big changes at all (waiting for feedback)"}, {"post_id": 57722, "ts": "2026-08-29T23:49:06Z", "hours": 0.3544, "text": "Devlog 22 - StudyBuddy fixed more bugs and rewrote code by hand"}, {"post_id": 56688, "ts": "2026-08-28T15:28:49Z", "hours": 3.3164, "text": "Devlog 21 - StudyBuddy patched even more bugs rewrote tons of my code (ai to human) cleaned up old files (a lot of old features were removed and reupdated) just more QoL fixes"}, {"post_id": 55293, "ts": "2026-08-27T01:04:56Z", "hours": 0.7281, "text": "Devlog 20 - StudyBuddy more bug fixes continous reships (they keep saying its too AI generated even after i rebuilt the UI) started working on the API key integration (like almost there rn) tons of dead code removal and code clean up added support for firefox too (now it works on edge, firefox, chrome, and prolly a ton others i just havent really tested it)"}, {"post_id": 55212, "ts": "2026-08-26T19:29:14Z", "hours": 2.0147, "text": "Devlog 19 - StudyBuddy even more bug fixes so i pushed a change, and that somehow broke the entire pipeline so i patched it no real content just fixes going to add API key integration soon (follow to see it happen)"}, {"post_id": 54267, "ts": "2026-08-25T04:59:03Z", "hours": 1.3939, "text": "Devlog 18 - StudyBuddy lowk not a lot of content in this one but like 1000000 different bugs popped up and reviewers are pointing it out so thank you smmm ( @blowupthenoobs ur the goat) fixed the trials having no limit other fixes just check my commits"}, {"post_id": 53477, "ts": "2026-08-24T01:28:48Z", "hours": 6.445, "text": "Devlog 17 - StudyBuddy (ah im losing track of these devlogs uh my ship keeps getting rejected for look to AI, and ive literally rebuilt everything, removed all teh ai generated thing. (im gonna ship again rn) made a logo cuz i thought it would look cool added a Terms of Services page cuz its risky cuz people could upload worksheets they dont have access for an i could be fried so i made them agree to that cleaned up more code fixed a few more bugs"}, {"post_id": 51966, "ts": "2026-08-21T23:14:31Z", "hours": 0.5383, "text": "Devlog 16 - StudyBuddy added some sample worksheets so you can try it out added the borders back to the buttons because i accidently removed them before"}, {"post_id": 51893, "ts": "2026-08-21T19:51:51Z", "hours": 0.3522, "text": "Devlog 15 more cleaninggggggg cleaned up repo, removed more dead logic and stuff instead of a css wallpaper, i added a image of lined paper to really give that school/learning feel asked ai to help me get the ui to look kinda fresh and add the pencil style heading"}, {"post_id": 51715, "ts": "2026-08-21T15:23:46Z", "hours": 3.1414, "text": "Devlog 14 shipwrights rejected the project so im fixing their things decided to clean up the code, get rid of old functions, and i also cleaned up the UI because no one really needs the heading and then what it means, like i think you know that topics means topics and doesnt need a whole sentence after that. cleaned up the repo, got rid of ai generated code fixed a 500 error when uploading worksheets, cuz something happened and some linux kernel wasnt compaitble with the library i was using wrapped up my last few fixes lowk not a lot of new features, rather like fixes"}, {"post_id": 51288, "ts": "2026-08-20T20:55:12Z", "hours": 0.9239, "text": "Devlog 13 - StudyBuddy update the ui to make it look liek sticky notes and lined paper"}, {"post_id": 50557, "ts": "2026-08-19T19:22:57Z", "hours": 1.2472, "text": "ANYONE RATING THIS PROJECT - THE VIDEO ON THE SHIP IS OUTDATED, THERE IS ALSO ANOTHER FEW DEVLOGS SO CHECK THAT OUT BEFORE JUDGING BECAUSE IT GIVES MORE INFO ABOUT THE BUILDING AND WHY THE CHANGED A LOT SORRYYYY ALSO USE THE SAMPLE WORKSHEETS I ATTACHED OR EASILY PARSEABLE WORKSHEETS. TEMPORAILY IVE CLOSED THE API KEY VERSION AS MOST PEOPLE DONT HAVE THEM. COMPLEX WORKSHEETS ARE TO BE USED ONLY WITH LARGE LLM Devlog 12 - StudyBuddy got everything ready to ship turns out that ollama needed some permissions so fixed that and added it to readme for people to set up, and other stuff like that shipping it in 5 mins 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉"}, {"post_id": 49640, "ts": "2026-08-18T15:06:19Z", "hours": 3.8678, "text": "Devlog 11 - StudyBuddy this is a short one got the google sign in to work added email verification and forgot ur password thing cleaned up the overall UI made the topic tree standardized cleaned up some of the extraction issues added ollama integration for everyone added practice question generation, topic overview, etc tested everything fully the attached image is the app after a ton of testing *"}, {"post_id": 48576, "ts": "2026-08-17T00:58:42Z", "hours": 5.8406, "text": "Devlog 10 - StudyBuddy mostly the same bug wearing different clothes: a screen that exists, that u can get to, that quietly does less than it says tier C was sitting in settings doing nothing save an ollama address and the app resolves u to a browser executor. that executor had nowhere to go, so ur worksheet just sat there looking queued it claims the job now and reads each page against localhost:11434 , posting back through the same queue my gpu posts through has to run in the browser cuz a server cant reach ur localhost, so the tab stays open. checkpointed per page tho, closing it resumes instead of restarting the paper a mark u mis-tapped was permanent tap through 40 of these and ur going to hit the wrong one eventually that one tap feeds the FSRS schedule, the topic accuracy, the weakness ranking and the blooket export only way back was deleting the worksheet and uploading it again, which costs u a trial credit. so the fix for a mistap was paying for it two defences that were never on WORKER_ALLOWED_IPS was optional and empty meant no restriction empty is the state every deployment starts in, so the normal outcome was a defence thats off that nobody ever decided to turn off refused now. * still allows any address but somebody has to type it untagged worksheets looked identical to broken ones tier B cant auto-classify, the embedding model needs a native runtime the serverless host doesnt have so ur questions saved fine and were reviewable fine, they just had no topic and nothing said why. reads exactly like it silently failed every tier that can come back untagged says so now nothing told u when a worksheet finished u uploaded and then u guessed. sat on the status page or came back later and hoped in-app bell that needs zero setup, plus web push for a tab u closed also “Review these now” now reviews those questions. the word had drifted onto three screens meaning three different things dashboard was missing three of its panels, and the trend arrow was specified ages ago and never computed taxonomy had no front door and the subject panel only went one level deep. Math > Geometry > Triangles walks now pagination was capping at the fiftieth worksheet and saying nothing about it the AI setup prompt showed up after ur trial ran out, which is the one moment it cant help u grouped scripts/ by what it does to ur data. inspect/ reads, repair/ writes behind a guard, benchmark/ measures 1285 tests green. playwright hasnt run yet and app/ moved a lot this time, so thats next"}, {"post_id": 47159, "ts": "2026-08-14T20:52:31Z", "hours": 5.0856, "text": "Devlog 9 - StudyBuddy the merge tool could double up a question number renumbering the survivor of a duplicate pair used Math.min of just those two rows, blind to the rest of the paper merging a phantom #5 into a real #9 could hand the paper a second #5, the exact thing the tool exists to prevent zero tests on a function that deletes rows. five now, including the repro $15/hour was losing its sign, not just $5 the math-stripper runs from one $ to the next, so “earns $15/hour and $18/hour” reads the slash as a fraction and eats both signs. same with $40 = $25 + $15 on the = i wrote this down once as “one weird case.” it’s the whole unit-rate and equation category fix checks the char after the closing $ : a digit means it’s opening the next price, not real math figure crops didnt need a new pipeline, just reusing one filed as “never produced,” which reads like crop, store, backfill the verify screen already computes a crop window from the bbox over the stored page image. review got wired to the same math, every old worksheet gets it free the real work was the guards: zero-area, inverted, off-page, or no recorded page size all have to degrade to nothing rather than to the wrong crop a fence i built to be un-escapable, wasnt the comment says a new tag can’t be added without going through the escaping. page-seam work added two by typing them directly a page whose OCR contains the literal closing tag closes the fence early, and everything after reads as instructions instead of data tag list exists once now, every fence built from it every worksheets.status write was a bare UPDATE no guard on the current value, so a stale job retry could drag an already-reviewed worksheet back to failed one transitionWorksheet(from, to) now, every write through it preview deploys were migrating the prod database guard only checked VERCEL_ENV === 'production' , but previews fire on every push against one shared DATABASE_URL two finishing together were racing through the migration folder 9 tests could go quiet and nobody would know one e2e file, 12 tests serial in a single tab, everything past “verify” depending on a question a drag gesture created three tests earlier a drag regression silently skipped 9 unrelated tests instead of failing them api fixture, split the file, broke the drag on purpose to prove it. held the question list rendered all 114 cards for a screen that edits one at a time deferred a while back: virtualizing editable rows risks one unmounting mid-edit only one card can ever be expanded, so the risk surface is exactly one row virtualizes past 40 now, open row pinned into the rendered range wherever scrolling goes. typed into one at 60 questions, scrolled thousands of px away, still there, still focused, still holding the edit also profile save had devlog 4’s router.refresh() remount bug login rate limit skipped Auth.js’s own credentials endpoint ollama worker had no startup timeout and just hung worksheet text leaked into console logs on schema rejections review screen shipped every page’s OCR text on page-1 load admin console got merge, tree edit, queue, usage doc-count drift (third time), and a false-positive LaTeX check flagging real set notation as broken math"}, {"post_id": 46100, "ts": "2026-08-13T02:23:56Z", "hours": 3.2192, "text": "Devlog 8 - StudyBuddy im too lazy to have a full write up for this (watched spiderman tdy IT WAS REALLY GOOD) for each topic that a user gets wrong, a seperate model (gpt-oss:20b, sorry if i miswrote the model) gives a walkthrough of the topic also added missed questions to the csv export added a AI answer key system if the worksheet doesnt have one."}, {"post_id": 45521, "ts": "2026-08-12T02:04:02Z", "hours": 3.0014, "text": "Devlog 7 - StudyBuddy the drag box was broken in the real app. for months u upload a worksheet, u draw a box around question 1, it fills in. thats the whole manual editor, thats the whole free tier. and it didnt work. click through the app to get there and nothing responds. reload and its fine. four previous commits went looking for this. the test had a 24 line comment explaining why it was probably a test problem. it was not. elementFromPoint(100, 28) -> HTML elementsFromPoint(100, 28) -> [HTML] thats the browser saying nothing is at this pixel , for every pixel on the page. the cause was 8 view transition animations, 6 stuck running forever . one that never finishes sits in the top layer and covers everything. and its a pseudo element so it shows up in no ancestor walk and no element stack, which is why every previous investigation contradicted itself. bisected on clean builds: next flag react component result on on broken off on broken on off clean off off clean so its react’s <ViewTransition> , not next. three lines of css. the drag test used to fake the mouse with dispatched events, now it uses a real one, which is the only thing that proves anything. gemini has never completed a single request 4 providers in settings. one says “has a free tier worth starting on”. zero successful calls, ever. every nullable field is anyOf: [{type:'x'}, {type:'null'}] gemini doesnt understand anyOf , so a filter strips keywords it rejects the filter dropped anyOf and left {} behind, while leaving the field in required a required field with no type = rejected request. every time funny part: the allowlist already had nullable in it, gemini’s own word for the same idea. someone knew. nothing connected them. the landing page was lying about 3 of its 4 topics theres a comment above them saying “kept honest on purpose: these are real taxonomy names” . Ratio & proportion - not real Linear equations - not real Reading inference - not real Vocabulary in context - real so the one claim the page made about its own honesty was the false one lol. theres a test now instead of a comment. tests found 2 bugs i wasnt looking for new Date(\"sometime in 2010\") returns jan 1 2010, cuz v8 scrapes a year out of almost anything. and it parses as local midnight while everything next to it is UTC. on a 13th birthday thats the whole question one route answered 404 to someone with no session. the client sends u to sign in on a 401 and brings u back after, so a tab that sat open till the session expired just ate what u typed the rest a reload could cost u a 114 question paper. markup saves nothing till every question is marked, so its a local draft now / , /signin , /signup are static html now. the topbar called auth() from the root layout, which made all 39 routes render per request the 23mb embedding model was getting fetched inside a background task on every cold start, and failing silently one commit recorded 32 renames and none of the code . the git add failed and i’d redirected the error away so i never saw it"}, {"post_id": 44852, "ts": "2026-08-10T21:45:18Z", "hours": 1.3739, "text": "Devlog 6 - StudyBuddy u can throw everything u got wrong into blooket now button on the dashboard for the whole account, and one per worksheet if u only want that paper it gives u a file, u upload it to blooket, u get a set of exactly the questions u missed wrong means ever wrong, not currently wrong. if u got it wrong on paper and then right in review, its still in there. thats the one u actually want to drill and it wouldve been weird to leave out blooket hands u an .xlsx template so everyone calls this an xlsx export, but its uploader only accepts csv. took a while to work out also its importer just silently imports nothing if the file is slightly off. no error, no warning, zero questions. three separate ways to trip that picking a subject barely did anything theres a dropdown on upload for what subject the worksheet is. it offers things like “Algebra 1” only the first bit of that was ever used, so picking Algebra 1 searched all of high school maths. exactly the same as picking “all of high school maths” the one control u have over how ur questions get sorted, doing basically nothing long papers were quietly losing questions to a limit the topic tagger takes questions 100 at a time. fine except it grabbed 100 in no particular order and then removed the ones already done, so on a 114 question paper 14 never got looked at, and which 14 was down to whatever the database felt like that day worse on a second pass: if 100 were already tagged it handed back an empty list, which reads as “nothing left to do”, and the rest never got tagged at all two screens counting the same paper differently the worksheets page filters out page junk like “CONTINUE TO THE NEXT PAGE” before counting. the dashboard didnt so the same worksheet was 25 questions on one screen and 26 on the other, and nothing tells u which one is lying the chart was lying about time the accuracy chart draws a bar per week. it was only making bars for weeks u actually did something in so 12 bars looked like 12 weeks in a row but werent. practise in march and again in june and u see two bars side by side like it was steady every week is a bar now, empty ones included, and it says which weeks its showing scrolling changed my settings without me touching anything the page range and question count boxes were number inputs, and number inputs treat the scroll wheel as a way to change the value so scrolling down the upload page with ur cursor over one of them silently rewrote which pages get read found a pile of other accessibility stuff while i was in there: buttons a bit too small to reliably hit on a phone, cards that vanish in high contrast mode, and a “skip to content” link that didnt actually skip anything also asking to see an explanation u already had was using up ur hourly limit for generating new ones the topic picker was built in a way that made screen readers think the list had nothing in it button labels were half Title Case and half sentence case, sometimes on the same screen"}, {"post_id": 44789, "ts": "2026-08-10T20:01:20Z", "hours": 1.8522, "text": "Devlog 5 - StudyBuddy “accept the remaining 114” checked none of them that button fires one save per question, and on my test paper thats 114 of them at once nothing read the answers back, so a save that failed looked exactly like one that worked the tick stayed on, u moved to the next screen, and it was never stored deleting a question said “Saved” and then didnt delete it delete waits a few seconds so u can undo it. it dropped the question from the list first and threw away whatever came back from the server so if it failed u got told it saved, and the question showed up in ur study queue later like nothing happened also there was no undo button anywhere. it was just a slow delete $5 was being eaten maths sometimes comes wrapped in dollar signs so i strip them off. money also comes wrapped in dollar signs “Sam has $5 and Ana has $12” was being read as “Sam has 5 and Ana has 12” checked a real saved question and yep. paper says $5, database said 5 if my worker died, ur worksheet said “queued” forever the machine that reads the pages runs at my house. if it fell over mid job, nothing anywhere ever marked that job as failed it just sat there, and the free credit it charged u never came back the topic tagging could fail without failing it needs a bit of software thats not always there on the server. when it wasnt, it came back with “no matches” which is a completely normal answer. so the job finished, every question was untagged, ur weak areas page was empty, and nothing anywhere was an error one i was told to do and didnt had a note to cap the page number by how many pages the worksheet has except if u upload pages 10 to 15 of a pdf thats six pages numbered 10 to 15, so that check refuses every single one of them capped the two things separately instead also the screen asking u to check questions against the page never showed the page finishing a review session stopped saying u finished it the AI could print its own error onto ur status page, which sometimes meant quoting ur own worksheet back at u the upload checked the image size by asking the browser instead of opening the image"}, {"post_id": 44684, "ts": "2026-08-10T16:42:14Z", "hours": 2.2806, "text": "Devlog 4 - StudyBuddy no new features today. just went hunting for stuff that was quietly broken, and there was way more of it than i expected the sign-in page could send u to a different website if someone handed u a link like /signin?next=someothersite.com , u would log in and then land on their page immediately after typing ur password, which is about the worst possible moment for that to happen this one went first there was no limit on login attempts i had limits on signing up and on uploading. somehow not on the actual password box so u could sit there and guess forever getting blocked now looks identical to just getting the password wrong. telling someone “too many attempts” quietly confirms the account exists file storage was writing into the void if one setting went missing it silently saved ur page images somewhere that doesnt survive on the server uploads said they worked. returned a success. images just gone nothing errored anywhere, which is why it sat there so long now it refuses to start up at all instead of pretending everything is fine i almost broke my whole test suite fixing something unrelated locked down two internal-only routes with what seemed like the obvious check except my tests run against a production build, so that check wouldve locked the tests out too caught it before it shipped, then wrote a test explaining it so future me doesnt helpfully undo it added security headers and instantly caught myself put them in report-only mode first so nothing could actually break about 40 seconds later it flagged a script that my own analytics loads the strict version wouldve blocked it in prod. i absolutely wouldve shipped that one fix i deleted instead of shipping had a note to add another check to the duplicate-question detector actually tested it against real papers first, and it turns out it can never trigger. the answers on a maths paper are just “4” and “9” and stuff, way too short for it to match on wouldve quietly made things worse all tests green at the end of it. onto the next pile"}, {"post_id": 44340, "ts": "2026-08-10T01:14:54Z", "hours": 6.0992, "text": "Devlog 3 - StudyBuddy wrote a script that reads each papers own answer key out of the source pdf and diffs it against my database. so the paper grades me instead of me grading myself. those 14 sheets scored 1 of 14 the first time i pointed it at them. tonight theyre 14 of 14 . barely any of it was the model. one paper stored 8 of its 15 questions. the model had read all 15 the log said dropped 6 unreadable question(s) . a count. no reason. it said that for two days made it print which field rejected the question and it told me on the first run: choices.0.label: Too big: expected string to have <=8 characters answer labels are capped at 8 chars, but the cap runs before the function that shortens them. that function only exists cuz the model returns A. 60 instead of A so the cap was checked against exactly the thing the transform was written to fix. coordinate geometry paper, every option reads A. (-2, 3) , ten chars, binned a count with no reason cant tell u “model returned garbage” from “ur schema is stricter than the paper” and those have opposite fixes also 44 duplicate-answer flags, every one wrong: -2 and 2 both normalised to 2 lol. on a maths paper the sign IS the question."}, {"post_id": 43025, "ts": "2026-08-08T02:19:09Z", "hours": 0.3111, "text": "if any of you guys wanna try this out here is the link: https://trystudybuddy.vercel.app/ YOOOOO WE GOT OUR FIRST FEW USERS i just checked before sleeping and yo we have 14 worksheets in the processing queue right now i wonder how much we had before THANK YOU GUYS"}, {"post_id": 42970, "ts": "2026-08-07T23:33:19Z", "hours": 5.2603, "text": "Devlog 2 - StudyBuddy HERE IS THE LINK TO TRY IT ( https://trystudybuddy.vercel.app/ ) left a pile of worksheets extracting overnight cuz i was sick of testing every fix against the same two papers. woke up to 9 worksheets, 713 questions, 353 pages everything below only shipped after i swept it over all of that first. rule i have now, after two earlier “fixes” that read perfectly and were wrong on real data a question that shipped reading ?rac{44}{11} i tell the model to write plain text. it writes LaTeX anyway sometimes that fails loudly. \\sqrt isnt a valid JSON escape so the response explodes and i lose a page. thats fine?? at least i know the other half is the problem. \\f is a form feed and \\t is a tab, both totally valid , so \\frac{44}{11} parses perfectly and quietly becomes a form feed followed by rac{44}{11} i had an AMC8 question in my database reading ?rac{44}{11} and nothing anywhere reported a problem fix has to run before the first parse , not in the catch block, cuz the version that actually hurts u never throws it doubles the backslash on letter runs JSON would misread, but only the six that collide (b f n r t u) and only when the run spells a real command. otherwise a real line break stops being a line break, which is a fun way to make things worse questions torn in half by the page break extraction reads one page at a time and never sees the page before or after. so a question ending at the bottom of page 3 with its answer choices at the top of page 4 is never whole in either request . five of them on the AMC8 paper one fix folds the halves back together. the other is for the worse case where the extractor returned nothing at all for the second half, cuz a bare block of answer choices isnt a question so the model just drops it. theyre still sitting in the next pages text layer tho, u just have to go get them sorting questions within a page needed its own module cuz the bounding boxes lie . question 4 came back with a top of 1428 and question 5 with 1379, so pure geometry puts them backwards AMC8 went from 19 of 25 questions having their answer choices to 24 of 25 , zero false positives across 348 SHSAT pages stuff that broke a worksheet told me it had 26 questions when the paper has 25 . the extra one was the axis labels off a diagram, and the SHSAT ones had rows that just said CONTINUE TO THE NEXT PAGE. dropped 23 rows, all page furniture then immediately shipped a followup bug where the card read “Questions 25” next to “Unchecked 26” cuz i filtered one count and forgot the other one lol tried just asking the model to return a carried answer block as half a question. produced zero of them and started relabelling stem-only questions as free response, which hides the damage from every check i have. reverted the landing page every animation was gated behind prefers-reduced-motion , which sounds responsible until u find out some managed windows installs ship with animation effects off by default . so the page whose whole job is showing the product working was showing a static screenshot the hero panel gets dealt onto the page like a card now. needs a perspective on the parent or the rotations collapse into a shear and it just looks like a slide the forgetting curve draws itself left to right. stroke-dashoffset does not work here , pathLength is silently ignored under vector-effect: non-scaling-stroke so the dash tiles across the path instead of spanning it once. and i need non-scaling-stroke or the line renders 9x too thick . used a page-coloured shutter instead next things: that one AMC8 question needs reading off the page image since the text layer doesnt have it. and theres a cheaper reduced-motion compromise i wrote down but havent built."}, {"post_id": 42187, "ts": "2026-08-06T20:02:11Z", "hours": 13.8281, "text": "Devlog 1 - StudyBuddy so ive been doing SHSAT practice tests for a while and the thing that always got me is that after i mark one, i have like 20 wrong answers and no idea what to actually do with that info . like ok i got 12 questions wrong, but am i bad at geometry or did i just misread three questions? no clue. so id end up redoing entire sections i was already fine at. basically what im building is a web app where u upload a worksheet or a practice test (pdf or even just a photo of the page) and it reads every question off it, figures out what topic each one is, and then after u mark which ones u got wrong it schedules them to come back later using FSRS (same spaced repetition algo anki uses). the thing that makes it diff from just writing ur mistakes in a notebook is that it tracks topics across every test u ever upload . one test says nothing. five tests and it can actually tell u “ur bad at ratios” with a straight face. the AI runs on my own laptop i did not want to pay for an api. so the vision model that reads the pages runs on my own rtx 5080 . it sits at home and asks the deployed site for jobs, and it only ever dials outward so theres no port open on my home network. if my laptops off, uploads just queue instead of dying. the part i was most wrong about i picked the model i was using (qwen2.5vl:7b) literally because it was the first one i pulled . thats the whole reason. so i finally benchmarked it properly, 9 models on a real 58 page shsat paper, 114 questions . the one i already had won?? the 27b model is 4x bigger, scored 6 points WORSE , and took 183 seconds per page vs 7.8 . id been assuming for weeks that upgrading would fix my accuracy problems lol. also the grading was free which i was way too happy about. every question number 1-114 shows up exactly once on the paper so the test just grades itself , i never labelled a single page by hand. the bug that was actually my fault so when i looked at WHICH questions got missed they werent random, they came in chunks . one model dropped 17 questions in a row . turns out every single miss on every model was a page that came back completely empty . not a wrong answer. nothing. and that was my bug not the models . an empty reply gives 0 questions and no error, so my checker (which only looked for gaps in question numbering) saw nothing wrong and the upload said success while a whole page just quietly disappeared . fixed with one retry at a slightly higher temperature cuz a model that decided to output nothing will decide that again if u ask it the exact same way. stuff that broke i wrote a check to catch questions that got cut off mid sentence (flag anything not ending in punctuation) and it flagged 25 out of 114 questions on a CLEAN run . all wrong. turns out shsat questions end with like “by” or “through” all the time and the answer choices finish the sentence. fixed it and it changed literally zero outcomes so the rule was doing nothing the whole time. also added rate limiting and instantly locked myself out of my own test suite , which signs up way more than 5 times an hour from localhost. also deleted my entire email system . u need a domain u own to send emails (spf/dkim records) and a free .vercel.app subdomain cant do that. so instead of buying a domain i deleted 274 lines and made google sign in the front door. next things: tier B uploads dont get topic tags yet, and theres one test failing on purpose cuz FSRS says a question u just got wrong is due in 1 minute but i think it should be due immediately. gotta pick one."}]...
|
Title: StudyBuddy by @Vedant_Daga | Stardance
Dev Title: StudyBuddy by @Vedant_Daga | Stardance
Devlogs:
Devlog 1 - StudyBuddy so ive been doing SHSAT practice tests for a while and the thing that always got me is that after i mark one, i have like 20 wrong answers and no idea what to actually do with that info . like ok i got 12 questions wrong, but am i bad at geometry or did i just misread three questions? no clue. so id end up redoing entire sections i was already fine at. basically what im building is a web app where u upload a worksheet or a practice test (pdf or even just a photo of the page) and it reads every question off it, figures out what topic each one is, and then after u mark which ones u got wrong it schedules them to come back later using FSRS (same spaced repetition algo anki uses). the thing that makes it diff from just writing ur mistakes in a notebook is that it tracks topics across every test u ever upload . one test says nothing. five tests and it can actually tell u “ur bad at ratios” with a straight face. the AI runs on my own laptop i did not want to pay for an api. so the vision model that reads the pages runs on my own rtx 5080 . it sits at home and asks the deployed site for jobs, and it only ever dials outward so theres no port open on my home network. if my laptops off, uploads just queue instead of dying. the part i was most wrong about i picked the model i was using (qwen2.5vl:7b) literally because it was the first one i pulled . thats the whole reason. so i finally benchmarked it properly, 9 models on a real 58 page shsat paper, 114 questions . the one i already had won?? the 27b model is 4x bigger, scored 6 points WORSE , and took 183 seconds per page vs 7.8 . id been assuming for weeks that upgrading would fix my accuracy problems lol. also the grading was free which i was way too happy about. every question number 1-114 shows up exactly once on the paper so the test just grades itself , i never labelled a single page by hand. the bug that was actually my fault so when i looked at WHICH questions got missed they werent random, they came in chunks . one model dropped 17 questions in a row . turns out every single miss on every model was a page that came back completely empty . not a wrong answer. nothing. and that was my bug not the models . an empty reply gives 0 questions and no error, so my checker (which only looked for gaps in question numbering) saw nothing wrong and the upload said success while a whole page just quietly disappeared . fixed with one retry at a slightly higher temperature cuz a model that decided to output nothing will decide that again if u ask it the exact same way. stuff that broke i wrote a check to catch questions that got cut off mid sentence (flag anything not ending in punctuation) and it flagged 25 out of 114 questions on a CLEAN run . all wrong. turns out shsat questions end with like “by” or “through” all the time and the answer choices finish the sentence. fixed it and it changed literally zero outcomes so the rule was doing nothing the whole time. also added rate limiting and instantly locked myself out of my own test suite , which signs up way more than 5 times an hour from localhost. also deleted my entire email system . u need a domain u own to send emails (spf/dkim records) and a free .vercel.app subdomain cant do that. so instead of buying a domain i deleted 274 lines and made google sign in the front door. next things: tier B uploads dont get topic tags yet, and theres one test failing on purpose cuz FSRS says a question u just got wrong is due in 1 minute but i think it should be due immediately. gotta pick one.
Devlog 2 - StudyBuddy HERE IS THE LINK TO TRY IT ( https://trystudybuddy.vercel.app/ ) left a pile of worksheets extracting overnight cuz i was sick of testing every fix against the same two papers. woke up to 9 worksheets, 713 questions, 353 pages everything below only shipped after i swept it over all of that first. rule i have now, after two earlier “fixes” that read perfectly and were wrong on real data a question that shipped reading ?rac{44}{11} i tell the model to write plain text. it writes LaTeX anyway sometimes that fails loudly. \sqrt isnt a valid JSON escape so the response explodes and i lose a page. thats fine?? at least i know the other half is the problem. \f is a form feed and \t is a tab, both totally valid , so \frac{44}{11} parses perfectly and quietly becomes a form feed followed by rac{44}{11} i had an AMC8 question in my database reading ?rac{44}{11} and nothing anywhere reported a problem fix has to run before the first parse , not in the catch block, cuz the version that actually hurts u never throws it doubles the backslash on letter runs JSON would misread, but only the six that collide (b f n r t u) and only when the run spells a real command. otherwise a real line break stops being a line break, which is a fun way to make things worse questions torn in half by the page break extraction reads one page at a time and never sees the page before or after. so a question ending at the bottom of page 3 with its answer choices at the top of page 4 is never whole in either request . five of them on the AMC8 paper one fix folds the halves back together. the other is for the worse case where the extractor returned nothing at all for the second half, cuz a bare block of answer choices isnt a question so the model just drops it. theyre still sitting in the next pages text layer tho, u just have to go get them sorting questions within a page needed its own module cuz the bounding boxes lie . question 4 came back with a top of 1428 and question 5 with 1379, so pure geometry puts them backwards AMC8 went from 19 of 25 questions having their answer choices to 24 of 25 , zero false positives across 348 SHSAT pages stuff that broke a worksheet told me it had 26 questions when the paper has 25 . the extra one was the axis labels off a diagram, and the SHSAT ones had rows that just said CONTINUE TO THE NEXT PAGE. dropped 23 rows, all page furniture then immediately shipped a followup bug where the card read “Questions 25” next to “Unchecked 26” cuz i filtered one count and forgot the other one lol tried just asking the model to return a carried answer block as half a question. produced zero of them and started relabelling stem-only questions as free response, which hides the damage from every check i have. reverted the landing page every animation was gated behind prefers-reduced-motion , which sounds responsible until u find out some managed windows installs ship with animation effects off by default . so the page whose whole job is showing the product working was showing a static screenshot the hero panel gets dealt onto the page like a card now. needs a perspective on the parent or the rotations collapse into a shear and it just looks like a slide the forgetting curve draws itself left to right. stroke-dashoffset does not work here , pathLength is silently ignored under vector-effect: non-scaling-stroke so the dash tiles across the path instead of spanning it once. and i need non-scaling-stroke or the line renders 9x too thick . used a page-coloured shutter instead next things: that one AMC8 question needs reading off the page image since the text layer doesnt have it. and theres a cheaper reduced-motion compromise i wrote down but havent built.
if any of you guys wanna try this out here is the link: https://trystudybuddy.vercel.app/ YOOOOO WE GOT OUR FIRST FEW USERS i just checked before sleeping and yo we have 14 worksheets in the processing queue right now i wonder how much we had before THANK YOU GUYS
Devlog 3 - StudyBuddy wrote a script that reads each papers own answer key out of the source pdf and diffs it against my database. so the paper grades me instead of me grading myself. those 14 sheets scored 1 of 14 the first time i pointed it at them. tonight theyre 14 of 14 . barely any of it was the model. one paper stored 8 of its 15 questions. the model had read all 15 the log said dropped 6 unreadable question(s) . a count. no reason. it said that for two days made it print which field rejected the question and it told me on the first run: choices.0.label: Too big: expected string to have <=8 characters answer labels are capped at 8 chars, but the cap runs before the function that shortens them. that function only exists cuz the model returns A. 60 instead of A so the cap was checked against exactly the thing the transform was written to fix. coordinate geometry paper, every option reads A. (-2, 3) , ten chars, binned a count with no reason cant tell u “model returned garbage” from “ur schema is stricter than the paper” and those have opposite fixes also 44 duplicate-answer flags, every one wrong: -2 and 2 both normalised to 2 lol. on a maths paper the sign IS the question.
Devlog 4 - StudyBuddy no new features today. just went hunting for stuff that was quietly broken, and there was way more of it than i expected the sign-in page could send u to a different website if someone handed u a link like /signin?next=someothersite.com , u would log in and then land on their page immediately after typing ur password, which is about the worst possible moment for that to happen this one went first there was no limit on login attempts i had limits on signing up and on uploading. somehow not on the actual password box so u could sit there and guess forever getting blocked now looks identical to just getting the password wrong. telling someone “too many attempts” quietly confirms the account exists file storage was writing into the void if one setting went missing it silently saved ur page images somewhere that doesnt survive on the server uploads said they worked. returned a success. images just gone nothing errored anywhere, which is why it sat there so long now it refuses to start up at all instead of pretending everything is fine i almost broke my whole test suite fixing something unrelated locked down two internal-only routes with what seemed like the obvious check except my tests run against a production build, so that check wouldve locked the tests out too caught it before it shipped, then wrote a test explaining it so future me doesnt helpfully undo it added security headers and instantly caught myself put them in report-only mode first so nothing could actually break about 40 seconds later it flagged a script that my own analytics loads the strict version wouldve blocked it in prod. i absolutely wouldve shipped that one fix i deleted instead of shipping had a note to add another check to the duplicate-question detector actually tested it against real papers first, and it turns out it can never trigger. the answers on a maths paper are just “4” and “9” and stuff, way too short for it to match on wouldve quietly made things worse all tests green at the end of it. onto the next pile
Devlog 5 - StudyBuddy “accept the remaining 114” checked none of them that button fires one save per question, and on my test paper thats 114 of them at once nothing read the answers back, so a save that failed looked exactly like one that worked the tick stayed on, u moved to the next screen, and it was never stored deleting a question said “Saved” and then didnt delete it delete waits a few seconds so u can undo it. it dropped the question from the list first and threw away whatever came back from the server so if it failed u got told it saved, and the question showed up in ur study queue later like nothing happened also there was no undo button anywhere. it was just a slow delete $5 was being eaten maths sometimes comes wrapped in dollar signs so i strip them off. money also comes wrapped in dollar signs “Sam has $5 and Ana has $12” was being read as “Sam has 5 and Ana has 12” checked a real saved question and yep. paper says $5, database said 5 if my worker died, ur worksheet said “queued” forever the machine that reads the pages runs at my house. if it fell over mid job, nothing anywhere ever marked that job as failed it just sat there, and the free credit it charged u never came back the topic tagging could fail without failing it needs a bit of software thats not always there on the server. when it wasnt, it came back with “no matches” which is a completely normal answer. so the job finished, every question was untagged, ur weak areas page was empty, and nothing anywhere was an error one i was told to do and didnt had a note to cap the page number by how many pages the worksheet has except if u upload pages 10 to 15 of a pdf thats six pages numbered 10 to 15, so that check refuses every single one of them capped the two things separately instead also the screen asking u to check questions against the page never showed the page finishing a review session stopped saying u finished it the AI could print its own error onto ur status page, which sometimes meant quoting ur own worksheet back at u the upload checked the image size by asking the browser instead of opening the image
Devlog 6 - StudyBuddy u can throw everything u got wrong into blooket now button on the dashboard for the whole account, and one per worksheet if u only want that paper it gives u a file, u upload it to blooket, u get a set of exactly the questions u missed wrong means ever wrong, not currently wrong. if u got it wrong on paper and then right in review, its still in there. thats the one u actually want to drill and it wouldve been weird to leave out blooket hands u an .xlsx template so everyone calls this an xlsx export, but its uploader only accepts csv. took a while to work out also its importer just silently imports nothing if the file is slightly off. no error, no warning, zero questions. three separate ways to trip that picking a subject barely did anything theres a dropdown on upload for what subject the worksheet is. it offers things like “Algebra 1” only the first bit of that was ever used, so picking Algebra 1 searched all of high school maths. exactly the same as picking “all of high school maths” the one control u have over how ur questions get sorted, doing basically nothing long papers were quietly losing questions to a limit the topic tagger takes questions 100 at a time. fine except it grabbed 100 in no particular order and then removed the ones already done, so on a 114 question paper 14 never got looked at, and which 14 was down to whatever the database felt like that day worse on a second pass: if 100 were already tagged it handed back an empty list, which reads as “nothing left to do”, and the rest never got tagged at all two screens counting the same paper differently the worksheets page filters out page junk like “CONTINUE TO THE NEXT PAGE” before counting. the dashboard didnt so the same worksheet was 25 questions on one screen and 26 on the other, and nothing tells u which one is lying the chart was lying about time the accuracy chart draws a bar per week. it was only making bars for weeks u actually did something in so 12 bars looked like 12 weeks in a row but werent. practise in march and again in june and u see two bars side by side like it was steady every week is a bar now, empty ones included, and it says which weeks its showing scrolling changed my settings without me touching anything the page range and question count boxes were number inputs, and number inputs treat the scroll wheel as a way to change the value so scrolling down the upload page with ur cursor over one of them silently rewrote which pages get read found a pile of other accessibility stuff while i was in there: buttons a bit too small to reliably hit on a phone, cards that vanish in high contrast mode, and a “skip to content” link that didnt actually skip anything also asking to see an explanation u already had was using up ur hourly limit for generating new ones the topic picker was built in a way that made screen readers think the list had nothing in it button labels were half Title Case and half sentence case, sometimes on the same screen
Devlog 7 - StudyBuddy the drag box was broken in the real app. for months u upload a worksheet, u draw a box around question 1, it fills in. thats the whole manual editor, thats the whole free tier. and it didnt work. click through the app to get there and nothing responds. reload and its fine. four previous commits went looking for this. the test had a 24 line comment explaining why it was probably a test problem. it was not. elementFromPoint(100, 28) -> HTML elementsFromPoint(100, 28) -> [HTML] thats the browser saying nothing is at this pixel , for every pixel on the page. the cause was 8 view transition animations, 6 stuck running forever . one that never finishes sits in the top layer and covers everything. and its a pseudo element so it shows up in no ancestor walk and no element stack, which is why every previous investigation contradicted itself. bisected on clean builds: next flag react component result on on broken off on broken on off clean off off clean so its react’s <ViewTransition> , not next. three lines of css. the drag test used to fake the mouse with dispatched events, now it uses a real one, which is the only thing that proves anything. gemini has never completed a single request 4 providers in settings. one says “has a free tier worth starting on”. zero successful calls, ever. every nullable field is anyOf: [{type:'x'}, {type:'null'}] gemini doesnt understand anyOf , so a filter strips keywords it rejects the filter dropped anyOf and left {} behind, while leaving the field in required a required field with no type = rejected request. every time funny part: the allowlist already had nullable in it, gemini’s own word for the same idea. someone knew. nothing connected them. the landing page was lying about 3 of its 4 topics theres a comment above them saying “kept honest on purpose: these are real taxonomy names” . Ratio & proportion - not real Linear equations - not real Reading inference - not real Vocabulary in context - real so the one claim the page made about its own honesty was the false one lol. theres a test now instead of a comment. tests found 2 bugs i wasnt looking for new Date("sometime in 2010") returns jan 1 2010, cuz v8 scrapes a year out of almost anything. and it parses as local midnight while everything next to it is UTC. on a 13th birthday thats the whole question one route answered 404 to someone with no session. the client sends u to sign in on a 401 and brings u back after, so a tab that sat open till the session expired just ate what u typed the rest a reload could cost u a 114 question paper. markup saves nothing till every question is marked, so its a local draft now / , /signin , /signup are static html now. the topbar called auth() from the root layout, which made all 39 routes render per request the 23mb embedding model was getting fetched inside a background task on every cold start, and failing silently one commit recorded 32 renames and none of the code . the git add failed and i’d redirected the error away so i never saw it
Devlog 8 - StudyBuddy im too lazy to have a full write up for this (watched spiderman tdy IT WAS REALLY GOOD) for each topic that a user gets wrong, a seperate model (gpt-oss:20b, sorry if i miswrote the model) gives a walkthrough of the topic also added missed questions to the csv export added a AI answer key system if the worksheet doesnt have one.
Devlog 9 - StudyBuddy the merge tool could double up a question number renumbering the survivor of a duplicate pair used Math.min of just those two rows, blind to the rest of the paper merging a phantom #5 into a real #9 could hand the paper a second #5, the exact thing the tool exists to prevent zero tests on a function that deletes rows. five now, including the repro $15/hour was losing its sign, not just $5 the math-stripper runs from one $ to the next, so “earns $15/hour and $18/hour” reads the slash as a fraction and eats both signs. same with $40 = $25 + $15 on the = i wrote this down once as “one weird case.” it’s the whole unit-rate and equation category fix checks the char after the closing $ : a digit means it’s opening the next price, not real math figure crops didnt need a new pipeline, just reusing one filed as “never produced,” which reads like crop, store, backfill the verify screen already computes a crop window from the bbox over the stored page image. review got wired to the same math, every old worksheet gets it free the real work was the guards: zero-area, inverted, off-page, or no recorded page size all have to degrade to nothing rather than to the wrong crop a fence i built to be un-escapable, wasnt the comment says a new tag can’t be added without going through the escaping. page-seam work added two by typing them directly a page whose OCR contains the literal closing tag closes the fence early, and everything after reads as instructions instead of data tag list exists once now, every fence built from it every worksheets.status write was a bare UPDATE no guard on the current value, so a stale job retry could drag an already-reviewed worksheet back to failed one transitionWorksheet(from, to) now, every write through it preview deploys were migrating the prod database guard only checked VERCEL_ENV === 'production' , but previews fire on every push against one shared DATABASE_URL two finishing together were racing through the migration folder 9 tests could go quiet and nobody would know one e2e file, 12 tests serial in a single tab, everything past “verify” depending on a question a drag gesture created three tests earlier a drag regression silently skipped 9 unrelated tests instead of failing them api fixture, split the file, broke the drag on purpose to prove it. held the question list rendered all 114 cards for a screen that edits one at a time deferred a while back: virtualizing editable rows risks one unmounting mid-edit only one card can ever be expanded, so the risk surface is exactly one row virtualizes past 40 now, open row pinned into the rendered range wherever scrolling goes. typed into one at 60 questions, scrolled thousands of px away, still there, still focused, still holding the edit also profile save had devlog 4’s router.refresh() remount bug login rate limit skipped Auth.js’s own credentials endpoint ollama worker had no startup timeout and just hung worksheet text leaked into console logs on schema rejections review screen shipped every page’s OCR text on page-1 load admin console got merge, tree edit, queue, usage doc-count drift (third time), and a false-positive LaTeX check flagging real set notation as broken math
Devlog 10 - StudyBuddy mostly the same bug wearing different clothes: a screen that exists, that u can get to, that quietly does less than it says tier C was sitting in settings doing nothing save an ollama address and the app resolves u to a browser executor. that executor had nowhere to go, so ur worksheet just sat there looking queued it claims the job now and reads each page against localhost:11434 , posting back through the same queue my gpu posts through has to run in the browser cuz a server cant reach ur localhost, so the tab stays open. checkpointed per page tho, closing it resumes instead of restarting the paper a mark u mis-tapped was permanent tap through 40 of these and ur going to hit the wrong one eventually that one tap feeds the FSRS schedule, the topic accuracy, the weakness ranking and the blooket export only way back was deleting the worksheet and uploading it again, which costs u a trial credit. so the fix for a mistap was paying for it two defences that were never on WORKER_ALLOWED_IPS was optional and empty meant no restriction empty is the state every deployment starts in, so the normal outcome was a defence thats off that nobody ever decided to turn off refused now. * still allows any address but somebody has to type it untagged worksheets looked identical to broken ones tier B cant auto-classify, the embedding model needs a native runtime the serverless host doesnt have so ur questions saved fine and were reviewable fine, they just had no topic and nothing said why. reads exactly like it silently failed every tier that can come back untagged says so now nothing told u when a worksheet finished u uploaded and then u guessed. sat on the status page or came back later and hoped in-app bell that needs zero setup, plus web push for a tab u closed also “Review these now” now reviews those questions. the word had drifted onto three screens meaning three different things dashboard was missing three of its panels, and the trend arrow was specified ages ago and never computed taxonomy had no front door and the subject panel only went one level deep. Math > Geometry > Triangles walks now pagination was capping at the fiftieth worksheet and saying nothing about it the AI setup prompt showed up after ur trial ran out, which is the one moment it cant help u grouped scripts/ by what it does to ur data. inspect/ reads, repair/ writes behind a guard, benchmark/ measures 1285 tests green. playwright hasnt run yet and app/ moved a lot this time, so thats next
Devlog 11 - StudyBuddy this is a short one got the google sign in to work added email verification and forgot ur password thing cleaned up the overall UI made the topic tree standardized cleaned up some of the extraction issues added ollama integration for everyone added practice question generation, topic overview, etc tested everything fully the attached image is the app after a ton of testing *
ANYONE RATING THIS PROJECT - THE VIDEO ON THE SHIP IS OUTDATED, THERE IS ALSO ANOTHER FEW DEVLOGS SO CHECK THAT OUT BEFORE JUDGING BECAUSE IT GIVES MORE INFO ABOUT THE BUILDING AND WHY THE CHANGED A LOT SORRYYYY ALSO USE THE SAMPLE WORKSHEETS I ATTACHED OR EASILY PARSEABLE WORKSHEETS. TEMPORAILY IVE CLOSED THE API KEY VERSION AS MOST PEOPLE DONT HAVE THEM. COMPLEX WORKSHEETS ARE TO BE USED ONLY WITH LARGE LLM Devlog 12 - StudyBuddy got everything ready to ship turns out that ollama needed some permissions so fixed that and added it to readme for people to set up, and other stuff like that shipping it in 5 mins 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉
Devlog 13 - StudyBuddy update the ui to make it look liek sticky notes and lined paper
Devlog 14 shipwrights rejected the project so im fixing their things decided to clean up the code, get rid of old functions, and i also cleaned up the UI because no one really needs the heading and then what it means, like i think you know that topics means topics and doesnt need a whole sentence after that. cleaned up the repo, got rid of ai generated code fixed a 500 error when uploading worksheets, cuz something happened and some linux kernel wasnt compaitble with the library i was using wrapped up my last few fixes lowk not a lot of new features, rather like fixes
Devlog 15 more cleaninggggggg cleaned up repo, removed more dead logic and stuff instead of a css wallpaper, i added a image of lined paper to really give that school/learning feel asked ai to help me get the ui to look kinda fresh and add the pencil style heading
Devlog 16 - StudyBuddy added some sample worksheets so you can try it out added the borders back to the buttons because i accidently removed them before
Devlog 17 - StudyBuddy (ah im losing track of these devlogs uh my ship keeps getting rejected for look to AI, and ive literally rebuilt everything, removed all teh ai generated thing. (im gonna ship again rn) made a logo cuz i thought it would look cool added a Terms of Services page cuz its risky cuz people could upload worksheets they dont have access for an i could be fried so i made them agree to that cleaned up more code fixed a few more bugs
Devlog 18 - StudyBuddy lowk not a lot of content in this one but like 1000000 different bugs popped up and reviewers are pointing it out so thank you smmm ( @blowupthenoobs ur the goat) fixed the trials having no limit other fixes just check my commits
Devlog 19 - StudyBuddy even more bug fixes so i pushed a change, and that somehow broke the entire pipeline so i patched it no real content just fixes going to add API key integration soon (follow to see it happen)
Devlog 20 - StudyBuddy more bug fixes continous reships (they keep saying its too AI generated even after i rebuilt the UI) started working on the API key integration (like almost there rn) tons of dead code removal and code clean up added support for firefox too (now it works on edge, firefox, chrome, and prolly a ton others i just havent really tested it)
Devlog 21 - StudyBuddy patched even more bugs rewrote tons of my code (ai to human) cleaned up old files (a lot of old features were removed and reupdated) just more QoL fixes
Devlog 22 - StudyBuddy fixed more bugs and rewrote code by hand
Devlog 23 - StudyBuddy i just had some minutes left on this so im just making the devlog still waiting for my ship to be approved (been waiting a few days) no big changes at all (waiting for feedback)
Devlog 24: StudyBuddy so a lot of the feedback said “cool but it needs ur gpu on”. that made it seem like a PoC, so now its running on the free tier of openrouter. making the free tier work one request per question was never going to fit a daily cap. extraction now sends up to 10 pages / 25 questions per call, sorting and answer key go 10 questions at a time. ~4 requests per worksheet instead of ~42 the homepage and upload page count the day’s calls. 80% says busy, 100% stops reading and points u at the samples. samples upload page leads with the three samples as one-click cards; ur own pdf is the second option and says how much of the shared allowance is used. removed phone photo uploads (highly innaccurate on the free tier of models i have)
Ships:
StudyBuddy Turn the worksheets you have already done into a record of what you actually know. Try it: https://trystudybuddy.vercel.app Code: https://github.com/DagaVedant/StudyBuddy What I made Upload a worksheet you already finished, as a PDF or photos. A vision model pulls out every question, its options and its answer key. You mark what you got wrong. That is the only input it needs. It sorts questions into 87 topics across SAT and competition maths. Then it ranks your weak areas and schedules revision using FSRS, the algorithm behind Anki. It also writes practice questions on your weak topics and exports misses to Blooket. Built on my own past papers: 387 real questions from 22 worksheets. What was challenging The models can run in four places: my GPU, your API key, your own Ollama, or not at all. A student with a GPU should never send homework to my server. A student with nothing should still get something. Topic tagging needs an embedding model that serverless hosting cannot run. So the shortlist is a pgvector query on the server and the vector is computed anywhere, including in your browser under WebAssembly. Worst bug was three characters: I stored the global fetch on a class field, which passes the object as the receiver. Node allows it, browsers throw Illegal invocation. Every test passed and the only runtime that mattered was broken. What I am proud of It does not lie to you. Weak topics are ranked by a Wilson lower bound, not a raw percentage, so two unlucky answers cannot fake a weakness. Model-written questions are kept out of your accuracy, so the ranking cannot feed the questions it generates. Every model response is schema-checked before it reaches the database. Generated practice is sifted against thirteen specific failure modes. When my GPU is off, the upload screen says so instead of spinning. 1,459 unit tests, 84 end to end, 293 commits. How to test it Sign in with Google, or an email and password. Upload any worksheet you have already done. A past paper works well. Check what it read. Each question sits beside the page image it came from. Mark what you missed, then open the dashboard. The free trial reads three worksheets on my own GPU. If it is off, your upload queues and the app tells you. To skip the wait, settings takes your own API key or connects to Ollama on your machine. guys i wish this was markdown compatible but its not so sorry
StudyBuddy - https://trystudybuddy.vercel.app fyi before u try it: reading runs on a free model with a shared daily cap, and ship day is way more traffic than a normal day. please use the sample worksheets wherever u can (they’re the first thing on the upload page, one click) and upload at most one of ur own pdfs for the next day or two. if the homepage says the free reads are used up, the samples still work. what it does upload a worksheet pdf. it reads every question off the page, tags each one by topic, and works out the answer key. u mark which ones u got wrong and it brings them back on an FSRS schedule (the algo anki uses). across every test u upload it turns “i got 12 wrong” into “ur bad at ratios”. what changed since last time runs on openrouter’s free tier instead of my gpu. not a proof of concept anymore one worksheet is ~4 requests instead of ~42. pages are read in groups the site says when the day’s free reads are running low. clear about the trial: 3 worksheets free, then still free, u just add questions by hand or plug in ur own key. what was hard free models reason before they answer and bill that against the output limit which ends up causing an error, but its really hard to figure out the embedding-only shortcut for sorting looked fine and was wrong a third of the time so fixed it...
|
1793054929.91747
|
1793141329.91747
|
|
44844
|
PanOS by @pancakse | Stardance
|
pancakse
|
2
|
4.0
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-10T03:07:21Z", "hours": 2.0, "multiplier": 2.67, "payout": 6, "blessing": "neutral", "text": "I’ve added a terminal, notepad, apps icons, apps show on the taskbar and a recycle bin!", "repo": "https://github.com/ItzPancakse/PanOS", "demo": "https://itzpancakse.github.io/PanOS/"}, {"ship_num": 2, "ts": "2026-08-08T07:41:55Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own webos themed after windows 9X. The javascript always sucks. Im proud of the fact i made a calculator app", "repo": "https://github.com/ItzPancakse/PanOS", "demo": "https://itzpancakse.github.io/PanOS/"}]...
|
[{"post_id": 44369, "ts": "202 [{"post_id": 44369, "ts": "2026-08-10T02:38:45Z", "hours": 0.3761, "text": "I added a recycle bin app and notepad"}, {"post_id": 44338, "ts": "2026-08-10T01:09:50Z", "hours": 1.9783, "text": "So ive made a literal terminal app (its kinda basic) but it works we have also added app icons!"}, {"post_id": 43103, "ts": "2026-08-08T05:57:15Z", "hours": 0.4744, "text": "I added a contacts app!"}, {"post_id": 43088, "ts": "2026-08-08T05:18:57Z", "hours": 0.8769, "text": "We added a calculator app and it works! We have also added a taskbar and start menu!"}, {"post_id": 42473, "ts": "2026-08-07T07:08:33Z", "hours": 0.5828, "text": "I got a dragable window and a about me"}]...
|
Title: PanOS by @pancakse | Stardance
Devlogs:
I Title: PanOS by @pancakse | Stardance
Devlogs:
I got a dragable window and a about me
We added a calculator app and it works! We have also added a taskbar and start menu!
I added a contacts app!
So ive made a literal terminal app (its kinda basic) but it works we have also added app icons!
I added a recycle bin app and notepad
Ships:
I made my own webos themed after windows 9X. The javascript always sucks. Im proud of the fact i made a calculator app
I’ve added a terminal, notepad, apps icons, apps show on the taskbar and a recycle bin!...
|
1792986838.34412
|
1793073238.34412
|
|
44874
|
About Me by @AkshatBansal | Stardance
|
|
2
|
1.51
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T06:38:55Z", "hours": 1.0, "multiplier": 1.16, "payout": 1, "blessing": "neutral", "text": "its not showing approved on my account pls check", "repo": "https://github.com/akshatbansaltech/about-me", "demo": "https://akshatbansaltech.github.io/about-me/"}, {"ship_num": 2, "ts": "2026-08-07T13:18:47Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made this website, quite a simple one actually. its just basic html + css and my personal design.", "repo": "https://github.com/akshatbansaltech/about-me", "demo": "https://akshatbansaltech.github.io/about-me/"}]...
|
[{"post_id": 57915, "ts": "202 [{"post_id": 57915, "ts": "2026-08-30T07:48:28Z", "hours": 0.5061, "text": "accc"}, {"post_id": 43121, "ts": "2026-08-08T06:37:58Z", "hours": 0.7075, "text": "workin quite good"}, {"post_id": 42517, "ts": "2026-08-07T09:57:41Z", "hours": 0.2589, "text": "Look good till now!"}]...
|
Title: About Me by @AkshatBansal | Stardance
Devl Title: About Me by @AkshatBansal | Stardance
Devlogs:
Look good till now!
workin quite good
accc
Ships:
I made this website, quite a simple one actually. its just basic html + css and my personal design.
its not showing approved on my account pls check...
|
1792986977.9312668
|
1793073377.9312668
|
|
45017
|
CYBER_OS by @Judith | Stardance
|
Judith
|
2
|
9.0
|
8
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-12T16:47:06Z", "hours": 1.0, "multiplier": 5.98, "payout": 8, "blessing": "neutral", "text": "Change background/wallpaper Change cursor color Added new app: browser", "repo": "https://github.com/zvythrox67/WebOS", "demo": "https://zvythrox67.github.io/WebOS/"}, {"ship_num": 2, "ts": "2026-08-08T23:07:46Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A Cyber Themed Operating System. I’m most proud of the theme and the cybergram app. My biggest challenge: The icons in the desktop wouldn’t open so I had to click on the start button (the star on the bottom left) and thenopen apps.", "repo": "https://github.com/zvythrox67/WebOS", "demo": "https://zvythrox67.github.io/WebOS/"}]...
|
[{"post_id": 45876, "ts": "202 [{"post_id": 45876, "ts": "2026-08-12T16:45:03Z", "hours": 0.2769, "text": "Added wallpaper changing and cursor style feature"}, {"post_id": 45865, "ts": "2026-08-12T16:25:11Z", "hours": 0.6628, "text": "Added a browser app."}, {"post_id": 44873, "ts": "2026-08-10T22:14:18Z", "hours": 0.4472, "text": "Fixed Bug: Wasn’t able to click on the desktop icons."}, {"post_id": 43596, "ts": "2026-08-08T23:05:14Z", "hours": 0.2994, "text": "Released!"}, {"post_id": 43582, "ts": "2026-08-08T22:29:07Z", "hours": 0.4947, "text": "finished with apps. Just need to fix some bugs and then I’ll be good to go!"}, {"post_id": 43550, "ts": "2026-08-08T21:38:33Z", "hours": 1.82, "text": "Currently working on making a photos/gallery app and a social media app replicating Insta. (yes I did get those pics from pinterest)"}, {"post_id": 43427, "ts": "2026-08-08T17:43:54Z", "hours": 1.4539, "text": "Updated the music app. dk which banner I should pick…"}, {"post_id": 43371, "ts": "2026-08-08T15:59:39Z", "hours": 2.8503, "text": "Finally completed my entire desktop window and added the apps. I still have to work on the design though. The apps I added: Terminal, Notes, Music, Calculator, Trash, Sketch, Gallery"}, {"post_id": 42887, "ts": "2026-08-07T20:54:28Z", "hours": 0.4511, "text": "Just finished the booting animation. dk if I should add a background animation while booting or would that be too much..?"}, {"post_id": 42857, "ts": "2026-08-07T20:08:31Z", "hours": 0.7875, "text": "Just finished the opening/booting screen for my WebOS. The theme is CyberPunk."}]...
|
Title: CYBER_OS by @Judith | Stardance
Devlogs:
J Title: CYBER_OS by @Judith | Stardance
Devlogs:
Just finished the opening/booting screen for my WebOS. The theme is CyberPunk.
Just finished the booting animation. dk if I should add a background animation while booting or would that be too much..?
Finally completed my entire desktop window and added the apps. I still have to work on the design though. The apps I added: Terminal, Notes, Music, Calculator, Trash, Sketch, Gallery
Updated the music app. dk which banner I should pick…
Currently working on making a photos/gallery app and a social media app replicating Insta. (yes I did get those pics from pinterest)
finished with apps. Just need to fix some bugs and then I’ll be good to go!
Released!
Fixed Bug: Wasn’t able to click on the desktop icons.
Added a browser app.
Added wallpaper changing and cursor style feature
Ships:
A Cyber Themed Operating System. I’m most proud of the theme and the cybergram app. My biggest challenge: The icons in the desktop wouldn’t open so I had to click on the start button (the star on the bottom left) and thenopen apps.
Change background/wallpaper Change cursor color Added new app: browser...
|
1792993672.4647346
|
1793080072.4647346
|
|
45076
|
skyStart by @skyFonix | Stardance
|
skyFonix
|
2
|
12.0
|
18
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T18:09:33Z", "hours": 6.0, "multiplier": 2.33, "payout": 18, "blessing": "neutral", "text": "I added a synchronization feature across multiple devices with a centralized backend!", "repo": "https://github.com/FonixPython/skyStart", "demo": "https://skystart.cigoria.eu"}, {"ship_num": 2, "ts": "2026-08-08T19:24:01Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a start page in React, with a customizable search engine optional background blur for the photos fetched from the APOD api from NASA an unlimited amount of shortcuts collapse-able sticky notes with synchronization across tabs and windows!", "repo": "https://github.com/FonixPython/skyStart", "demo": "https://skystart.cigoria.eu"}]...
|
[{"post_id": 63086, "ts": "202 [{"post_id": 63086, "ts": "2026-09-06T17:57:09Z", "hours": 3.8553, "text": "After quite a lot of work, syncing settings and notes between devices is finally done! It’s accomplished with generated uuid, that can be shared between clients!"}, {"post_id": 61766, "ts": "2026-09-04T20:37:16Z", "hours": 1.7011, "text": "Been a while! School started so I’ve been pretty busy with that ig. I wanted to continue working on the coffeeTracker, but I’m a bit bored of that currently so I decided to work a bit more on skystart. I’ve wanted to add syncs from the begging and even tried, but ultimately gave up on in. But I’m giving it another shot! Already moved the project to typescript and initialized PrismaORM with sqlite! Next up are the endpoints! This feature will be pretty useful for me!"}, {"post_id": 43544, "ts": "2026-08-08T21:31:43Z", "hours": 0.7861, "text": "Added snap to grid and middle click to add sticky notes!"}, {"post_id": 43423, "ts": "2026-08-08T17:31:36Z", "hours": 2.1342, "text": "Added collapseable sticky notes that have a relative position to the screen so they can’t move out of sight! Also added option for background blur! I think it’s pretty much finished I just need to deploy it!"}, {"post_id": 43333, "ts": "2026-08-08T15:10:15Z", "hours": 2.7244, "text": "Changes: I connected my site to the APOD api, for the background, but directly accessing the api every time, was slow, so I made a cache for it Added a settings panel, so now the search engine can be changed, along with the shortcuts!"}, {"post_id": 42715, "ts": "2026-08-07T15:56:23Z", "hours": 1.5472, "text": "searching and shortcuts work now, next is the wallpaper from apod and maybe better shortcut icons"}]...
|
Title: skyStart by @skyFonix | Stardance
Devlogs: Title: skyStart by @skyFonix | Stardance
Devlogs:
searching and shortcuts work now, next is the wallpaper from apod and maybe better shortcut icons
Changes: I connected my site to the APOD api, for the background, but directly accessing the api every time, was slow, so I made a cache for it Added a settings panel, so now the search engine can be changed, along with the shortcuts!
Added collapseable sticky notes that have a relative position to the screen so they can’t move out of sight! Also added option for background blur! I think it’s pretty much finished I just need to deploy it!
Added snap to grid and middle click to add sticky notes!
Been a while! School started so I’ve been pretty busy with that ig. I wanted to continue working on the coffeeTracker, but I’m a bit bored of that currently so I decided to work a bit more on skystart. I’ve wanted to add syncs from the begging and even tried, but ultimately gave up on in. But I’m giving it another shot! Already moved the project to typescript and initialized PrismaORM with sqlite! Next up are the endpoints! This feature will be pretty useful for me!
After quite a lot of work, syncing settings and notes between devices is finally done! It’s accomplished with generated uuid, that can be shared between clients!
Ships:
I made a start page in React, with a customizable search engine optional background blur for the photos fetched from the APOD api from NASA an unlimited amount of shortcuts collapse-able sticky notes with synchronization across tabs and windows!
I added a synchronization feature across multiple devices with a centralized backend!...
|
1792993737.4262486
|
1793080137.4262486
|
|
45451
|
Stupid website by @maxel347 | Stardance
|
maxel347
|
2
|
2.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T20:21:55Z", "hours": 1.0, "multiplier": 1.02, "payout": 1, "blessing": "neutral", "text": "What did I make ? A simple stupid Website that Finals works now a simple Place to Post my stuff", "repo": "https://github.com/Maxel347/stupid-website", "demo": "https://maxel347.github.io/stupid-website/"}, {"ship_num": 2, "ts": "2026-08-10T11:18:00Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a stupid and simple website its nothing special just a simple space for me", "repo": "https://github.com/Maxel347/stupid-website", "demo": "https://maxel347.github.io/stupid-website/"}]...
|
[{"post_id": 47139, "ts": "202 [{"post_id": 47139, "ts": "2026-08-14T20:19:14Z", "hours": 0.8042, "text": "Just fixes some Minor things"}, {"post_id": 44533, "ts": "2026-08-10T11:11:39Z", "hours": 0.6461, "text": "Projects page"}, {"post_id": 44502, "ts": "2026-08-10T09:41:31Z", "hours": 0.3981, "text": "Burger Menu PC/PHONE"}]...
|
Title: Stupid website by @maxel347 | Stardance
De Title: Stupid website by @maxel347 | Stardance
Devlogs:
Burger Menu PC/PHONE
Projects page
Just fixes some Minor things
Ships:
I made a stupid and simple website its nothing special just a simple space for me
What did I make ? A simple stupid Website that Finals works now a simple Place to Post my stuff...
|
1792997309.9810145
|
1793083709.9810145
|
|
45509
|
Atomic-Habitizer by @AFJ | Stardance
|
AFJ
|
2
|
35.61
|
214
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T12:34:17Z", "hours": 22.0, "multiplier": 9.13, "payout": 203, "blessing": "neutral", "text": "What i made? I made Atomic Habitizer(I read the book Atomic Habits recently 😅). A simple habit tracking dashboard that help users build consistency through daily tracking and streaks. It includes weekly habit tracking, individual streaks for each habit, a maximum streak accross all habits, a dynamic progress ring, habit categories, quick presets, and local data storage. The Most challenging part One of them was making the streak system. The other was the Progress ring it was an html svg design i saw in reddit but never knew how it worked till i worked on JS. The version one which was my very first ship and was very simple and humble project. I got many suggestion from reviewers So Im proud that I reached here. For Testing, You should add a few habits and click the days in the weekly tracker to mark them complete. You can check whether the streaks and progress calculations are working. Then You can try to edit and delete the habit which will show my cute custiom popovers You can check the quick presets are working or not Note that the progress ring is based on current day’s habit completion and number of habits", "repo": "https://github.com/AfshinJamseed/Atomic-Habitiser/tree/v2", "demo": "https://afshinjamseed.github.io/Atomic-Habitiser/"}, {"ship_num": 2, "ts": "2026-08-08T10:09:29Z", "hours": 8.0, "multiplier": 1.34, "payout": 11, "blessing": "neutral", "text": "I made a Habit Tracker, which you can track your own habits for a diciplined life.", "repo": "https://github.com/AfshinJamseed/Atomic-Habitiser/tree/v2", "demo": "https://afshinjamseed.github.io/Atomic-Habitiser/"}]...
|
[{"post_id": 59550, "ts": "202 [{"post_id": 59550, "ts": "2026-09-01T13:10:19Z", "hours": 4.3025, "text": "V3 I styled the sidebar: It was very hard. I brought my cousin via live share and we worked together The ring mechanism was the most confusing. The design here is my idea 😁blah blah blah…"}, {"post_id": 59417, "ts": "2026-09-01T07:22:57Z", "hours": 1.0011, "text": "Starting the new version based on the reviews. Now i am trying to make the name and the app match. I got a design for a web dashboard a classic one from the internet and redisigned it using pen and paper to fit this project"}, {"post_id": 53561, "ts": "2026-08-24T04:57:15Z", "hours": 0.305, "text": "Added a video and an image in the readme"}, {"post_id": 53003, "ts": "2026-08-23T12:00:25Z", "hours": 0.5925, "text": "Readme was completed Project is now live this will be last devlog of v2 Try out the project: https://afshinjamseed.github.io/Atomic-Habitiser/"}, {"post_id": 52957, "ts": "2026-08-23T10:34:50Z", "hours": 1.8392, "text": "The Streak Calculation Was the hardest part. I asked Chat gpt for the logic. Now Moving on to Readme."}, {"post_id": 52876, "ts": "2026-08-23T07:54:30Z", "hours": 2.6378, "text": "Pop ups and Presets are now perfected. The preset are easy only pushing in-build objects into the array. But the popups poped me they were tuff finally after some research i got the perfect custom popup logics for me"}, {"post_id": 52556, "ts": "2026-08-22T18:39:20Z", "hours": 2.3389, "text": "Making custom popups 🎇🎇"}, {"post_id": 51790, "ts": "2026-08-21T17:06:55Z", "hours": 0.3128, "text": "Locked the upcomming days"}, {"post_id": 51774, "ts": "2026-08-21T16:44:17Z", "hours": 2.3067, "text": "Basic Functions are Made interactive. Took a lot of ⌚."}, {"post_id": 51572, "ts": "2026-08-21T10:51:02Z", "hours": 1.5481, "text": "JAVA SCRIPT ❌ BUG SCRIPT ✅ 😂"}, {"post_id": 51480, "ts": "2026-08-21T06:40:29Z", "hours": 4.2794, "text": "whoof that was was hard"}, {"post_id": 49715, "ts": "2026-08-18T17:01:28Z", "hours": 1.345, "text": "Made a almost perfect card"}, {"post_id": 49555, "ts": "2026-08-18T13:04:18Z", "hours": 1.4981, "text": "The last reviewers told me to improve the UI so full of improving it"}, {"post_id": 49066, "ts": "2026-08-17T17:39:19Z", "hours": 0.8528, "text": "Top Section Designing was done"}, {"post_id": 48822, "ts": "2026-08-17T11:20:20Z", "hours": 0.7856, "text": "Got a better design designing is my weakness"}, {"post_id": 48797, "ts": "2026-08-17T10:31:59Z", "hours": 1.4922, "text": "I am no trying out some designs for my new version of Atomic Habitizer Please comment if you can see any. I am bad at designing"}, {"post_id": 48753, "ts": "2026-08-17T08:58:18Z", "hours": 0.4544, "text": "The first version was just an prototype now i am starting 2nd version of this project"}, {"post_id": 43192, "ts": "2026-08-08T09:58:53Z", "hours": 7.9069, "text": "Ready To Ship"}]...
|
Title: Atomic-Habitizer by @AFJ | Stardance
Devlo Title: Atomic-Habitizer by @AFJ | Stardance
Devlogs:
Ready To Ship
The first version was just an prototype now i am starting 2nd version of this project
I am no trying out some designs for my new version of Atomic Habitizer Please comment if you can see any. I am bad at designing
Got a better design designing is my weakness
Top Section Designing was done
The last reviewers told me to improve the UI so full of improving it
Made a almost perfect card
whoof that was was hard
JAVA SCRIPT ❌ BUG SCRIPT ✅ 😂
Basic Functions are Made interactive. Took a lot of ⌚.
Locked the upcomming days
Making custom popups 🎇🎇
Pop ups and Presets are now perfected. The preset are easy only pushing in-build objects into the array. But the popups poped me they were tuff finally after some research i got the perfect custom popup logics for me
The Streak Calculation Was the hardest part. I asked Chat gpt for the logic. Now Moving on to Readme.
Readme was completed Project is now live this will be last devlog of v2 Try out the project: https://afshinjamseed.github.io/Atomic-Habitiser/
Added a video and an image in the readme
Starting the new version based on the reviews. Now i am trying to make the name and the app match. I got a design for a web dashboard a classic one from the internet and redisigned it using pen and paper to fit this project
V3 I styled the sidebar: It was very hard. I brought my cousin via live share and we worked together The ring mechanism was the most confusing. The design here is my idea 😁blah blah blah…
Ships:
I made a Habit Tracker, which you can track your own habits for a diciplined life.
What i made? I made Atomic Habitizer(I read the book Atomic Habits recently 😅). A simple habit tracking dashboard that help users build consistency through daily tracking and streaks. It includes weekly habit tracking, individual streaks for each habit, a maximum streak accross all habits, a dynamic progress ring, habit categories, quick presets, and local data storage. The Most challenging part One of them was making the streak system. The other was the Progress ring it was an html svg design i saw in reddit but never knew how it worked till i worked on JS. The version one which was my very first ship and was very simple and humble project. I got many suggestion from reviewers So Im proud that I reached here. For Testing, You should add a few habits and click the days in the weekly tracker to mark them complete. You can check whether the streaks and progress calculations are working. Then You can try to edit and delete the habit which will show my cute custiom popovers You can check the quick presets are working or not Note that the progress ring is based on current day’s habit completion and number of habits...
|
1792875227.0075614
|
1793739227.0075614
|
|
45521
|
My Own Site! by @Mysterious-- | Stardance
|
Mysterious--
|
2
|
9.0
|
46
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T18:05:37Z", "hours": 4.0, "multiplier": 11.61, "payout": 46, "blessing": "neutral", "text": "I made a website showing my personal portfolio. It includes my achievements, my participation in different hackathons, my skills and my projects. The thing I felt challenging was styling the website and encountering the bugs. I’m proud of myself for making my personal portfolio website. People can explore diffrent sections of my portfolio, including my achievements, hackathons, skills and projects. They can also test the navigations, interact with the links and buttons and check how the website looks and works on different screen sizes.", "repo": "https://github.com/Shreyanshjainvip/My-Website/", "demo": "https://shreyanshweb.netlify.app/"}, {"ship_num": 2, "ts": "2026-08-09T11:53:19Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website showing my personal portfolio. It includes my achievements, my participation in different hackathons, my skills and my projects. The thing I felt challenging was styling the website and encountering the bugs. I’m proud of myself for making my personal portfolio website. People can explore diffrent sections of my portfolio, including my achievements, hackathons, skills and projects. They can also test the navigations, interact with the links and buttons and check how the website looks and works on different screen sizes.", "repo": "https://github.com/Shreyanshjainvip/My-Website/", "demo": "https://shreyanshweb.netlify.app/"}]...
|
[{"post_id": 54653, "ts": "202 [{"post_id": 54653, "ts": "2026-08-25T18:03:56Z", "hours": 3.6231, "text": "I improved and polished my personal portfolio website with several visual and interactive updates. I worked on the overall styling, layout, sections, spacing, contact area, images and responsiveness to give the website a more complete and consistent feel. I also added smoother scroll-reveal animations, a typing effect, animated statistics, active navigation feedback, a back-to-top button, a scroll progress bar, background/rain effects and custom cursor interactions. Along the way, I fixed bugs and broken elements from the earlier version and improved how my projects, skills, experience, achievements, journey and contact information are presented.Finally, I cleaned up parts of the HTML, CSS and JavaScript to make the website run more smoothly and feel more polished overall."}, {"post_id": 44130, "ts": "2026-08-09T18:11:35Z", "hours": 0.3003, "text": "Tomorrow’s Plan Quick update: I spent around 5h 6m on the project so far, and I also fixed the remaining bugs in about 20 minutes today. Tomorrow I want to focus on polishing the site rather than adding a ton of new features. I’ll work on improving the overall design, checking the mobile layout, cleaning up anything that feels inconsistent and making sure everything works properly before shipping. Goal for tomorrow: polish → test → ship 🚀"}, {"post_id": 43875, "ts": "2026-08-09T10:05:07Z", "hours": 4.8872, "text": "My Own Site is my personal portfolio and a place to document the things I build, test, experiment with and learn."}]...
|
Title: My Own Site! by @Mysterious-- | Stardance
Title: My Own Site! by @Mysterious-- | Stardance
Devlogs:
My Own Site is my personal portfolio and a place to document the things I build, test, experiment with and learn.
Tomorrow’s Plan Quick update: I spent around 5h 6m on the project so far, and I also fixed the remaining bugs in about 20 minutes today. Tomorrow I want to focus on polishing the site rather than adding a ton of new features. I’ll work on improving the overall design, checking the mobile layout, cleaning up anything that feels inconsistent and making sure everything works properly before shipping. Goal for tomorrow: polish → test → ship 🚀
I improved and polished my personal portfolio website with several visual and interactive updates. I worked on the overall styling, layout, sections, spacing, contact area, images and responsiveness to give the website a more complete and consistent feel. I also added smoother scroll-reveal animations, a typing effect, animated statistics, active navigation feedback, a back-to-top button, a scroll progress bar, background/rain effects and custom cursor interactions. Along the way, I fixed bugs and broken elements from the earlier version and improved how my projects, skills, experience, achievements, journey and contact information are presented.Finally, I cleaned up parts of the HTML, CSS and JavaScript to make the website run more smoothly and feel more polished overall.
Ships:
I made a website showing my personal portfolio. It includes my achievements, my participation in different hackathons, my skills and my projects. The thing I felt challenging was styling the website and encountering the bugs. I’m proud of myself for making my personal portfolio website. People can explore diffrent sections of my portfolio, including my achievements, hackathons, skills and projects. They can also test the navigations, interact with the links and buttons and check how the website looks and works on different screen sizes.
I made a website showing my personal portfolio. It includes my achievements, my participation in different hackathons, my skills and my projects. The thing I felt challenging was styling the website and encountering the bugs. I’m proud of myself for making my personal portfolio website. People can explore diffrent sections of my portfolio, including my achievements, hackathons, skills and projects. They can also test the navigations, interact with the links and buttons and check how the website looks and works on different screen sizes....
|
1793084000.3362107
|
1793170400.3362107
|
|
45657
|
BasbOSa by @sarahzoghly | Stardance
|
sarahzoghly
|
2
|
24.63
|
87
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T18:06:56Z", "hours": 12.0, "multiplier": 7.59, "payout": 87, "blessing": "neutral", "text": "That took so much time even though it might look simple, but I am new to web dev, and that is really a huge step from the first version of it. I added 2 other apps, a web search bar, a ticker, and a weather widget. That was too much fun to make, and I had fun making Basbousa into a character like I wanted.", "repo": "https://github.com/sarahzoghly/personal-OS", "demo": "https://sarahzoghly.github.io/personal-OS/"}, {"ship_num": 2, "ts": "2026-08-11T17:42:47Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "That one was harder than the personal website one but it was also fun to make and customize. I still plan to add some other stuff later.", "repo": "https://github.com/sarahzoghly/personal-OS", "demo": "https://sarahzoghly.github.io/personal-OS/"}]...
|
[{"post_id": 68667, "ts": "202 [{"post_id": 68667, "ts": "2026-09-15T14:32:00Z", "hours": 0.6322, "text": "I moved the taskbar to the bottom (bec it hide the apps sometimes), fixed its position and fixed Basbousa to the center too. I still have to adjust the other stuff on the screen so they look nice on all screen views."}, {"post_id": 68169, "ts": "2026-09-14T17:13:21Z", "hours": 1.2411, "text": "Final touchesss"}, {"post_id": 65506, "ts": "2026-09-10T18:17:42Z", "hours": 0.6358, "text": "Added a side window to put Basbousa (the cat) in when the game is being played. I just need to make the cat Gifs for the drawing and game apps and I think I am done"}, {"post_id": 64502, "ts": "2026-09-08T23:07:00Z", "hours": 0.5203, "text": "Added a ticker"}, {"post_id": 64489, "ts": "2026-09-08T22:27:36Z", "hours": 1.9558, "text": "Made a weather widget!"}, {"post_id": 63903, "ts": "2026-09-07T22:49:36Z", "hours": 0.58, "text": "addded a search bar, looks cool."}, {"post_id": 63874, "ts": "2026-09-07T21:30:35Z", "hours": 1.7106, "text": "That is kinda fun honestly even if I was really more optimistic about the ‘ai guesses the drawing’ thing than what I ended up with (which isn’t really an ai, it just chooses smth random to say from a list) but it works so that is good."}, {"post_id": 63148, "ts": "2026-09-06T19:49:03Z", "hours": 1.5339, "text": "Made a sketchpad! It works,u can draw on it now. I wanna make this app like Quick, Draw! thing, Basbousa (the cat) is supposed to guess what u r drawing. I will still figure out that part"}, {"post_id": 59236, "ts": "2026-08-31T22:16:46Z", "hours": 1.6856, "text": "Added a game! That is supposed to be a gaming app with different games in there, I added the first one (which is a demo for a game that I made). I still have to add “choose a game” and make the actual app interface."}, {"post_id": 45432, "ts": "2026-08-11T21:25:44Z", "hours": 1.6467, "text": "Fixed all the CSS bugs (or what I found anyway) that is how it looks in different screen views"}, {"post_id": 45298, "ts": "2026-08-11T17:40:45Z", "hours": 0.5931, "text": "changed the title and made the bg cat disappear when the info app is open"}, {"post_id": 45243, "ts": "2026-08-11T16:13:05Z", "hours": 3.2922, "text": "Finally made the first app! (or second if I am counting the info one), it is a simple chatbot with a cat that u can pet."}, {"post_id": 44935, "ts": "2026-08-11T00:54:38Z", "hours": 2.5547, "text": "Added the first app window (info), made it draggable and closeable."}, {"post_id": 44868, "ts": "2026-08-10T22:06:00Z", "hours": 1.8494, "text": "Added some stuff. Made the cat eyes move better, added a top bar with a logout button, and added a pop-up that I will still make work properly"}, {"post_id": 44077, "ts": "2026-08-09T16:28:32Z", "hours": 1.7697, "text": "Changed the welcome screen (still didn’t think about a name for the OS), added a cat with tracking eyes (Claude helped me with that) and made the OS bg."}, {"post_id": 43620, "ts": "2026-08-09T00:13:57Z", "hours": 1.7789, "text": "Made working button that switch to the OS. Most stuff r placeholders that I will change later."}]...
|
Title: BasbOSa by @sarahzoghly | Stardance
Devlog Title: BasbOSa by @sarahzoghly | Stardance
Devlogs:
Made working button that switch to the OS. Most stuff r placeholders that I will change later.
Changed the welcome screen (still didn’t think about a name for the OS), added a cat with tracking eyes (Claude helped me with that) and made the OS bg.
Added some stuff. Made the cat eyes move better, added a top bar with a logout button, and added a pop-up that I will still make work properly
Added the first app window (info), made it draggable and closeable.
Finally made the first app! (or second if I am counting the info one), it is a simple chatbot with a cat that u can pet.
changed the title and made the bg cat disappear when the info app is open
Fixed all the CSS bugs (or what I found anyway) that is how it looks in different screen views
Added a game! That is supposed to be a gaming app with different games in there, I added the first one (which is a demo for a game that I made). I still have to add “choose a game” and make the actual app interface.
Made a sketchpad! It works,u can draw on it now. I wanna make this app like Quick, Draw! thing, Basbousa (the cat) is supposed to guess what u r drawing. I will still figure out that part
That is kinda fun honestly even if I was really more optimistic about the ‘ai guesses the drawing’ thing than what I ended up with (which isn’t really an ai, it just chooses smth random to say from a list) but it works so that is good.
addded a search bar, looks cool.
Made a weather widget!
Added a ticker
Added a side window to put Basbousa (the cat) in when the game is being played. I just need to make the cat Gifs for the drawing and game apps and I think I am done
Final touchesss
I moved the taskbar to the bottom (bec it hide the apps sometimes), fixed its position and fixed Basbousa to the center too. I still have to adjust the other stuff on the screen so they look nice on all screen views.
Ships:
That one was harder than the personal website one but it was also fun to make and customize. I still plan to add some other stuff later.
That took so much time even though it might look simple, but I am new to web dev, and that is really a huge step from the first version of it. I added 2 other apps, a web search bar, a ticker, and a weather widget. That was too much fun to make, and I had fun making Basbousa into a character like I wanted....
|
1793055049.7382567
|
1793141449.7382567
|
|
45682
|
SolarTab by @GeorgeSun | Stardance
|
GeorgeSun
|
2
|
3.0
|
10
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T02:22:36Z", "hours": 1.0, "multiplier": 11.55, "payout": 10, "blessing": "neutral", "text": "I made SolarTab, a custom new tab page focused around NASA’s astronomy picture of the day. It has many features such as an ISS locator, recent space news, calendar, to-do list, weather, and recent searches. The most challenging part of this was making the widgets as some of them were like a project of their own. I am most proud of the UI as it is easily customizable and has a nice blurry transparency effect to it. You can try my project now using the Try project button below!", "repo": "https://github.com/Geofoods/SolarTab", "demo": "https://geofoods.github.io/SolarTab/"}, {"ship_num": 2, "ts": "2026-08-15T17:20:12Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made SolarTab, a custom new tab page focused around NASA’s astronomy picture of the day. It has many features such as an ISS locator, recent space news, calendar, to-do list, weather, and recent searches. The most challenging part of this was making the widgets as some of them were like a project of their own. I am most proud of the UI as it is easily customizable and has a nice blurry transparency effect to it. You can try my project now using the Try project button below!", "repo": "https://github.com/Geofoods/SolarTab", "demo": "https://geofoods.github.io/SolarTab/"}]...
|
[{"post_id": 48624, "ts": "202 [{"post_id": 48624, "ts": "2026-08-17T02:52:04Z", "hours": 0.6869, "text": "I fixed some bugs with dragging the widgets and the calendar app not being able to change the month"}, {"post_id": 47614, "ts": "2026-08-15T16:54:36Z", "hours": 0.2664, "text": "I made the spacing between elements match up and just made overall polishing changes such as moving the date to the center, a settings screen to customize dark/light mode and accent color."}, {"post_id": 47508, "ts": "2026-08-15T13:48:54Z", "hours": 1.1542, "text": "I added the icons to the search engine selection as well as the ability to add your own search engine as well. I also added quick links and the ability to edit, delete, and move them around. At the bottom, there is now also a title and description for the backgrond image which you can select which day as well. I added more widgets such as space news, recent searches, and ISS tracker where you can customize the location of these widgets"}, {"post_id": 46953, "ts": "2026-08-14T15:04:53Z", "hours": 0.2628, "text": "Added the date to the top left corner as well as a I’m feeling lucky button inspired from Google. I also added widgets that show the calendar, weather, and a todolist."}, {"post_id": 46383, "ts": "2026-08-13T15:40:01Z", "hours": 0.6458, "text": "I made the background picture be the astronomy picture of the day and also added a clock and added options to choose between what search engine you want and also the functionality of searching"}]...
|
Title: SolarTab by @GeorgeSun | Stardance
Devlogs Title: SolarTab by @GeorgeSun | Stardance
Devlogs:
I made the background picture be the astronomy picture of the day and also added a clock and added options to choose between what search engine you want and also the functionality of searching
Added the date to the top left corner as well as a I’m feeling lucky button inspired from Google. I also added widgets that show the calendar, weather, and a todolist.
I added the icons to the search engine selection as well as the ability to add your own search engine as well. I also added quick links and the ability to edit, delete, and move them around. At the bottom, there is now also a title and description for the backgrond image which you can select which day as well. I added more widgets such as space news, recent searches, and ISS tracker where you can customize the location of these widgets
I made the spacing between elements match up and just made overall polishing changes such as moving the date to the center, a settings screen to customize dark/light mode and accent color.
I fixed some bugs with dragging the widgets and the calendar app not being able to change the month
Ships:
I made SolarTab, a custom new tab page focused around NASA’s astronomy picture of the day. It has many features such as an ISS locator, recent space news, calendar, to-do list, weather, and recent searches. The most challenging part of this was making the widgets as some of them were like a project of their own. I am most proud of the UI as it is easily customizable and has a nice blurry transparency effect to it. You can try my project now using the Try project button below!
I made SolarTab, a custom new tab page focused around NASA’s astronomy picture of the day. It has many features such as an ISS locator, recent space news, calendar, to-do list, weather, and recent searches. The most challenging part of this was making the widgets as some of them were like a project of their own. I am most proud of the UI as it is easily customizable and has a nice blurry transparency effect to it. You can try my project now using the Try project button below!...
|
1793062406.0838234
|
1793148806.0838234
|
|
45689
|
AmateurBot by @amateur_tech_guy | Stardance
|
amateur_tech_guy
|
2
|
11.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T22:56:31Z", "hours": 2.0, "multiplier": 3.52, "payout": 7, "blessing": "neutral", "text": "AmateurBot is a fun little slack bot that you can play around with, it has all kinds of cool features, i recently just made the messages visible in chat just in case anyone wanted it. and i also think i opened the DMs, im not really sure if it works, im submitting this project to shipping to see what you guys think of it, pls leave a good review and be nice:)", "repo": "https://github.com/amateurtechguy/AmateurBot", "demo": "https://hackclub.slack.com/oauth?client_id=2210535565.11780344106421&scope=chat%3Awrite%2Ccommands%2Capp_mentions%3Aread%2Cchannels%3Ahistory&user_scope=&redirect_uri=&state=&granular_bot_scope=1&single_channel=0&install_redirect=oauth&tracked=1&user_default=0&original_team=T0266FRGM&team=1"}, {"ship_num": 2, "ts": "2026-08-11T00:07:55Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a slack bot in 3 days! Don’t get me wrong, it’s nothing special, very basic but it meets the requirements. I tried making his answers visible to everyone but I’m pretty sure one or two are only visible to you and I’m so sick of debugging that. After all it isn’t said in the requirements that the bot had to have visible answers for everyone. What I’m most proud of in this project, is my patience, I have no idea how I was THAT patient because there were bugs left and right but hey, at least I finished it!:D", "repo": "https://github.com/amateurtechguy/AmateurBot", "demo": "https://hackclub.slack.com/oauth?client_id=2210535565.11780344106421&scope=chat%3Awrite%2Ccommands%2Capp_mentions%3Aread%2Cchannels%3Ahistory&user_scope=&redirect_uri=&state=&granular_bot_scope=1&single_channel=0&install_redirect=oauth&tracked=1&user_default=0&original_team=T0266FRGM&team=1"}]...
|
[{"post_id": 68323, "ts": "202 [{"post_id": 68323, "ts": "2026-09-14T22:54:35Z", "hours": 1.9667, "text": "devlog #5: debugged the bot and now im about to ship it to see what people think:)"}, {"post_id": 44920, "ts": "2026-08-11T00:01:15Z", "hours": 2.9667, "text": "final devlog: AmateurBot is done:0 for now atleast, i gave it 9 awesome commands, and I lowkey had no experience or idea how the hell i was supposed to make it but i followed the guide lol, anyways the bot is only a slash command bot, he isnt a direct answer bot sooo like my apologies:< but i had fun learning how to make one thats for sure, it was frustrating but fun"}, {"post_id": 44755, "ts": "2026-08-10T19:01:06Z", "hours": 1.1439, "text": "Update!! still trying to fix some bugs but I fixed alot today! Im waiting for Nest’s approval so here’s this for now, can’t wait to finish this project!"}, {"post_id": 44640, "ts": "2026-08-10T15:22:02Z", "hours": 3.1681, "text": "devlog #2: I finally fixed some bugs on my own AGAIN, and I added a couple of commands, now all that’s left for me to do is to make the commands work, post it on github and also use nest to make the bot a 24/7 one"}, {"post_id": 44213, "ts": "2026-08-09T20:32:44Z", "hours": 1.725, "text": "devlog #1: Started on the bot coding and to be honest I didnt even get a chance to code anything today ive been fighting all day long with node and npm the commands are working in the worst way possible i mean at first they didnt even want to work and now they do but once i write node index.js in the terminal it gives me a slack installation error like what??? im so confused but ill look more into this tomorrow cause this beat me up today://"}]...
|
Title: AmateurBot by @amateur_tech_guy | Stardance Title: AmateurBot by @amateur_tech_guy | Stardance
Devlogs:
devlog #1: Started on the bot coding and to be honest I didnt even get a chance to code anything today ive been fighting all day long with node and npm the commands are working in the worst way possible i mean at first they didnt even want to work and now they do but once i write node index.js in the terminal it gives me a slack installation error like what??? im so confused but ill look more into this tomorrow cause this beat me up today://
devlog #2: I finally fixed some bugs on my own AGAIN, and I added a couple of commands, now all that’s left for me to do is to make the commands work, post it on github and also use nest to make the bot a 24/7 one
Update!! still trying to fix some bugs but I fixed alot today! Im waiting for Nest’s approval so here’s this for now, can’t wait to finish this project!
final devlog: AmateurBot is done:0 for now atleast, i gave it 9 awesome commands, and I lowkey had no experience or idea how the hell i was supposed to make it but i followed the guide lol, anyways the bot is only a slash command bot, he isnt a direct answer bot sooo like my apologies:< but i had fun learning how to make one thats for sure, it was frustrating but fun
devlog #5: debugged the bot and now im about to ship it to see what people think:)
Ships:
I made a slack bot in 3 days! Don’t get me wrong, it’s nothing special, very basic but it meets the requirements. I tried making his answers visible to everyone but I’m pretty sure one or two are only visible to you and I’m so sick of debugging that. After all it isn’t said in the requirements that the bot had to have visible answers for everyone. What I’m most proud of in this project, is my patience, I have no idea how I was THAT patient because there were bugs left and right but hey, at least I finished it!:D
AmateurBot is a fun little slack bot that you can play around with, it has all kinds of cool features, i recently just made the messages visible in chat just in case anyone wanted it. and i also think i opened the DMs, im not really sure if it works, im submitting this project to shipping to see what you guys think of it, pls leave a good review and be nice:)...
|
1793062408.135537
|
1793148808.135537
|
|
45734
|
LaserRay by @jonas_gaden | Stardance
|
jonas_gaden
|
2
|
21.32
|
249
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T22:09:15Z", "hours": 12.0, "multiplier": 11.1, "payout": 129, "blessing": "neutral", "text": "This update completely changes the way my game works. By introducing live service integration using Supabase everybody is now able to create, share and publish levels to every other player. While the content of the last ship was very limited, my app now has transformed into a platform, open for everyone to create new content within a few minutes. But only that would be not enough! That’s why i also added a brand new step-by-step interactive tutorial, to give everyone the ability to understand the game right of the start. Now all thats left for me to say: Have fun and please <3 give me a good score and let me know what to add next", "repo": "https://github.com/agentquackyt/LaserCircuit", "demo": "https://agentquackyt.github.io/LaserCircuit/"}, {"ship_num": 2, "ts": "2026-08-24T22:03:22Z", "hours": 9.0, "multiplier": 12.89, "payout": 120, "blessing": "neutral", "text": "LaserCircuit ist is clever out-of-the-box thinking game, made and optimized for mobile use. This version includes 12 level, handcrafted by myself, with various different difficulties. For some problems you will need to think out of the box, but you will figure it out. And you only need 6/9 to unlock Stage 2", "repo": "https://github.com/agentquackyt/LaserCircuit", "demo": "https://agentquackyt.github.io/LaserCircuit/"}]...
|
[{"post_id": 73602, "ts": "202 [{"post_id": 73602, "ts": "2026-09-25T13:39:28Z", "hours": 0.3169, "text": "I improved the tutorial flow, now saving the tutorial state"}, {"post_id": 73333, "ts": "2026-09-24T21:59:10Z", "hours": 2.5467, "text": "Final devlog This is the final devlog before shipping, packed with a load of new and improved features, including but not limited to: a new Tutorial, introducing you into the core features an updated UI to ensure the grid has always the aspect ratio 1/1 updated the symbols used on the game board to improve readability shareable links to community levels, like this one => “Traffic Jam” New levels And so much more …"}, {"post_id": 73068, "ts": "2026-09-24T09:52:51Z", "hours": 1.71, "text": "The discover community levels screen is now fully working, making this the first time the new live service intergration is fully finished. I will do another polishing devlog, where i will add a tutorial on how to play and refine my UI further"}, {"post_id": 72874, "ts": "2026-09-23T22:24:38Z", "hours": 1.2708, "text": "I improved the editor ui and added a few useful features and indicators. I also force reload the site now, should the user decide to log out (As the editor is only accessible when signed in). Next i will add the new table in the backend database and then build both the own level tab as well as the discover tab"}, {"post_id": 72791, "ts": "2026-09-23T18:59:51Z", "hours": 1.7267, "text": "I am now working on the first version of the community level editor. Currently it works more or less, but the live service integration is not done yet. I decided to separate the normal levels from the user levels (different database table) but its not wired in as of right now"}, {"post_id": 72576, "ts": "2026-09-23T08:31:51Z", "hours": 0.7675, "text": "I worked on improving my GUI, starting with the Discord login screen. I am quite happy with the outcome, and the visual look in general. Next i will start working on the level editor itself and an level discovery screen after that"}, {"post_id": 72430, "ts": "2026-09-22T22:46:53Z", "hours": 1.9322, "text": "I am currently working on implementing login via Discord for user generated levels. I am also introducing a more structured way for the app to work, however its a slow process. Atleast i got the basic version of the login with Discord working"}, {"post_id": 71951, "ts": "2026-09-21T20:45:42Z", "hours": 1.6481, "text": "I am currently migrating the level structure to a data-as-backend solution, coming from a static, file-based level system. This give me the ability quickly add new levels, modify and exchange old ones and add time-limited levels. I am also reviewing the option to create an level builder with sharable levels, but this is only an idea i might come back to in the future."}, {"post_id": 54101, "ts": "2026-08-24T22:00:25Z", "hours": 0.6958, "text": "I added many new levels as well as building a stable release version and setting up a new README file. This will be the final devlog before my first ship, i hope you like it"}, {"post_id": 54042, "ts": "2026-08-24T20:02:07Z", "hours": 0.8731, "text": "I added more levels as well as improving the completion UI. To improve the workflow, i added an editor to quickly develop new levels (i used the File System API for the first time, allowing me to edit files directly in the browser without handeling upload and download) https://lapse.hackclub.com/timelapse/-edas1fyH1rh"}, {"post_id": 53978, "ts": "2026-08-24T18:05:36Z", "hours": 1.2856, "text": "I added a new layout for the finish screen, brought the level title and id (calculated from “(id/3)+1”+.+”(id%3)+1”) to the game screen and overall improved the UI"}, {"post_id": 53650, "ts": "2026-08-24T09:44:17Z", "hours": 1.3772, "text": "after quite a good amount of pain, i finally figured out a way to save the highscores and create “sets” of 9 levels, which you need to complete 6/9 to unlock the next set. My next session will be to clean up the UI and optimize both for PC as well as mobile"}, {"post_id": 53610, "ts": "2026-08-24T07:51:30Z", "hours": 1.0131, "text": "I fixed a weird bug which was caused by using a false ctx.restore(); too much, which caused the beams to render in different colors, despite the game working properly. I also added a new piece: The Obstacle. this piece is exclusive to the level creator, the player can not modfiy nor delete the block, requiring a interesting challenge for some levels . Next i will be working on the level loader and will create a few levels"}, {"post_id": 52936, "ts": "2026-08-23T09:50:19Z", "hours": 2.2358, "text": "I implemented a first basic version of the LightRay Game i am working on. It now supports mirrors and splitters. I am now working on polishing as well as building a level loader (levels stored as json files, a custom level editor is planned)"}, {"post_id": 43587, "ts": "2026-08-08T22:43:51Z", "hours": 0.9517, "text": "I designed a very simple start page for my game template (and added a UIpatcher class, which handles interaction with the dom, especially spawning and removing buttons and changing text)"}, {"post_id": 43545, "ts": "2026-08-08T21:33:40Z", "hours": 0.8717, "text": "I started my project by setting up a reusable Github Template, which includes basic styling (e.g. buttons) as well as reusable code, such as a basic game engine for loading scenes, managing score and sound manager. (coming soon) For now i stuck with styling the buttons, which now have 5 different styles with a simple animation. Next i will build a level basic loader and a new framework for the UI. I will try to target both mobile and desktop for the app."}]...
|
Title: LaserRay by @jonas_gaden | Stardance
Devlo Title: LaserRay by @jonas_gaden | Stardance
Devlogs:
I started my project by setting up a reusable Github Template, which includes basic styling (e.g. buttons) as well as reusable code, such as a basic game engine for loading scenes, managing score and sound manager. (coming soon) For now i stuck with styling the buttons, which now have 5 different styles with a simple animation. Next i will build a level basic loader and a new framework for the UI. I will try to target both mobile and desktop for the app.
I designed a very simple start page for my game template (and added a UIpatcher class, which handles interaction with the dom, especially spawning and removing buttons and changing text)
I implemented a first basic version of the LightRay Game i am working on. It now supports mirrors and splitters. I am now working on polishing as well as building a level loader (levels stored as json files, a custom level editor is planned)
I fixed a weird bug which was caused by using a false ctx.restore(); too much, which caused the beams to render in different colors, despite the game working properly. I also added a new piece: The Obstacle. this piece is exclusive to the level creator, the player can not modfiy nor delete the block, requiring a interesting challenge for some levels . Next i will be working on the level loader and will create a few levels
after quite a good amount of pain, i finally figured out a way to save the highscores and create “sets” of 9 levels, which you need to complete 6/9 to unlock the next set. My next session will be to clean up the UI and optimize both for PC as well as mobile
I added a new layout for the finish screen, brought the level title and id (calculated from “(id/3)+1”+.+”(id%3)+1”) to the game screen and overall improved the UI
I added more levels as well as improving the completion UI. To improve the workflow, i added an editor to quickly develop new levels (i used the File System API for the first time, allowing me to edit files directly in the browser without handeling upload and download) https://lapse.hackclub.com/timelapse/-edas1fyH1rh
I added many new levels as well as building a stable release version and setting up a new README file. This will be the final devlog before my first ship, i hope you like it
I am currently migrating the level structure to a data-as-backend solution, coming from a static, file-based level system. This give me the ability quickly add new levels, modify and exchange old ones and add time-limited levels. I am also reviewing the option to create an level builder with sharable levels, but this is only an idea i might come back to in the future.
I am currently working on implementing login via Discord for user generated levels. I am also introducing a more structured way for the app to work, however its a slow process. Atleast i got the basic version of the login with Discord working
I worked on improving my GUI, starting with the Discord login screen. I am quite happy with the outcome, and the visual look in general. Next i will start working on the level editor itself and an level discovery screen after that
I am now working on the first version of the community level editor. Currently it works more or less, but the live service integration is not done yet. I decided to separate the normal levels from the user levels (different database table) but its not wired in as of right now
I improved the editor ui and added a few useful features and indicators. I also force reload the site now, should the user decide to log out (As the editor is only accessible when signed in). Next i will add the new table in the backend database and then build both the own level tab as well as the discover tab
The discover community levels screen is now fully working, making this the first time the new live service intergration is fully finished. I will do another polishing devlog, where i will add a tutorial on how to play and refine my UI further
Final devlog This is the final devlog before shipping, packed with a load of new and improved features, including but not limited to: a new Tutorial, introducing you into the core features an updated UI to ensure the grid has always the aspect ratio 1/1 updated the symbols used on the game board to improve readability shareable links to community levels, like this one => “Traffic Jam” New levels And so much more …
I improved the tutorial flow, now saving the tutorial state
Ships:
LaserCircuit ist is clever out-of-the-box thinking game, made and optimized for mobile use. This version includes 12 level, handcrafted by myself, with various different difficulties. For some problems you will need to think out of the box, but you will figure it out. And you only need 6/9 to unlock Stage 2
This update completely changes the way my game works. By introducing live service integration using Supabase everybody is now able to create, share and publish levels to every other player. While the content of the last ship was very limited, my app now has transformed into a platform, open for everyone to create new content within a few minutes. But only that would be not enough! That’s why i also added a brand new step-by-step interactive tutorial, to give everyone the ability to understand the game right of the start. Now all thats left for me to say: Have fun and please <3 give me a good score and let me know what to add next...
|
1793000998.3099036
|
1793087398.3099036
|
|
45749
|
Capyware games by @Alafandri | Stardance
|
Alafandri
|
2
|
11.0
|
22
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T22:23:38Z", "hours": 3.0, "multiplier": 12.79, "payout": 22, "blessing": "neutral", "text": "I made a warioware style game on godot. The post challenging part was making the art. So I can say that i am also very proud of the outcome of it. People who playtest the game remember, that the longer you hold space the higher you will jump!", "repo": "https://github.com/Alafandri/Capyware-games", "demo": "https://alafandri.itch.io/capyware-games"}, {"ship_num": 2, "ts": "2026-08-22T23:23:27Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple fast paced warioware game. This game is all about filling the needs of a cute little capybara. This projects biggest challenge was for me the art. Since I am no artist, nailing the artstyle and getting the sprites to look good was definitely a challenge for me. But I managed and learned alot while making it. So I guess I could say that I am most proud of the art in the game. People planning on playing it should know that have fun!", "repo": "https://github.com/Alafandri/Capyware-games", "demo": "https://alafandri.itch.io/capyware-games"}]...
|
[{"post_id": 54793, "ts": "202 [{"post_id": 54793, "ts": "2026-08-25T22:21:24Z", "hours": 3.3975, "text": "Hey everyone! Since I finished the first warioware game mission I have decided to take on the second one where you expand the game! I have added 2 new levels to my current game that are very different from the pervious ones since I didn’t want to copy the exisiting ones. I’m not going to spoil what it is though but I will say that I like how they turned out! Have fun!"}, {"post_id": 52679, "ts": "2026-08-22T23:02:53Z", "hours": 3.3278, "text": "Hey everyone! The game is finally done! I added music to the game and finished all of the levels. The game is now ready for release! Have a nice day, and have fun playing the game!"}, {"post_id": 52530, "ts": "2026-08-22T18:12:16Z", "hours": 4.5322, "text": "Hey everyone! I have started working on a warioware style game. This game is going to be themed around a capybara who you got to make happy. So far I have finished with the first level. I have pretty much all of the art done but the systems havent been implemented yet though. I also have the last level somewhat done but it still needs quite a bit configuration still. Anyways I hope you have a good day!"}]...
|
Title: Capyware games by @Alafandri | Stardance
D Title: Capyware games by @Alafandri | Stardance
Devlogs:
Hey everyone! I have started working on a warioware style game. This game is going to be themed around a capybara who you got to make happy. So far I have finished with the first level. I have pretty much all of the art done but the systems havent been implemented yet though. I also have the last level somewhat done but it still needs quite a bit configuration still. Anyways I hope you have a good day!
Hey everyone! The game is finally done! I added music to the game and finished all of the levels. The game is now ready for release! Have a nice day, and have fun playing the game!
Hey everyone! Since I finished the first warioware game mission I have decided to take on the second one where you expand the game! I have added 2 new levels to my current game that are very different from the pervious ones since I didn’t want to copy the exisiting ones. I’m not going to spoil what it is though but I will say that I like how they turned out! Have fun!
Ships:
I made a simple fast paced warioware game. This game is all about filling the needs of a cute little capybara. This projects biggest challenge was for me the art. Since I am no artist, nailing the artstyle and getting the sprites to look good was definitely a challenge for me. But I managed and learned alot while making it. So I guess I could say that I am most proud of the art in the game. People planning on playing it should know that have fun!
I made a warioware style game on godot. The post challenging part was making the art. So I can say that i am also very proud of the outcome of it. People who playtest the game remember, that the longer you hold space the higher you will jump!...
|
1792993772.0718014
|
1793080172.0718014
|
|
45819
|
LarpOS™ by @NotALarp | Stardance
|
|
2
|
8.0
|
22
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T14:34:16Z", "hours": 4.0, "multiplier": 4.92, "payout": 22, "blessing": "neutral", "text": "LARPERS ITS FINALLY READY!!! 🔥🔥🔥 After 2 hours of straight grinding, I locked in and larped up my second ship! I finished up my CSS, updated my script.js and spent a rlly long time bug fixing, but finally I have a finished OS which you can find at Anycircle11139s.github.io/LarpOS New Features: Styling has been insanely updated and themed to fit align with MacOS’s traffic lights. A new settings window allows you to change the theme between light and dark There are now apps which are displayed in the “home screen” (idk what to call it) which open and close by clicking the app and closing it with the red button. You can resize windows by grabbing the bottom-right of a windows and moving your mouse Much more which you can find out yourself as you explore the LarpOS™", "repo": "https://github.com/Anycircle11139s/LarpOS", "demo": "https://anycircle11139s.github.io/LarpOS/"}, {"ship_num": 2, "ts": "2026-08-10T06:22:35Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a custom OS about Larping named LarpOS. I wanted to create it because my friend made his own web OS and I found it really cool. Also my name is NotALarp so I thought it would be a cool thing to make it about. I used “Larp Larp Larp Sahur” as my background image and created multiple windows, an about me, a link the “How To Larp Like A Boss” and a new feature, an interactive terminal that you can mess around with.", "repo": "https://github.com/Anycircle11139s/LarpOS", "demo": "https://anycircle11139s.github.io/LarpOS/"}]...
|
[{"post_id": 45162, "ts": "202 [{"post_id": 45162, "ts": "2026-08-11T14:07:13Z", "hours": 2.0394, "text": "LARPERS ITS FINALLY READY!!! 🔥🔥🔥 I locked in for 4 hours and finally larped up the final version of my seconds ship which rebuilt my OS from the ground up. There are now apps (I used letters for app logo place holders which I might add later) that open and close. It is themed on MacOS with the traffic lights and more. You can resize the windows by dragging the bottom-right around and the rest is for you to find out as you use my creation, LarpOS™ And with that, my second ship is done, thanks for all your support my fellow Larpers. Peace out, NotALarp ✌️"}, {"post_id": 45069, "ts": "2026-08-11T10:25:40Z", "hours": 2.3981, "text": "WHATSUP MY FELLOW LAPERS?? 👋 What I achieved: I started working on a massive revamp and added a style.css file to the project. I also added apps and used some mac emojis as place holders. As a wise man (NotALarp) once said - “The Larp never ends” But for now, I will have to end this devlog and see y’all later, peace out. ✌️"}, {"post_id": 44407, "ts": "2026-08-10T04:07:38Z", "hours": 1.28, "text": "Worked on project enough for submission and added terminal"}, {"post_id": 43930, "ts": "2026-08-09T11:45:46Z", "hours": 0.9589, "text": "LARPED AWAY AND ADDED A BUNCH OF STUFF🎉🎉 LarpOS™ is really coming together!! I turned the window into an actual, draggable window and I added the taskbar at the top which has the LarpOS™ name, a link to the github code and a clock so you can track what time it is as you larp!!! ✨👏🎉🎉"}, {"post_id": 43819, "ts": "2026-08-09T07:54:56Z", "hours": 1.735, "text": "#Larping is LARP LARP LARP SAHUR! 🔥🔥🔥 I decided to create my very own web OS, LarpOS™ I Larped the webOS guide and created an image for the background and added a window. Lowkey, I wasn’t feeling it at the start because tung tung wasn’t locked in 💀, but then I added a bunch of styling and its looking great now!!! 👍"}]...
|
Title: LarpOS™ by @NotALarp | Stardance
Devlogs:
Title: LarpOS™ by @NotALarp | Stardance
Devlogs:
#Larping is LARP LARP LARP SAHUR! 🔥🔥🔥 I decided to create my very own web OS, LarpOS™ I Larped the webOS guide and created an image for the background and added a window. Lowkey, I wasn’t feeling it at the start because tung tung wasn’t locked in 💀, but then I added a bunch of styling and its looking great now!!! 👍
LARPED AWAY AND ADDED A BUNCH OF STUFF🎉🎉 LarpOS™ is really coming together!! I turned the window into an actual, draggable window and I added the taskbar at the top which has the LarpOS™ name, a link to the github code and a clock so you can track what time it is as you larp!!! ✨👏🎉🎉
Worked on project enough for submission and added terminal
WHATSUP MY FELLOW LAPERS?? 👋 What I achieved: I started working on a massive revamp and added a style.css file to the project. I also added apps and used some mac emojis as place holders. As a wise man (NotALarp) once said - “The Larp never ends” But for now, I will have to end this devlog and see y’all later, peace out. ✌️
LARPERS ITS FINALLY READY!!! 🔥🔥🔥 I locked in for 4 hours and finally larped up the final version of my seconds ship which rebuilt my OS from the ground up. There are now apps (I used letters for app logo place holders which I might add later) that open and close. It is themed on MacOS with the traffic lights and more. You can resize the windows by dragging the bottom-right around and the rest is for you to find out as you use my creation, LarpOS™ And with that, my second ship is done, thanks for all your support my fellow Larpers. Peace out, NotALarp ✌️
Ships:
I made a custom OS about Larping named LarpOS. I wanted to create it because my friend made his own web OS and I found it really cool. Also my name is NotALarp so I thought it would be a cool thing to make it about. I used “Larp Larp Larp Sahur” as my background image and created multiple windows, an about me, a link the “How To Larp Like A Boss” and a new feature, an interactive terminal that you can mess around with.
LARPERS ITS FINALLY READY!!! 🔥🔥🔥 After 2 hours of straight grinding, I locked in and larped up my second ship! I finished up my CSS, updated my script.js and spent a rlly long time bug fixing, but finally I have a finished OS which you can find at Anycircle11139s.github.io/LarpOS New Features: Styling has been insanely updated and themed to fit align with MacOS’s traffic lights. A new settings window allows you to change the theme between light and dark There are now apps which are displayed in the “home screen” (idk what to call it) which open and close by clicking the app and closing it with the red button. You can resize windows by grabbing the bottom-right of a windows and moving your mouse Much more which you can find out yourself as you explore the LarpOS™...
|
1792878484.0708597
|
1793742484.0708597
|
|
45876
|
Password Keeper by @zac_i | Stardance
|
zac_i
|
2
|
22.0
|
125
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T07:29:13Z", "hours": 2.0, "multiplier": 10.92, "payout": 17, "blessing": "neutral", "text": "SHIP #2! PasswordKeeper 1.1.5 is out! Fixed a few security issues to give you the best secure experience possible! One of my ship reviews mentioned a security issue with improper salting of accounts. I have fixed this and a couple of other small bugs for security. Also, they mentioned that I hashed the credentials badly, where there could be overlaps with separate accounts, which is now fixed as well. If you are unsure how to use PasswordKeeper, have a look at SHIP #1 below and find out! Thank you so much to the person who left that review, it has helped my development heaps! P.S. Just because my README looks nice (with emojis) doesn’t mean that it’s AI. (Take a look at screenshot 2)", "repo": "https://github.com/zacianculovici/PasswordKeeper", "demo": "https://github.com/zacianculovici/PasswordKeeper/releases/latest"}, {"ship_num": 2, "ts": "2026-09-07T01:35:32Z", "hours": 20.0, "multiplier": 5.28, "payout": 108, "blessing": "neutral", "text": "I made a cool password manager application with python, to store, manage and edit your passwords and pins securely. There were many challenging parts of it, with the most notable one being how I tried to make my dialog windows appear in the centre of the screen, but ran into some problems due to dpi scaling. I am very proud of what I have achieved as I believe it shows off some of my best skills in a practical and useful app. Note: to get the latest version of PasswordKeeper, you can either download the installer/binary manually from the releases section of the GitHub repo, or you can click the download link in the readme. Then, run the installer/binary, follow the installation prompts (or extract the tarball for Linux) and you’re good to go! To try my project, it would be good to know how it actually works (obviously). When you first run it, you will see a login window like screenshot 1. Because it stores all of your data locally, you don’t have an account yet, so create one! Select the big blue “Create One” button and it will open a new window that looks like screenshot 2. Enter a username and password, and hit “Sign Up”. (The “Remember Username” checkbox is just for ease of access, so you don’t need to type out your username next time you open PasswordKeeper). IT WORKS! Now it’s time to use it: Get started by creating a category (or more) on the left, and then create some passwords for category! If you like, click the account icon in the top right corner and fiddle around with your settings (try out some nice colour themes).", "repo": "https://github.com/zacianculovici/PasswordKeeper", "demo": "https://github.com/zacianculovici/PasswordKeeper/releases/latest"}]...
|
[{"post_id": 76965, "ts": "202 [{"post_id": 76965, "ts": "2026-10-05T07:11:18Z", "hours": 1.53, "text": "Fixed security issue with PasswordKeeper! One of my ship reviews mentioned that I didn’t use proper salting in PasswordKeeper, making it slightly easier for hackers to hack it. I have fixed this as well as a couple of other tiny issues, and made v1.1.5 as secure as possible!"}, {"post_id": 63284, "ts": "2026-09-07T01:03:23Z", "hours": 0.9653, "text": "OOOOOH SO CLOSE!!!! I just found a bug in my code where it was flashing the UI every time I pressed any button or clicked the mouse! Fixed now and about to ship!"}, {"post_id": 62736, "ts": "2026-09-06T07:46:22Z", "hours": 0.7056, "text": "Devlog #9 Just finishing up! Will ship just after I have tested on Linux and MacOS!"}, {"post_id": 62048, "ts": "2026-09-05T08:45:26Z", "hours": 4.8361, "text": "Devlog #8 About to ship! Finally my project is nearly ready to ship! Just doing some tests and making sure it is complete. Release available My release is available on GitHub releases with installers ( Untested on MacOS and Linux so far ) Code updates Added: Password and Category Search Warning dialogs Refined logic and updated issues"}, {"post_id": 60146, "ts": "2026-09-02T10:17:21Z", "hours": 2.3194, "text": "Devlog # 7! Nearly shippable! (With orphans on top) ⚓ Nearly there! Hooray! My project is nearly in a shippable state where I can send it to you guys! Only a few small things to go. 🤞 👤 Account additions I still need to add account deletion/editing to my logic and UI, to make the application complete. 🗑️ Recursive deletion I fixed the issue with the orphaned passwords when you delete a category, and now it asks whether you wish to delete the all of a categories passwords before taking away those poor passwords home (How sad). I know, don’t tell me: my UI looks kinda lame. I’m going to fix the weird background colour and make it look a bit better, don’t worry."}, {"post_id": 59425, "ts": "2026-09-01T08:21:18Z", "hours": 3.2583, "text": "⚠️ NOTICE: SHIPWRIGHTS - HAVE A LOOK AT OOPS DOWN THE BOTTOM ⚠️ Devlog # 6: “Yay”, “OOPS” and “More OOPS (Not as bad)” 🎉 Yay! Got the encryption working almost perfectly! Might need someone to do hacking tests ( Not like anyone in Hack Club knows how to Hack, but anyway ) to check my security later if anyone has time (And reason). 😥 OOPS I just realised that I was supposed to be coding in a public GitHub repository the whole time, as up until now I had been coding locally and had planned to upload my code to a repository just before shipping. I have now uploaded all my code in logical development stages, and am working correctly now. (Also, I had Hackatime tracking correctly the whole time, it was just no GitHub repo that was the issue). Hope this isn’t a problem. 😕 More OOPS (Not as bad) I also realised that I missed out a pretty important part of the main category logic: How the deletion handles password dependencies. I was so focused on making the recursive rename work, that I forgot about what it should do when you delete one! I will get this fixed soon. (P.S. If anyone has noticed my (complete) overuse of brackets (parentheses), well done. Always a programmer at heart 😂😊 </>.)"}, {"post_id": 55472, "ts": "2026-08-27T10:38:15Z", "hours": 2.4072, "text": "Devlog # 5 ✏️ Renaming working! Recursive rename is working great! Dependencies automatically fix their category! 🌐 Open in browser button Added a button to open the current password’s website in the browser! 🔐 Security Just starting to add encryption and hashing! Using fernet and python hashlib . 🗃️ Unsaved changes check Added an unsaved changes check so that it doesn’t lose your unsaved changes."}, {"post_id": 52953, "ts": "2026-08-23T10:23:11Z", "hours": 0.5353, "text": "Devlog # 4 ✏️ Renaming success! Got the renaming to work perfectly for categories and passwords! Had to add loads of debugging statements to get it to work. 😵💫 Still need to add dependency checking to eliminate issues. 📋 Adding copy password button Adding a button to copy the password you are looking at quickly! Nearly working. ✔️"}, {"post_id": 51507, "ts": "2026-08-21T08:31:11Z", "hours": 1.4433, "text": "Devlog # 3 Deletion working great! Got the category/password deletion to work smoothly! No kinks so far. 🤞 Renaming Issues Hmmm… For some reason the renaming doesn’t work properly for categories or passwords. I will also have to add a dependency check so passwords don’t end up with a false category. Cloud storage update Even though I haven’t started on the cloud storage, I have done some research. Probably going to use superbase as it is secure, free and has inbuilt python API and authentication."}, {"post_id": 50177, "ts": "2026-08-19T09:17:20Z", "hours": 1.4139, "text": "Devlog #2 Save/Load/Delete/Edit Working on getting save and load working, but delete isn’t working. 🤔 Will get it fixed soon hopefully. Security (Encryption/Hashing) Currently using no encryption or hashing, but just plain json for save and load. Will convert to cryptography once basic logic is working. Cloud storage Putting a hold on cloud storage until the rest of the logic and functionality is working. Please tell me if you know of good, free, secure cloud storage options for a Python API 🙂"}, {"post_id": 45659, "ts": "2026-08-12T09:16:57Z", "hours": 2.5044, "text": "Kicked off a new python project! Redoing an old and ugly password manager in python to a fancy CustomTkinter version with multiple users and a very nice GUI. I’m mostly finished the UI, and I’m working on saving and loading locally before adding more complex cloud storage."}]...
|
Title: Password Keeper by @zac_i | Stardance
Devl Title: Password Keeper by @zac_i | Stardance
Devlogs:
Kicked off a new python project! Redoing an old and ugly password manager in python to a fancy CustomTkinter version with multiple users and a very nice GUI. I’m mostly finished the UI, and I’m working on saving and loading locally before adding more complex cloud storage.
Devlog #2 Save/Load/Delete/Edit Working on getting save and load working, but delete isn’t working. 🤔 Will get it fixed soon hopefully. Security (Encryption/Hashing) Currently using no encryption or hashing, but just plain json for save and load. Will convert to cryptography once basic logic is working. Cloud storage Putting a hold on cloud storage until the rest of the logic and functionality is working. Please tell me if you know of good, free, secure cloud storage options for a Python API 🙂
Devlog # 3 Deletion working great! Got the category/password deletion to work smoothly! No kinks so far. 🤞 Renaming Issues Hmmm… For some reason the renaming doesn’t work properly for categories or passwords. I will also have to add a dependency check so passwords don’t end up with a false category. Cloud storage update Even though I haven’t started on the cloud storage, I have done some research. Probably going to use superbase as it is secure, free and has inbuilt python API and authentication.
Devlog # 4 ✏️ Renaming success! Got the renaming to work perfectly for categories and passwords! Had to add loads of debugging statements to get it to work. 😵💫 Still need to add dependency checking to eliminate issues. 📋 Adding copy password button Adding a button to copy the password you are looking at quickly! Nearly working. ✔️
Devlog # 5 ✏️ Renaming working! Recursive rename is working great! Dependencies automatically fix their category! 🌐 Open in browser button Added a button to open the current password’s website in the browser! 🔐 Security Just starting to add encryption and hashing! Using fernet and python hashlib . 🗃️ Unsaved changes check Added an unsaved changes check so that it doesn’t lose your unsaved changes.
⚠️ NOTICE: SHIPWRIGHTS - HAVE A LOOK AT OOPS DOWN THE BOTTOM ⚠️ Devlog # 6: “Yay”, “OOPS” and “More OOPS (Not as bad)” 🎉 Yay! Got the encryption working almost perfectly! Might need someone to do hacking tests ( Not like anyone in Hack Club knows how to Hack, but anyway ) to check my security later if anyone has time (And reason). 😥 OOPS I just realised that I was supposed to be coding in a public GitHub repository the whole time, as up until now I had been coding locally and had planned to upload my code to a repository just before shipping. I have now uploaded all my code in logical development stages, and am working correctly now. (Also, I had Hackatime tracking correctly the whole time, it was just no GitHub repo that was the issue). Hope this isn’t a problem. 😕 More OOPS (Not as bad) I also realised that I missed out a pretty important part of the main category logic: How the deletion handles password dependencies. I was so focused on making the recursive rename work, that I forgot about what it should do when you delete one! I will get this fixed soon. (P.S. If anyone has noticed my (complete) overuse of brackets (parentheses), well done. Always a programmer at heart 😂😊 </>.)
Devlog # 7! Nearly shippable! (With orphans on top) ⚓ Nearly there! Hooray! My project is nearly in a shippable state where I can send it to you guys! Only a few small things to go. 🤞 👤 Account additions I still need to add account deletion/editing to my logic and UI, to make the application complete. 🗑️ Recursive deletion I fixed the issue with the orphaned passwords when you delete a category, and now it asks whether you wish to delete the all of a categories passwords before taking away those poor passwords home (How sad). I know, don’t tell me: my UI looks kinda lame. I’m going to fix the weird background colour and make it look a bit better, don’t worry.
Devlog #8 About to ship! Finally my project is nearly ready to ship! Just doing some tests and making sure it is complete. Release available My release is available on GitHub releases with installers ( Untested on MacOS and Linux so far ) Code updates Added: Password and Category Search Warning dialogs Refined logic and updated issues
Devlog #9 Just finishing up! Will ship just after I have tested on Linux and MacOS!
OOOOOH SO CLOSE!!!! I just found a bug in my code where it was flashing the UI every time I pressed any button or clicked the mouse! Fixed now and about to ship!
Fixed security issue with PasswordKeeper! One of my ship reviews mentioned that I didn’t use proper salting in PasswordKeeper, making it slightly easier for hackers to hack it. I have fixed this as well as a couple of other tiny issues, and made v1.1.5 as secure as possible!
Ships:
I made a cool password manager application with python, to store, manage and edit your passwords and pins securely. There were many challenging parts of it, with the most notable one being how I tried to make my dialog windows appear in the centre of the screen, but ran into some problems due to dpi scaling. I am very proud of what I have achieved as I believe it shows off some of my best skills in a practical and useful app. Note: to get the latest version of PasswordKeeper, you can either download the installer/binary manually from the releases section of the GitHub repo, or you can click the download link in the readme. Then, run the installer/binary, follow the installation prompts (or extract the tarball for Linux) and you’re good to go! To try my project, it would be good to know how it actually works (obviously). When you first run it, you will see a login window like screenshot 1. Because it stores all of your data locally, you don’t have an account yet, so create one! Select the big blue “Create One” button and it will open a new window that looks like screenshot 2. Enter a username and password, and hit “Sign Up”. (The “Remember Username” checkbox is just for ease of access, so you don’t need to type out your username next time you open PasswordKeeper). IT WORKS! Now it’s time to use it: Get started by creating a category (or more) on the left, and then create some passwords for category! If you like, click the account icon in the top right corner and fiddle around with your settings (try out some nice colour themes).
SHIP #2! PasswordKeeper 1.1.5 is out! Fixed a few security issues to give you the best secure experience possible! One of my ship reviews mentioned a security issue with improper salting of accounts. I have fixed this and a couple of other small bugs for security. Also, they mentioned that I hashed the credentials badly, where there could be overlaps with separate accounts, which is now fixed as well. If you are unsure how to use PasswordKeeper, have a look at SHIP #1 below and find out! Thank you so much to the person who left that review, it has helped my development heaps! P.S. Just because my README looks nice (with emojis) doesn’t mean that it’s AI. (Take a look at screenshot 2)...
|
1793101767.508954
|
1793188167.508954
|
|
45880
|
scriblinlife by @somebodyouknow | Stardance
|
somebodyouknow
|
2
|
15.92
|
70
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T07:24:08Z", "hours": 2.0, "multiplier": 3.57, "payout": 6, "blessing": "neutral", "text": "I completed scriblinlife, once and for all. I added a few features and fixed the cursor issue by shifting it to html. I also broke my code by trying to make the canvas responsive, actually I wasted one hour trying to fix it. I also fixed the sound for my scriblinlife game. Check out the other devlogs tooo.", "repo": "https://github.com/somebodyouknow66/scriblinlife", "demo": "https://scriblinlife.somebodyouknow.com/"}, {"ship_num": 2, "ts": "2026-08-16T10:20:35Z", "hours": 8.0, "multiplier": 8.18, "payout": 64, "blessing": "neutral", "text": "I made a game. Not just any game, a game that lets you explore messages in a more meaningful way in which you scribble away the coating from a message and once it is visible you can move forward to the next message. The code has been simplified so anyone can understand it, anyhow I just want you to leave your message series on my website, create a PR and then make an array. All the instructions are in the README.md. I know the scribbling sound is not actually very satisfying but I didn’t want to do the math required. I will set it in v2. The game has been a roller-coaster and will continue to be updated with other people’s messages.", "repo": "https://github.com/somebodyouknow66/scriblinlife", "demo": "https://scriblinlife.somebodyouknow.com/"}]...
|
[{"post_id": 69289, "ts": "202 [{"post_id": 69289, "ts": "2026-09-16T19:03:07Z", "hours": 0.5594, "text": "wrote the best comeback readme ever!! i really hope you enjoy reading this"}, {"post_id": 69033, "ts": "2026-09-16T07:54:50Z", "hours": 0.5486, "text": "my final devlog (i guess) after doing all the tiny fixes, such as the next button background or the speed of the stars and a lot of other small things. i have done a complete revamp on the scriblinlife project, and i hope you enjoy it. LINK: scriblinlife"}, {"post_id": 66606, "ts": "2026-09-12T13:34:14Z", "hours": 2.6703, "text": "I made something great, I made my comeback. I recently shipped and I got extremely low rating which was kinda depressing. I didn’t let that stop me, the only thing that was going on my mind was to make a perfect comeback. I would say the feedback part was very great as it really helped me understand what i did wrong. The changes: Two themes (depressing & chill) Stars animation for chill mode Chill music Button to change mode and much more. I would like you to try scriblinlife!!"}, {"post_id": 62857, "ts": "2026-09-06T11:57:47Z", "hours": 1.6386, "text": "I made the tough decision and it turned out so well… I did almost everything specified in the previous devlog. I have to say that this has got really fun to play. Please add your messages (read the readme)"}, {"post_id": 62691, "ts": "2026-09-06T05:34:09Z", "hours": 0.5017, "text": "I felt my heart get heavier as I saw the bitter truth, I saw how heavy the decision I was about to make was. I knew it was going to be difficult but I had to do what was right. Let’s not forget that the most important decisions are the difficult ones. sigh Let me give a brief overview of my pain. I stripped almost all of the main features from the game, bcz I thought of taking this game to another direction. Steer it away from all the mess I had made… I have removed: The scribbling feature itself The coat layer The moon The fireflies and a few more things. What I plan to do: A splash screen that asks you the theme: sad happy aurora and it has a guide and start button. You get taken to the page, but now instead of having a full coat layer. We will have a thin foil coat layer that will sit above our text and then people can erase it to reveal the message. I will still encourage people to add their messages through the repo bcz I really want to increase the github contributors on the repo. It looks badass, believe me."}, {"post_id": 51518, "ts": "2026-08-21T08:54:31Z", "hours": 0.6711, "text": "i finally stopped using my css shortcut to add my cursor. I added a html based cursor, and it is pretty simple and it just renders the image while i added the css to hide the default cursor. after that I had to also fix the rendering it on both the splash screen and the canvas. i did that by adding operators and on the top we had our cursor. this actually took a while bcz there were a lot of bugs spawning from nowhere bcz of this stupid cursor"}, {"post_id": 51293, "ts": "2026-08-20T21:01:18Z", "hours": 0.9347, "text": "well, actually i was trying to make the canvas more responsive. and i messed everything up. i created a system that would automatically downscale the canvas size according to the screen size. i actually just tried to divide the availble width - the padding with the default width. IT WORKED. not exactly the way, i wanted, but it looks way better. Sounds like stupid rocket science, but it was a failure. Now I am going to clean up my code. also i am debugging on why my custom cursor won’t show on the live website but will show on the"}, {"post_id": 47964, "ts": "2026-08-16T07:36:49Z", "hours": 0.8028, "text": "Woooohooo! Almost done with v1 of scribblinlife… So I just set a timeout so users can’ scribble endlessly, also added a cool eraser cursor to the game. Fixed the dropdown array errors, and also fixed the go blank errors ( once the position of the mouse was set to null the entire would go blank/crash ). TRY IT NOW! Please read the readme and plz plz add your own messages github repo I also reset my laptop and now nothing looks the way it used too 😥"}, {"post_id": 46724, "ts": "2026-08-14T05:33:23Z", "hours": 0.8089, "text": "i just wrote the readme, just fyi, i don’t write much."}, {"post_id": 45618, "ts": "2026-08-12T07:07:55Z", "hours": 0.7028, "text": "I just styled the dropdown functionality and got everything to look neat and nice."}, {"post_id": 45572, "ts": "2026-08-12T04:55:08Z", "hours": 0.4314, "text": "I just completed the dropdown functionality, which means we can have more scribbls… YAY! So what I mean is now you could go to my repo and add your own scribbl and then it would show up in the dropdown and anybody could select and play it. Also writing a readme is really painful."}, {"post_id": 44136, "ts": "2026-08-09T18:15:44Z", "hours": 0.5914, "text": "tada, i was guessing this was going to be my final devlog, I added the splash screen. I know the game already feels quite meaningful. I am always looking forward at people actually connecting with my builds, there is no better way for people to connect with my game, then allowing them to add their own scribbl (messages). I am now creating a dropdown and people can send me a list of messages they want to add on the website. If someone clicks on their scribbl in the dropdown, it loads and VOILA! The player can now read your messages. Should I add a google form or what? I mean for collecting peoples responses!"}, {"post_id": 44022, "ts": "2026-08-09T15:04:35Z", "hours": 0.4156, "text": "I set up fireflies woohoo. More personality for the game. I also resized the canvas so the fireflies would have more space to fly. I used a little bit of AI to help me with the calculations and math."}, {"post_id": 43961, "ts": "2026-08-09T12:41:24Z", "hours": 0.7517, "text": "I added a cool moon to the game. The moon is there bcz the platform was pretty blank and I wanted to give it more life. I also set this up with Konva. I added a gradient and glow animation to stop it from looking like a stupid circle in the corner. I think it gives personality to the game, let me know your thoughts."}, {"post_id": 43886, "ts": "2026-08-09T10:19:08Z", "hours": 0.9669, "text": "Set up the music and scribbling sound. I used the Tone.js library to make the scribbling sound. I used the sound “white” + the filter “highpass”. After adjusting the values and sounds for a while, I got something pretty satisfying. I found a sound on incompetech.com in the classical category called Relent. I set up Tone.js to play the sound too but bcz I use IDM alot. IDM was interfering with my application which caused me to switch to the plain audio tag. I also learnt: You can’t play audios without a user gesture Instructions: Keep scribblin’ until you see a message, once you have scribbled a message you will be allowed to move forward with an arrow at the right bottom corner. Try it out at scriblinlife.vercel.app."}, {"post_id": 43774, "ts": "2026-08-09T06:23:35Z", "hours": 2.3208, "text": "I recently worked on a game for the jame gam, called Diaper Baby. So now I am making another more meaningful game, you scribble the canvas to reveal messages and then once you have revealed it you can move on. This is the MVP, so you will probably find workarounds in the game. How the game works: I used React-konva (a library that lets you set a canvas). I set two layers, one was of text and one was of the coat layer. The coat layer stays above the text and you have the eraser tool set up, and when you erase the coat layer it reveals the message. Once the message is partially or fully revealed, the arrow is shown."}]...
|
Title: scriblinlife by @somebodyouknow | Stardance Title: scriblinlife by @somebodyouknow | Stardance
Devlogs:
I recently worked on a game for the jame gam, called Diaper Baby. So now I am making another more meaningful game, you scribble the canvas to reveal messages and then once you have revealed it you can move on. This is the MVP, so you will probably find workarounds in the game. How the game works: I used React-konva (a library that lets you set a canvas). I set two layers, one was of text and one was of the coat layer. The coat layer stays above the text and you have the eraser tool set up, and when you erase the coat layer it reveals the message. Once the message is partially or fully revealed, the arrow is shown.
Set up the music and scribbling sound. I used the Tone.js library to make the scribbling sound. I used the sound “white” + the filter “highpass”. After adjusting the values and sounds for a while, I got something pretty satisfying. I found a sound on incompetech.com in the classical category called Relent. I set up Tone.js to play the sound too but bcz I use IDM alot. IDM was interfering with my application which caused me to switch to the plain audio tag. I also learnt: You can’t play audios without a user gesture Instructions: Keep scribblin’ until you see a message, once you have scribbled a message you will be allowed to move forward with an arrow at the right bottom corner. Try it out at scriblinlife.vercel.app.
I added a cool moon to the game. The moon is there bcz the platform was pretty blank and I wanted to give it more life. I also set this up with Konva. I added a gradient and glow animation to stop it from looking like a stupid circle in the corner. I think it gives personality to the game, let me know your thoughts.
I set up fireflies woohoo. More personality for the game. I also resized the canvas so the fireflies would have more space to fly. I used a little bit of AI to help me with the calculations and math.
tada, i was guessing this was going to be my final devlog, I added the splash screen. I know the game already feels quite meaningful. I am always looking forward at people actually connecting with my builds, there is no better way for people to connect with my game, then allowing them to add their own scribbl (messages). I am now creating a dropdown and people can send me a list of messages they want to add on the website. If someone clicks on their scribbl in the dropdown, it loads and VOILA! The player can now read your messages. Should I add a google form or what? I mean for collecting peoples responses!
I just completed the dropdown functionality, which means we can have more scribbls… YAY! So what I mean is now you could go to my repo and add your own scribbl and then it would show up in the dropdown and anybody could select and play it. Also writing a readme is really painful.
I just styled the dropdown functionality and got everything to look neat and nice.
i just wrote the readme, just fyi, i don’t write much.
Woooohooo! Almost done with v1 of scribblinlife… So I just set a timeout so users can’ scribble endlessly, also added a cool eraser cursor to the game. Fixed the dropdown array errors, and also fixed the go blank errors ( once the position of the mouse was set to null the entire would go blank/crash ). TRY IT NOW! Please read the readme and plz plz add your own messages github repo I also reset my laptop and now nothing looks the way it used too 😥
well, actually i was trying to make the canvas more responsive. and i messed everything up. i created a system that would automatically downscale the canvas size according to the screen size. i actually just tried to divide the availble width - the padding with the default width. IT WORKED. not exactly the way, i wanted, but it looks way better. Sounds like stupid rocket science, but it was a failure. Now I am going to clean up my code. also i am debugging on why my custom cursor won’t show on the live website but will show on the
i finally stopped using my css shortcut to add my cursor. I added a html based cursor, and it is pretty simple and it just renders the image while i added the css to hide the default cursor. after that I had to also fix the rendering it on both the splash screen and the canvas. i did that by adding operators and on the top we had our cursor. this actually took a while bcz there were a lot of bugs spawning from nowhere bcz of this stupid cursor
I felt my heart get heavier as I saw the bitter truth, I saw how heavy the decision I was about to make was. I knew it was going to be difficult but I had to do what was right. Let’s not forget that the most important decisions are the difficult ones. sigh Let me give a brief overview of my pain. I stripped almost all of the main features from the game, bcz I thought of taking this game to another direction. Steer it away from all the mess I had made… I have removed: The scribbling feature itself The coat layer The moon The fireflies and a few more things. What I plan to do: A splash screen that asks you the theme: sad happy aurora and it has a guide and start button. You get taken to the page, but now instead of having a full coat layer. We will have a thin foil coat layer that will sit above our text and then people can erase it to reveal the message. I will still encourage people to add their messages through the repo bcz I really want to increase the github contributors on the repo. It looks badass, believe me.
I made the tough decision and it turned out so well… I did almost everything specified in the previous devlog. I have to say that this has got really fun to play. Please add your messages (read the readme)
I made something great, I made my comeback. I recently shipped and I got extremely low rating which was kinda depressing. I didn’t let that stop me, the only thing that was going on my mind was to make a perfect comeback. I would say the feedback part was very great as it really helped me understand what i did wrong. The changes: Two themes (depressing & chill) Stars animation for chill mode Chill music Button to change mode and much more. I would like you to try scriblinlife!!
my final devlog (i guess) after doing all the tiny fixes, such as the next button background or the speed of the stars and a lot of other small things. i have done a complete revamp on the scriblinlife project, and i hope you enjoy it. LINK: scriblinlife
wrote the best comeback readme ever!! i really hope you enjoy reading this
Ships:
I made a game. Not just any game, a game that lets you explore messages in a more meaningful way in which you scribble away the coating from a message and once it is visible you can move forward to the next message. The code has been simplified so anyone can understand it, anyhow I just want you to leave your message series on my website, create a PR and then make an array. All the instructions are in the README.md. I know the scribbling sound is not actually very satisfying but I didn’t want to do the math required. I will set it in v2. The game has been a roller-coaster and will continue to be updated with other people’s messages.
I completed scriblinlife, once and for all. I added a few features and fixed the cursor issue by shifting it to html. I also broke my code by trying to make the canvas responsive, actually I wasted one hour trying to fix it. I also fixed the sound for my scriblinlife game. Check out the other devlogs tooo....
|
1793087533.7517128
|
1793173933.7517128
|
|
45928
|
WebOS1 by @SarthakVishwakarma | Stardance
|
SarthakVishwakarma
|
2
|
2.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T15:24:06Z", "hours": 0.0, "multiplier": 2.97, "payout": 1, "blessing": "neutral", "text": "I just updated and add some wallpaper system in webOS1", "repo": "https://github.com/sarthakvishwakarma44-prog/WebOS1", "demo": "https://sarthakvishwakarma44-prog.github.io/WebOS1/"}, {"ship_num": 2, "ts": "2026-08-11T15:12:02Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I make a new my own WebOS. This is first project on stardance challenge by hack club. When i am writing a coding, there had been many mistakes that i make, but using AI I solved this problem and started writing script again. “By trying this project other will learn that they was also able to make their own OS and how will the OS works(basic functions). THANKYOU.", "repo": "https://github.com/sarthakvishwakarma44-prog/WebOS1", "demo": "https://sarthakvishwakarma44-prog.github.io/WebOS1/"}]...
|
[{"post_id": 51712, "ts": "202 [{"post_id": 51712, "ts": "2026-08-21T15:22:03Z", "hours": 0.3, "text": "New Update!"}, {"post_id": 45202, "ts": "2026-08-11T15:01:51Z", "hours": 0.4333, "text": "My WebOS is ready to use!"}, {"post_id": 45018, "ts": "2026-08-11T04:56:01Z", "hours": 0.4244, "text": "Working on CSS and java script for my own Web OS."}, {"post_id": 44997, "ts": "2026-08-11T04:04:07Z", "hours": 0.3464, "text": "Working on my own WebOS html code."}, {"post_id": 44702, "ts": "2026-08-10T17:19:25Z", "hours": 0.4997, "text": "Working on my own WebOS."}]...
|
Title: WebOS1 by @SarthakVishwakarma | Stardance
Title: WebOS1 by @SarthakVishwakarma | Stardance
Devlogs:
Working on my own WebOS.
Working on my own WebOS html code.
Working on CSS and java script for my own Web OS.
My WebOS is ready to use!
New Update!
Ships:
I make a new my own WebOS. This is first project on stardance challenge by hack club. When i am writing a coding, there had been many mistakes that i make, but using AI I solved this problem and started writing script again. “By trying this project other will learn that they was also able to make their own OS and how will the OS works(basic functions). THANKYOU.
I just updated and add some wallpaper system in webOS1...
|
1793087909.868183
|
1793174309.868183
|
|
45988
|
vraj's site by @vrajsanghavi | Stardance
|
vrajsanghavi
|
2
|
6.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T16:39:08Z", "hours": 1.0, "multiplier": 4.69, "payout": 3, "blessing": "neutral", "text": "i have made my website to display who i am and what i am doing…", "repo": "https://github.com/vraj2011/personal-site", "demo": "https://vraj-site.netlify.app"}, {"ship_num": 2, "ts": "2026-08-15T09:15:24Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "🚀 An interactive personal portfolio blending cricket, electronics, coding, and creative web development — built from scratch with HTML, CSS & JavaScript.", "repo": "https://github.com/vraj2011/personal-site", "demo": "https://vraj-site.netlify.app"}]...
|
[{"post_id": 48188, "ts": "202 [{"post_id": 48188, "ts": "2026-08-16T14:15:05Z", "hours": 0.2969, "text": "i have full looks now,fixed last time’s error ,done in just 20 minutes, because i lost it at then but i got it back…."}, {"post_id": 47997, "ts": "2026-08-16T08:45:06Z", "hours": 0.2939, "text": "finally, last feature is completed whole website is completed and deployed to https://vraj-site.netlify.app"}, {"post_id": 47040, "ts": "2026-08-14T17:13:26Z", "hours": 4.5283, "text": "today,i creted my website’s project.. i created most of the things today my project is ready to deploy but i will deploy it later because there’s a feature which is not here yet… it is cursor effects i will quickly work on it and deploy it.!!"}]...
|
Title: vraj's site by @vrajsanghavi | Stardanc Title: vraj's site by @vrajsanghavi | Stardance
Devlogs:
today,i creted my website’s project.. i created most of the things today my project is ready to deploy but i will deploy it later because there’s a feature which is not here yet… it is cursor effects i will quickly work on it and deploy it.!!
finally, last feature is completed whole website is completed and deployed to https://vraj-site.netlify.app
i have full looks now,fixed last time’s error ,done in just 20 minutes, because i lost it at then but i got it back….
Ships:
🚀 An interactive personal portfolio blending cricket, electronics, coding, and creative web development — built from scratch with HTML, CSS & JavaScript.
i have made my website to display who i am and what i am doing…...
|
1792878807.742525
|
1793742807.742525
|
|
46159
|
SilkyOS by @fer | Stardance
|
fer
|
2
|
6.0
|
9
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-13T08:37:05Z", "hours": 2.0, "multiplier": 4.67, "payout": 9, "blessing": "neutral", "text": "hi guys!! i updated Silky OS to v2.0. a minimalist and typo focused webOS built with HTML, CSS, and javascript inspired by minimalist aesthetic and clean digital workspaces. the key updates in v2: -a new settings app: i built the settings interface into a sidebar layout with tabs for wallpaper selection, system info&specs, and window transparency controls! new silky terminal: i added a functional terminal with commands like /help, /clear, /open [app], and /date. -new calculator app: i built and integrated a clean retro inspired calculator into the desktop workspace. -graphic refinement: cleaned up typography using instrument serif & sans and smoothed out window layering and drag behavior.", "repo": "https://github.com/ferrdlm/silky", "demo": "https://silkyos.netlify.app"}, {"ship_num": 2, "ts": "2026-08-11T01:19:13Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made silky os, it was very challenging cuz I barely had any experience doing a web os, but im very happy with the result, and yea, I know its basic but is functional and I like how it turned out!!", "repo": "https://github.com/ferrdlm/silky", "demo": "https://silkyos.netlify.app"}]...
|
[{"post_id": 46195, "ts": "202 [{"post_id": 46195, "ts": "2026-08-13T08:02:46Z", "hours": 0.8364, "text": "im almost finished!! I like it"}, {"post_id": 46180, "ts": "2026-08-13T06:41:42Z", "hours": 0.5467, "text": "i decided to also add a calculator app!"}, {"post_id": 46166, "ts": "2026-08-13T06:05:39Z", "hours": 0.5172, "text": "hi!! im going to add a settings and a terminal app for the webOS 2 mission"}, {"post_id": 44419, "ts": "2026-08-10T05:02:36Z", "hours": 0.3042, "text": "guys, finally, silky os is complete!!! I added a floating dock, dynamic active app indicators on the top bar, smooth dragging, and custom apps like music and notes, love the results!!"}, {"post_id": 44412, "ts": "2026-08-10T04:22:32Z", "hours": 1.7128, "text": "just finished part 3 & 4, I like it sooo much"}, {"post_id": 44361, "ts": "2026-08-10T02:13:18Z", "hours": 1.2928, "text": "I’ve just finished Part 2 of the guide; it’s a bit difficult for me 😭😭😭, but I like how it’s turning out!!!"}, {"post_id": 44323, "ts": "2026-08-10T00:17:41Z", "hours": 0.9736, "text": "Guys this is so difficult, but I structured the basic HTML, and put some fonts and an image"}]...
|
Title: SilkyOS by @fer | Stardance
Devlogs:
Guys Title: SilkyOS by @fer | Stardance
Devlogs:
Guys this is so difficult, but I structured the basic HTML, and put some fonts and an image
I’ve just finished Part 2 of the guide; it’s a bit difficult for me 😭😭😭, but I like how it’s turning out!!!
just finished part 3 & 4, I like it sooo much
guys, finally, silky os is complete!!! I added a floating dock, dynamic active app indicators on the top bar, smooth dragging, and custom apps like music and notes, love the results!!
hi!! im going to add a settings and a terminal app for the webOS 2 mission
i decided to also add a calculator app!
im almost finished!! I like it
Ships:
i made silky os, it was very challenging cuz I barely had any experience doing a web os, but im very happy with the result, and yea, I know its basic but is functional and I like how it turned out!!
hi guys!! i updated Silky OS to v2.0. a minimalist and typo focused webOS built with HTML, CSS, and javascript inspired by minimalist aesthetic and clean digital workspaces. the key updates in v2: -a new settings app: i built the settings interface into a sidebar layout with tabs for wallpaper selection, system info&specs, and window transparency controls! new silky terminal: i added a functional terminal with commands like /help, /clear, /open [app], and /date. -new calculator app: i built and integrated a clean retro inspired calculator into the desktop workspace. -graphic refinement: cleaned up typography using instrument serif & sans and smoothed out window layering and drag behavior....
|
1793102108.1462736
|
1793188508.1462736
|
|
46193
|
Nay's Portfolio (v2) by @Nay | Stardance
|
Nay
|
2
|
19.0
|
218
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T23:10:00Z", "hours": 12.0, "multiplier": 18.5, "payout": 218, "blessing": "neutral", "text": "I made the Home Page to my Personal Portfolio!!! Its kitted out with everything a good personal site could want, from a pretty hero, some simple GSAP scroll timeline animations, an about me, some work experience, and an excessive amount of custom artwork!!! And yet my favorite part of this page was not the artwork, but instead a moving carosol of fancy pieces of paper (read: certifications), that took me way too much time. Its scuffed, but its my scuffed. Im hoping in the future to add seperate portolio sections for both art and tech, but that is solidly a future me problem. Currently, Im quite happy with the state its in right now, and I think its at least ready to be shared :DDD", "repo": "https://github.com/Nayraiyt/V2-Portfolio", "demo": "https://nayraiyt.github.io/V2-Portfolio/"}, {"ship_num": 2, "ts": "2026-08-10T01:26:09Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made (the start) to my portfolio!!! Currently, its got the basic structure of a personal site, A flashy hero, an about-me, work experience. What I’m most proud of with this site, is the small shine animation that i put on my cards (it took so long) It gives them that shinny holographic feel, and really makes it pop. I’m also very pleased with how all the art came out, as well as the simple CSS animations (I think I’ve added clouds to every single web based project I’ve ever made…).", "repo": "https://github.com/Nayraiyt/V2-Portfolio", "demo": "https://nayraiyt.github.io/V2-Portfolio/"}]...
|
[{"post_id": 52681, "ts": "202 [{"post_id": 52681, "ts": "2026-08-22T23:03:22Z", "hours": 1.0875, "text": "The site is now more mobile friendly!!! Yippie!!! 5 commits later, after realizing that the inspect mobile looked vastly different than looking at the site on my own phone, and a little bit of patience. i also added an under construction sign for the art and tech pages."}, {"post_id": 50766, "ts": "2026-08-20T04:06:59Z", "hours": 0.6183, "text": "Added 2 more project tiles :D (they also flip, very cool, very cool!!)"}, {"post_id": 50737, "ts": "2026-08-20T02:46:14Z", "hours": 1.7692, "text": "I started work on the Art Portolio Section of my Site!!! This is very much “make it work first, then make it pretty.” I wanted to have cool flippable cards, which transition from the project asset board, to some basic info about the event/project."}, {"post_id": 49943, "ts": "2026-08-18T22:24:50Z", "hours": 1.85, "text": "I simplified the logic for my moving carosol. Each paper moves independently on a delay. It’s kinda a stupid fix to a stupid problem, but hey. If it works, dont touch it. Im just not going to breathe in its dirrection for a hot second. I also added in a little footer with contact info :D"}, {"post_id": 46443, "ts": "2026-08-13T17:32:24Z", "hours": 0.6217, "text": "Fixed Fancy Paper Carosol!!! (it loops now :DDDD)"}, {"post_id": 46133, "ts": "2026-08-13T04:37:13Z", "hours": 2.2264, "text": "What went well: Changed hero image, i think its cuter now. Added more gsap animations cuz we extra here Began with Certifications and Contacts sections Did more mobile friendly ness for smaller screen sizes What went bad: spent an unhealthy amount of time trying to get a cool infinite carosol for my fancy pieces of paper. TLDR. Its not working right now. I’ve got it to loop, but it doesnt have a smooth transition back into frame. Now its a tomorrow problem."}, {"post_id": 44952, "ts": "2026-08-11T01:47:37Z", "hours": 0.9167, "text": "Made my site marginally more mobile friendly! (also had to figure out gsap match media, so that the animations made more sense) Its also now hosted on a domain!!! (TY HACKCLUB)"}, {"post_id": 44681, "ts": "2026-08-10T16:36:18Z", "hours": 2.7003, "text": "Today was GSAP day (a very pretty JS library for smooth animations, + a bunch of other cool stuffs, but mostly the smooth animations with time lines and triggers, ect) So unfortunately, past Nay had set up a lot of their css layout in a way that was incompatable (over-use of position: absolute) with GSAP’s smooth scrolling, so i spend a while refactoring that for it to work. Yippie. I also added in smooth scroll to for the different sections of my site, with the nav bar. For transitions, i used GSAP Scroll Trigger to add subtle fade in to the work section, as well as the nav bar, which zipps across the screen when you pass over it. In the future, i want to add a plane to one of the buttons, so it looks more natural."}, {"post_id": 44336, "ts": "2026-08-10T01:01:45Z", "hours": 7.3422, "text": "OK! Dev log time >:D I wanted to make a personal portfolio this summer, before University starts to kick my butt, so here we are!!! I started by drawing out the hero on procreate. This included individual clouds, and the penguin moon, you see featured in the center. Then with some simple css animations, and 30 hand placed stars (there had gotta be a faster way to do that, but if there is i have no idea what it is…), The sky was coming together. in order to have a smooth is transition to the about me section, I wanted to have hills which fade into the same color. I think the full layout for everything in this site is grid, (because grid be the goat). I drew out the profile picture, added in a quick description, and threw in a small blurb about drinking water, because i had a very pretty drawing of a cup of water lying around that i wanted to include. Next up, i did the work experience section. Its fairly straight forwards, since i honestly took most of the text straight from my resume, and added an inset to the base so that the work cards popped a bit more. My vision for the rest of the site, is to have 2 main path ways. One leads to an art portfolio, and the other leads to a tech portfolio, depending on which one you click on. The reason i choose cards, was 100% based on the hackclub counterspell’s site, but instead with cats! I wanted them to have a holo-foil feel, so i added in a hover animation to them, that has a shine transform over the card. (its very cool, and took me a really long time so please praise it) Then, i went back and added in abunch of hover animations to the rest of the site to make it feel more alive. And, that’s about all for this log!! Thanks for scrolling if you got this far!!!"}]...
|
Title: Nay's Portfolio (v2) by @Nay | Stardanc Title: Nay's Portfolio (v2) by @Nay | Stardance
Devlogs:
OK! Dev log time >:D I wanted to make a personal portfolio this summer, before University starts to kick my butt, so here we are!!! I started by drawing out the hero on procreate. This included individual clouds, and the penguin moon, you see featured in the center. Then with some simple css animations, and 30 hand placed stars (there had gotta be a faster way to do that, but if there is i have no idea what it is…), The sky was coming together. in order to have a smooth is transition to the about me section, I wanted to have hills which fade into the same color. I think the full layout for everything in this site is grid, (because grid be the goat). I drew out the profile picture, added in a quick description, and threw in a small blurb about drinking water, because i had a very pretty drawing of a cup of water lying around that i wanted to include. Next up, i did the work experience section. Its fairly straight forwards, since i honestly took most of the text straight from my resume, and added an inset to the base so that the work cards popped a bit more. My vision for the rest of the site, is to have 2 main path ways. One leads to an art portfolio, and the other leads to a tech portfolio, depending on which one you click on. The reason i choose cards, was 100% based on the hackclub counterspell’s site, but instead with cats! I wanted them to have a holo-foil feel, so i added in a hover animation to them, that has a shine transform over the card. (its very cool, and took me a really long time so please praise it) Then, i went back and added in abunch of hover animations to the rest of the site to make it feel more alive. And, that’s about all for this log!! Thanks for scrolling if you got this far!!!
Today was GSAP day (a very pretty JS library for smooth animations, + a bunch of other cool stuffs, but mostly the smooth animations with time lines and triggers, ect) So unfortunately, past Nay had set up a lot of their css layout in a way that was incompatable (over-use of position: absolute) with GSAP’s smooth scrolling, so i spend a while refactoring that for it to work. Yippie. I also added in smooth scroll to for the different sections of my site, with the nav bar. For transitions, i used GSAP Scroll Trigger to add subtle fade in to the work section, as well as the nav bar, which zipps across the screen when you pass over it. In the future, i want to add a plane to one of the buttons, so it looks more natural.
Made my site marginally more mobile friendly! (also had to figure out gsap match media, so that the animations made more sense) Its also now hosted on a domain!!! (TY HACKCLUB)
What went well: Changed hero image, i think its cuter now. Added more gsap animations cuz we extra here Began with Certifications and Contacts sections Did more mobile friendly ness for smaller screen sizes What went bad: spent an unhealthy amount of time trying to get a cool infinite carosol for my fancy pieces of paper. TLDR. Its not working right now. I’ve got it to loop, but it doesnt have a smooth transition back into frame. Now its a tomorrow problem.
Fixed Fancy Paper Carosol!!! (it loops now :DDDD)
I simplified the logic for my moving carosol. Each paper moves independently on a delay. It’s kinda a stupid fix to a stupid problem, but hey. If it works, dont touch it. Im just not going to breathe in its dirrection for a hot second. I also added in a little footer with contact info :D
I started work on the Art Portolio Section of my Site!!! This is very much “make it work first, then make it pretty.” I wanted to have cool flippable cards, which transition from the project asset board, to some basic info about the event/project.
Added 2 more project tiles :D (they also flip, very cool, very cool!!)
The site is now more mobile friendly!!! Yippie!!! 5 commits later, after realizing that the inspect mobile looked vastly different than looking at the site on my own phone, and a little bit of patience. i also added an under construction sign for the art and tech pages.
Ships:
I made (the start) to my portfolio!!! Currently, its got the basic structure of a personal site, A flashy hero, an about-me, work experience. What I’m most proud of with this site, is the small shine animation that i put on my cards (it took so long) It gives them that shinny holographic feel, and really makes it pop. I’m also very pleased with how all the art came out, as well as the simple CSS animations (I think I’ve added clouds to every single web based project I’ve ever made…).
I made the Home Page to my Personal Portfolio!!! Its kitted out with everything a good personal site could want, from a pretty hero, some simple GSAP scroll timeline animations, an about me, some work experience, and an excessive amount of custom artwork!!! And yet my favorite part of this page was not the artwork, but instead a moving carosol of fancy pieces of paper (read: certifications), that took me way too much time. Its scuffed, but its my scuffed. Im hoping in the future to add seperate portolio sections for both art and tech, but that is solidly a future me problem. Currently, Im quite happy with the state its in right now, and I think its at least ready to be shared :DDD...
|
1792990057.4955215
|
1793076457.4955215
|
|
46399
|
Margen by @jupeme6 | Stardance
|
jupeme6
|
2
|
42.0
|
393
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T11:27:08Z", "hours": 22.0, "multiplier": 10.32, "payout": 225, "blessing": "neutral", "text": "What did you make? A markdown note editor called Margen with a digital typewriter aesthetic. Three columns: sidebar with notes, raw markdown editor, live preview. The parser is written from scratch, no library. Six betas added LaTeX support with KaTeX, a formula toolbar, dark mode, ES/EN i18n, code highlighting, PWA offline, import/export, folders with colors, linked notes via [[wiki-style]] syntax, and formula OCR via Tesseract.js. Local-first, no account, no server. What was challenging? The markdown parser broke on multi-line constructs. Rewrote it line-by-line. KaTeX loads async so had to chain CSS then JS then auto-render. Formula OCR needed a text-to-LaTeX converter since Tesseract is for text not math. What are you proud of? The parser from scratch, the formula toolbar for non-LaTeX users, and the whole thing working offline as a PWA. What should people know so they can test? Open the demo. Choose language on first launch. Click + for new note. Type markdown, see live preview. Press ? for cheat sheet. Click “formulas” for math buttons. Click camera to scan a formula. Create folders with colors. Link notes with [[Title]]. Gear icon for dark mode and language. Live demo: https://notjuangamer10.github.io/margen/ Source: https://github.com/notjuangamer10/margen", "repo": "https://github.com/NOTJuangamer10/margen", "demo": "https://notjuangamer10.github.io/margen/"}, {"ship_num": 2, "ts": "2026-08-13T14:13:11Z", "hours": 20.0, "multiplier": 8.34, "payout": 168, "blessing": "neutral", "text": "What did you make? A markdown note editor called Margen, built with a “digital typewriter” aesthetic. The app is a three-column layout: a sidebar with the list of notes, a raw markdown editor pane, and a live preview pane that renders the markdown as you type. The markdown parser is written from scratch, no marked.js or any library, just a chain of regex and line-by-line processing. Built in four planned betas, currently on Beta 3. Beta 1 was the basics: editor, preview, note list, search, auto-save. Beta 2 fixed a bug where opening a note to read it would mark it as modified, added a markdown cheat sheet accessible via a button, and rewrote the markdown parser which had bugs with lists, blockquotes and code blocks. Beta 3 added LaTeX support via KaTeX for math formulas, a formula toolbar with 16 buttons that insert LaTeX at the cursor so you don’t need to know LaTeX syntax, a dark mode with a warm dark palette, and an ES/EN language toggle. Everything is local-first, stored in localStorage, no account, no server, no tracking. The goal is a clean, offline place to write university notes with formulas, without the bloat of Notion or the online-only dependency of most editors. What was challenging? The markdown parser was the hardest part. My first version used a single regex per element type, which broke on multi-line constructs like lists and blockquotes. The blockquote bug was sneaky: after escaping HTML, the > character becomes >, but my regex was looking for > literally, so blockquotes never matched. Rewrote the parser to process line by line, opening and closing ul/ol/blockquote tags as it goes, and protecting code blocks in a temporary array so other regexes don’t touch them. The LaTeX integration had a loading order issue. KaTeX loads from CDN asynchronously, so the first renderMathInElement call would fail because the library wasn’t ready yet. Had to chain the loads: first KaTeX CSS, then KaTeX JS, then the auto-render extension, and only then try to render. If a formula has a syntax error, I set throwOnError to false so it shows the raw LaTeX instead of breaking the whole preview. The dirty flag bug from Beta 2 was a design problem. Before, every time you opened a note it would save with modificada=now and jump to the top of the sidebar, which made browsing notes frustrating. Had to track whether the user actually changed anything before marking a note as modified. What are you proud of? The markdown parser, written entirely from scratch, no library. About 150 lines of regex and line-by-line processing, handles headers, bold, italic, lists, code blocks, inline code, links, images, blockquotes and horizontal rules. The formula toolbar with 16 buttons that insert LaTeX at the cursor position, so you can write math without knowing LaTeX syntax. And the “digital typewriter” aesthetic: Bitter serif for rendered content, Inter for UI, JetBrains Mono for the raw editor, thin dividing lines instead of cards or shadows. What should people know so they can test your project? Open the demo URL. A welcome note with markdown examples appears on first launch. Click the + button in the sidebar to create a new note. Type markdown in the left pane, see it rendered live in the right pane. Click the ? button to open a markdown cheat sheet. Click the “formulas” button in the editor header to open a toolbar with 16 math buttons (square root, integral, fraction, etc.) that insert LaTeX at the cursor. Click the “ajustes” button to switch between light/dark mode and ES/EN language. Notes auto-save to localStorage, nothing is sent anywhere. Live demo: https://notjuangamer10.github.io/margen/ Source: https://github.com/notjuangamer10/margen", "repo": "https://github.com/NOTJuangamer10/margen", "demo": "https://notjuangamer10.github.io/margen/"}]...
|
[{"post_id": 53666, "ts": "202 [{"post_id": 53666, "ts": "2026-08-24T10:30:30Z", "hours": 5.8731, "text": "Margen Beta 6, the final version. Three new features.Folders with colors. You can create folders (subjects) and assign notes to them. Each folder gets a color from a preset palette. The sidebar shows a folder list above the notes, click a folder to filter. A selector in the editor header lets you assign or change the folder of the current note. Useful for organizing by subject: Calculus, Physics, Programming.Linked notes. You can now link notes together using double brackets like [[Note Title]]. The parser finds the note by title and creates a clickable link in the preview. Click it and the linked note opens. If the note doesn’t exist, it shows in red with strikethrough. Useful for connecting related topics across subjects.Formula OCR. A camera button in the editor header lets you upload a photo of a math formula. Tesseract.js extracts the text and a basic converter turns common math notation into LaTeX: ^ becomes ^{}, sqrt becomes \\sqrt{}, int becomes \\int, Greek letters get backslashed, etc. The result is inserted at the cursor wrapped in $$ for block math. It’s not perfect OCR (Tesseract is designed for text, not math) but it gives you a starting point that you can edit manually.Calling Margen complete. Six betas across editor, parser, cheat sheet, LaTeX, dark mode, i18n, code highlighting, PWA, import, export, onboarding, shortcuts, focus mode, word count, folders, linked notes and formula OCR."}, {"post_id": 53355, "ts": "2026-08-23T21:25:38Z", "hours": 7.2656, "text": "Margen 5.2. Onboarding, power features, and translation fixes.Language prompt on first launch. New users see a modal asking them to choose Spanish or English before the app loads. This was the top complaint from reviewers, who said the language toggle was hard to find.Onboarding tour. First-time visitors get a welcome screen explaining how Margen works: type markdown on the left, see it rendered on the right, press + for new note, press ? for cheat sheet, press “formulas” for math buttons. Also lists the keyboard shortcuts. Dismissible with one click.Keyboard shortcuts. Ctrl+B for bold, Ctrl+I for italic, Ctrl+N for new note, Ctrl+E for focus mode, Ctrl+S for save. The shortcuts wrap the selected text or insert empty markers if nothing is selected.Focus mode. A toggle button (or Ctrl+E) hides the sidebar so you can write without distractions. The editor and preview center on screen with a max width for comfortable reading.Word counter. A small character and word count appears in the editor header, updating live as you type.Translation fixes. The welcome note and the markdown cheat sheet now respect the language setting and switch between Spanish and English fully. Relative dates like “ahora mismo” now show as “just now” in English."}, {"post_id": 52997, "ts": "2026-08-23T11:47:00Z", "hours": 4.8347, "text": "Margen 5.1. Fixes based on reviewer feedback.Full i18n. Before, switching to English left several strings in Spanish because only parts of the UI were translated. Now everything visible translates: buttons, placeholders, footer, header, cheat sheet, settings panel, export/import labels. The language toggle updates the UI in real time without needing a reload.Strikethrough support. Added text syntax to the markdown parser for strikethrough text. Also added it to the cheat sheet.Auto-detect language. On first launch, Margen now checks the browser’s language setting and defaults to English or Spanish accordingly. The user can still override it in settings.Export as .md. The export button now opens a small menu with three options: export as HTML (downloads a standalone file, no new tab), export as Markdown (.md file), and print to PDF. Previously it only exported HTML and opened a new tab, which was annoying."}, {"post_id": 52215, "ts": "2026-08-22T09:50:08Z", "hours": 3.8311, "text": "Beta 4 of Margen, the final version. Four additions. Code syntax highlighting via highlight.js. Code blocks in the preview now get colored based on language. Works in dark mode too. Export and import. An export button downloads the current note as a standalone HTML file with markdown, LaTeX and code already rendered, and opens the print dialog so you can save it as PDF. An import button lets you load an existing .md file as a new note. PWA installable. A service worker caches the core files so the app works offline on desktop and Android. The manifest is generated dynamically. CDN assets like KaTeX and highlight.js are not cached to avoid bloat, so formulas and code highlighting need internet the first time, but the app itself, your notes and the markdown parser all work offline. Calling Margen done. Four betas: basic editor, parser fix and cheat sheet, LaTeX and dark mode, now code highlighting, import, export and PWA."}, {"post_id": 46300, "ts": "2026-08-13T13:07:03Z", "hours": 5.9975, "text": "Beta 3 of Margen adds LaTeX support, dark mode and multi-language. LaTeX is the big one. KaTeX loads from CDN the first time you need it, then renders $…$ as inline math and $$…$$ as block math. So you can write $E=mc^2$ inline or a full integral in a block. If a formula has an error it just shows the raw text instead of breaking the preview. The formula toolbar was important to me because I don’t know LaTeX syntax by heart. A “formulas” button in the editor header opens a bar with 16 buttons: square root, integral, fraction, superscript, subscript, sum, limit, Greek letters, infinity, plus-minus, inequalities, arrows. Click one and it inserts the LaTeX at the cursor position, then you just fill in the blanks. No need to remember that integral is \\int_{}^{} or that fraction is \\frac{}{}. Dark mode uses a warm dark palette instead of the usual cold gray, so it still feels like the typewriter aesthetic. The toggle is in a settings panel in the sidebar, along with an ES/EN language switch that translates the whole UI. Next version will be the last: code syntax highlighting, PDF export, and PWA installable for offline use on desktop and Android. But I’m starting to get tired, so i wil be on vacation for the next week!"}, {"post_id": 45569, "ts": "2026-08-12T04:40:53Z", "hours": 6.3206, "text": "Beta 2 of Margen fixes a usability bug and adds helpful features. Fixed the modified timestamp bug. Before, every time you opened a note to read it, it would save with modificada=now and jump to the top of the sidebar list. Now there is a dirty flag that tracks whether you actually changed anything. Opening a note to read it does not mark it as modified. The sidebar list stays stable when you are just browsing. Added a markdown cheat sheet. A ? button in the sidebar opens a floating panel with the full syntax: headers, bold, italic, lists, code blocks, links, images, blockquotes, horizontal rules. Useful for when you forget how to do something without leaving the editor. Also added a welcome note that appears on first launch with examples of every markdown feature rendered in the preview. You can delete it if you want. Changed the typography from Source Serif 4 to Bitter, a slab serif that gives a more typewriter feel without being monospaced. Still legible, but more character. I personally like this version, this is like, the base of what i want to build, i would leave it like this and thats it, but I feel that i can get better at coding if i just add more things, it would be more usefull"}, {"post_id": 45210, "ts": "2026-08-11T15:15:38Z", "hours": 7.8731, "text": "Started a new project called Margen, a markdown note editor for university notes. The idea came from wanting a clean, offline place to write notes with formulas, without the bloat of Notion or the online-only dependency of most editors. Beta 1 is the basics. A three-column layout: sidebar with the list of notes, editor pane with a monospace textarea, and a live preview pane that renders markdown as you type. The markdown parser is written from scratch, no marked.js or any library, just a chain of regex replaces handling headers, bold, italic, lists, code blocks, inline code, links, images, blockquotes and horizontal rules. The design is “digital typewriter”: white background, serif typography for the rendered content, monospace for the raw editor, thin dividing lines instead of cards or shadows. The aesthetic is deliberately calm and distraction-free, like iA Writer or Bear. Notes auto-save to localStorage 400ms after you stop typing. There is also a Ctrl+S shortcut for manual save. The sidebar shows title, first line preview and relative date for each note, and filters instantly as you type in the search bar. Next version will add subjects (folders), tags, and better organization."}]...
|
Title: Margen by @jupeme6 | Stardance
Devlogs:
St Title: Margen by @jupeme6 | Stardance
Devlogs:
Started a new project called Margen, a markdown note editor for university notes. The idea came from wanting a clean, offline place to write notes with formulas, without the bloat of Notion or the online-only dependency of most editors. Beta 1 is the basics. A three-column layout: sidebar with the list of notes, editor pane with a monospace textarea, and a live preview pane that renders markdown as you type. The markdown parser is written from scratch, no marked.js or any library, just a chain of regex replaces handling headers, bold, italic, lists, code blocks, inline code, links, images, blockquotes and horizontal rules. The design is “digital typewriter”: white background, serif typography for the rendered content, monospace for the raw editor, thin dividing lines instead of cards or shadows. The aesthetic is deliberately calm and distraction-free, like iA Writer or Bear. Notes auto-save to localStorage 400ms after you stop typing. There is also a Ctrl+S shortcut for manual save. The sidebar shows title, first line preview and relative date for each note, and filters instantly as you type in the search bar. Next version will add subjects (folders), tags, and better organization.
Beta 2 of Margen fixes a usability bug and adds helpful features. Fixed the modified timestamp bug. Before, every time you opened a note to read it, it would save with modificada=now and jump to the top of the sidebar list. Now there is a dirty flag that tracks whether you actually changed anything. Opening a note to read it does not mark it as modified. The sidebar list stays stable when you are just browsing. Added a markdown cheat sheet. A ? button in the sidebar opens a floating panel with the full syntax: headers, bold, italic, lists, code blocks, links, images, blockquotes, horizontal rules. Useful for when you forget how to do something without leaving the editor. Also added a welcome note that appears on first launch with examples of every markdown feature rendered in the preview. You can delete it if you want. Changed the typography from Source Serif 4 to Bitter, a slab serif that gives a more typewriter feel without being monospaced. Still legible, but more character. I personally like this version, this is like, the base of what i want to build, i would leave it like this and thats it, but I feel that i can get better at coding if i just add more things, it would be more usefull
Beta 3 of Margen adds LaTeX support, dark mode and multi-language. LaTeX is the big one. KaTeX loads from CDN the first time you need it, then renders $…$ as inline math and $$…$$ as block math. So you can write $E=mc^2$ inline or a full integral in a block. If a formula has an error it just shows the raw text instead of breaking the preview. The formula toolbar was important to me because I don’t know LaTeX syntax by heart. A “formulas” button in the editor header opens a bar with 16 buttons: square root, integral, fraction, superscript, subscript, sum, limit, Greek letters, infinity, plus-minus, inequalities, arrows. Click one and it inserts the LaTeX at the cursor position, then you just fill in the blanks. No need to remember that integral is \int_{}^{} or that fraction is \frac{}{}. Dark mode uses a warm dark palette instead of the usual cold gray, so it still feels like the typewriter aesthetic. The toggle is in a settings panel in the sidebar, along with an ES/EN language switch that translates the whole UI. Next version will be the last: code syntax highlighting, PDF export, and PWA installable for offline use on desktop and Android. But I’m starting to get tired, so i wil be on vacation for the next week!
Beta 4 of Margen, the final version. Four additions. Code syntax highlighting via highlight.js. Code blocks in the preview now get colored based on language. Works in dark mode too. Export and import. An export button downloads the current note as a standalone HTML file with markdown, LaTeX and code already rendered, and opens the print dialog so you can save it as PDF. An import button lets you load an existing .md file as a new note. PWA installable. A service worker caches the core files so the app works offline on desktop and Android. The manifest is generated dynamically. CDN assets like KaTeX and highlight.js are not cached to avoid bloat, so formulas and code highlighting need internet the first time, but the app itself, your notes and the markdown parser all work offline. Calling Margen done. Four betas: basic editor, parser fix and cheat sheet, LaTeX and dark mode, now code highlighting, import, export and PWA.
Margen 5.1. Fixes based on reviewer feedback.Full i18n. Before, switching to English left several strings in Spanish because only parts of the UI were translated. Now everything visible translates: buttons, placeholders, footer, header, cheat sheet, settings panel, export/import labels. The language toggle updates the UI in real time without needing a reload.Strikethrough support. Added text syntax to the markdown parser for strikethrough text. Also added it to the cheat sheet.Auto-detect language. On first launch, Margen now checks the browser’s language setting and defaults to English or Spanish accordingly. The user can still override it in settings.Export as .md. The export button now opens a small menu with three options: export as HTML (downloads a standalone file, no new tab), export as Markdown (.md file), and print to PDF. Previously it only exported HTML and opened a new tab, which was annoying.
Margen 5.2. Onboarding, power features, and translation fixes.Language prompt on first launch. New users see a modal asking them to choose Spanish or English before the app loads. This was the top complaint from reviewers, who said the language toggle was hard to find.Onboarding tour. First-time visitors get a welcome screen explaining how Margen works: type markdown on the left, see it rendered on the right, press + for new note, press ? for cheat sheet, press “formulas” for math buttons. Also lists the keyboard shortcuts. Dismissible with one click.Keyboard shortcuts. Ctrl+B for bold, Ctrl+I for italic, Ctrl+N for new note, Ctrl+E for focus mode, Ctrl+S for save. The shortcuts wrap the selected text or insert empty markers if nothing is selected.Focus mode. A toggle button (or Ctrl+E) hides the sidebar so you can write without distractions. The editor and preview center on screen with a max width for comfortable reading.Word counter. A small character and word count appears in the editor header, updating live as you type.Translation fixes. The welcome note and the markdown cheat sheet now respect the language setting and switch between Spanish and English fully. Relative dates like “ahora mismo” now show as “just now” in English.
Margen Beta 6, the final version. Three new features.Folders with colors. You can create folders (subjects) and assign notes to them. Each folder gets a color from a preset palette. The sidebar shows a folder list above the notes, click a folder to filter. A selector in the editor header lets you assign or change the folder of the current note. Useful for organizing by subject: Calculus, Physics, Programming.Linked notes. You can now link notes together using double brackets like [[Note Title]]. The parser finds the note by title and creates a clickable link in the preview. Click it and the linked note opens. If the note doesn’t exist, it shows in red with strikethrough. Useful for connecting related topics across subjects.Formula OCR. A camera button in the editor header lets you upload a photo of a math formula. Tesseract.js extracts the text and a basic converter turns common math notation into LaTeX: ^ becomes ^{}, sqrt becomes \sqrt{}, int becomes \int, Greek letters get backslashed, etc. The result is inserted at the cursor wrapped in $$ for block math. It’s not perfect OCR (Tesseract is designed for text, not math) but it gives you a starting point that you can edit manually.Calling Margen complete. Six betas across editor, parser, cheat sheet, LaTeX, dark mode, i18n, code highlighting, PWA, import, export, onboarding, shortcuts, focus mode, word count, folders, linked notes and formula OCR.
Ships:
What did you make? A markdown note editor called Margen, built with a “digital typewriter” aesthetic. The app is a three-column layout: a sidebar with the list of notes, a raw markdown editor pane, and a live preview pane that renders the markdown as you type. The markdown parser is written from scratch, no marked.js or any library, just a chain of regex and line-by-line processing. Built in four planned betas, currently on Beta 3. Beta 1 was the basics: editor, preview, note list, search, auto-save. Beta 2 fixed a bug where opening a note to read it would mark it as modified, added a markdown cheat sheet accessible via a button, and rewrote the markdown parser which had bugs with lists, blockquotes and code blocks. Beta 3 added LaTeX support via KaTeX for math formulas, a formula toolbar with 16 buttons that insert LaTeX at the cursor so you don’t need to know LaTeX syntax, a dark mode with a warm dark palette, and an ES/EN language toggle. Everything is local-first, stored in localStorage, no account, no server, no tracking. The goal is a clean, offline place to write university notes with formulas, without the bloat of Notion or the online-only dependency of most editors. What was challenging? The markdown parser was the hardest part. My first version used a single regex per element type, which broke on multi-line constructs like lists and blockquotes. The blockquote bug was sneaky: after escaping HTML, the > character becomes >, but my regex was looking for > literally, so blockquotes never matched. Rewrote the parser to process line by line, opening and closing ul/ol/blockquote tags as it goes, and protecting code blocks in a temporary array so other regexes don’t touch them. The LaTeX integration had a loading order issue. KaTeX loads from CDN asynchronously, so the first renderMathInElement call would fail because the library wasn’t ready yet. Had to chain the loads: first KaTeX CSS, then KaTeX JS, then the auto-render extension, and only then try to render. If a formula has a syntax error, I set throwOnError to false so it shows the raw LaTeX instead of breaking the whole preview. The dirty flag bug from Beta 2 was a design problem. Before, every time you opened a note it would save with modificada=now and jump to the top of the sidebar, which made browsing notes frustrating. Had to track whether the user actually changed anything before marking a note as modified. What are you proud of? The markdown parser, written entirely from scratch, no library. About 150 lines of regex and line-by-line processing, handles headers, bold, italic, lists, code blocks, inline code, links, images, blockquotes and horizontal rules. The formula toolbar with 16 buttons that insert LaTeX at the cursor position, so you can write math without knowing LaTeX syntax. And the “digital typewriter” aesthetic: Bitter serif for rendered content, Inter for UI, JetBrains Mono for the raw editor, thin dividing lines instead of cards or shadows. What should people know so they can test your project? Open the demo URL. A welcome note with markdown examples appears on first launch. Click the + button in the sidebar to create a new note. Type markdown in the left pane, see it rendered live in the right pane. Click the ? button to open a markdown cheat sheet. Click the “formulas” button in the editor header to open a toolbar with 16 math buttons (square root, integral, fraction, etc.) that insert LaTeX at the cursor. Click the “ajustes” button to switch between light/dark mode and ES/EN language. Notes auto-save to localStorage, nothing is sent anywhere. Live demo: https://notjuangamer10.github.io/margen/ Source: https://github.com/notjuangamer10/margen
What did you make? A markdown note editor called Margen with a digital typewriter aesthetic. Three columns: sidebar with notes, raw markdown editor, live preview. The parser is written from scratch, no library. Six betas added LaTeX support with KaTeX, a formula toolbar, dark mode, ES/EN i18n, code highlighting, PWA offline, import/export, folders with colors, linked notes via [[wiki-style]] syntax, and formula OCR via Tesseract.js. Local-first, no account, no server. What was challenging? The markdown parser broke on multi-line constructs. Rewrote it line-by-line. KaTeX loads async so had to chain CSS then JS then auto-render. Formula OCR needed a text-to-LaTeX converter since Tesseract is for text not math. What are you proud of? The parser from scratch, the formula toolbar for non-LaTeX users, and the whole thing working offline as a PWA. What should people know so they can test? Open the demo. Choose language on first launch. Click + for new note. Type markdown, see live preview. Press ? for cheat sheet. Click “formulas” for math buttons. Click camera to scan a formula. Create folders with colors. Link notes with [[Title]]. Gear icon for dark mode and language. Live demo: https://notjuangamer10.github.io/margen/ Source: https://github.com/notjuangamer10/margen...
|
1792878577.2213483
|
1793742577.2213483
|
|
46400
|
WebbFinder by @busy_cheesy | Stardance
|
busy_cheesy
|
2
|
18.0
|
287
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T20:22:30Z", "hours": 4.0, "multiplier": 14.95, "payout": 56, "blessing": "neutral", "text": "This is a refined version of my first ship, WebbFinder, an app made in pygame that lets you view the latest James Webb Space Telescope imagery. After reading the constructive critism left on my ship, I have gone back and made adjustments to the code, notably to improve it’s archetecture and UI, as those were the issues highlighted by the people. I have used the same image as my first ship to show the difference between the two. Now some people also said that this could be a website, but the goal of this project, which was for me to learn how to use APIs, would have been much harder to achieve with a website because I have no experience with html, js, or css. Thus, the project would have taken exponentially longer than python, which I have a lot more experience in. Testing my project truly opened my eyes to how beautiful space really is… there is so much beauty out there and so much more that we have yet to find. The hardest project as a whole still remains the initial API setup, which after several hours I got working, but the feeling of success at the end is always worth it, and I have to say I am very proud of this new version. To run the project, you can either download the exe, or just follow the installation instructions in the read me. If you want to see the simple telescope animation, this only happens if you clone the repository and delete the json file, as the exe comes with the json preloaded. I also didn’t update the json file on purpose to showcase how it updates. If you run the project, you should see the image counter increase after around 30 seconds when the request comes back. All the other features are still here: Jump to date: find the image with the closest date to the one inputted Download: 3 options, medium, large or original. The originals are sometimes very big and might take some time to download Link takes you to the ESA/WEBB website for more information about the image That’s about all there is to it. For more info look at the first ship. Thanks for having read this btw, I appreciate you :D", "repo": "https://github.com/cream-of-wheat/WebbFinder", "demo": "https://github.com/cream-of-wheat/WebbFinder/releases/tag/v1.0.1"}, {"ship_num": 2, "ts": "2026-08-20T01:25:38Z", "hours": 14.0, "multiplier": 16.78, "payout": 231, "blessing": "neutral", "text": "This is WebbFinder, an app made in pygame that lets you browse the latest James Webb Space Telescope images through the official ESA/Webb image API. This is my first time using APIs, so getting that to work was a bit of a hassle, but I thoroughly enjoyed making this project. Space is always fascinating and making something about the James Webb telescope really filled me with awe about how beautiful the universe truly is. The app works like this: If you do not have the data.json file, you will have to wait ~30 seconds for the first page to load. You will then be able to browse the latest 100 images. It is recommended to wait for the rest of the pages to load, so that it is saved and your next startup is much quicker. If you do have the data.json file, the code simply requests the latest page and compares if you already have the images, and adds any new ones. You can browse the images in chronological order, which displays the actual image, its title, the description, date, link to the ESA website, and a download option. The download option gives you 3 options: medium, large or original, each one bigger than the last. A ‘jump to date’ feature is also present, letting you choose to look at images whose date is closest to the date you have selected. To keep the feel of the app smooth, the check for new images is done in the background. This is much different from the first versions where the whole screen would freeze, so multithreading was another thing I had to familiarize myself with. Furthermore, the neighbouring five images are also preloaded to ensure that there are no stutters while viewing. Overall, I am very proud of this system that ensured a smooth browsing experience, and of the project as a whole. Thanks for having read my pitch :D", "repo": "https://github.com/cream-of-wheat/WebbFinder", "demo": "https://github.com/cream-of-wheat/WebbFinder/releases/tag/v1.0.1"}]...
|
[{"post_id": 63157, "ts": "202 [{"post_id": 63157, "ts": "2026-09-06T20:05:58Z", "hours": 2.7256, "text": "Overhauled the UI, it now looks much cleaner than the previous bare-boned look. I also made several adjustments to the code to improve it’s archetecture. Examples include splitting the code into multiple files (it was one 600+ line file before lol), and moving the download file selection to the pygame gui instead of having the manager create a hidden window with tkinter. Also added headers at the top to make it look better, as well as changing the color pallette and fixing a hover bug for the link."}, {"post_id": 51032, "ts": "2026-08-20T14:57:00Z", "hours": 1.0167, "text": "Made an exe version of the python script that holds a preloaded data.json. Had a little trouble with getting pygame_gui to install into the exe but it worked in the end. If you run the exe you should see a data.json created inside the same directory as the exe, and that is so it can be updated with the latest images"}, {"post_id": 50637, "ts": "2026-08-19T21:49:23Z", "hours": 3.3167, "text": "Final update The biggest issue in the earlier versions was the interface freezing whenever the app fetched new APi data or downloaded high-res images. To address this problem, i moved the network requests, cache updates, and image preloading onto the background threads using the threading module in python. Everything is much more smooth now. I also added an input parser that lets the user to select a specific date, which the app will find and jump to the image with the closest date. Furthermore, I added a download selector allowing users to save images in medium, large, or original quality via the native file save option. I also added a buffer system that preloads the previous and next five neighbouring images into memory (also in the background!) making the image switching instant with no lag."}, {"post_id": 49308, "ts": "2026-08-18T01:37:22Z", "hours": 3.1333, "text": "Can now view all of the James Webb space telescope images. Also optimized the manager to fetch just the first page to update the existing data file. If this file didnt exist at all, then a loading screen will display a little animation of stars while the first page loads, and upon it loading it lets the user view the images while the second page is loaded via background threading. Once all the pages have been downloaded, or it has been detected that the data already had that image, the process is stopped and the data is then saved. Also, once the user loads an image by clicking previous or next, that image is stored to avoid unnecesarily calling the same request again. Pretty exciting stuff"}, {"post_id": 48571, "ts": "2026-08-17T00:47:30Z", "hours": 4.4669, "text": "Got the app into a working state, can move forwards and backwards between images, super exciting. Extracted more info from the JSON to get the description, title, and date. UI is looking better, still a little bare. However, it is currently only possible to view the first page of images, so next devlogs will be focused on adding access to all the images, as well as improving their loading speeds. The core viewing mechanic is functional tho!"}, {"post_id": 44880, "ts": "2026-08-10T22:27:57Z", "hours": 2.8336, "text": "First time here, progress is being made. Didn’t know anything about APIs or jsons but here is the first succesful render. Biggest obstacle was figuring out how to request the image data and properly display it in pygame (of which I also knew very little about, which is why it is so barebones right now!) Foundation established, things are looking good."}]...
|
Title: WebbFinder by @busy_cheesy | Stardance
Dev Title: WebbFinder by @busy_cheesy | Stardance
Devlogs:
First time here, progress is being made. Didn’t know anything about APIs or jsons but here is the first succesful render. Biggest obstacle was figuring out how to request the image data and properly display it in pygame (of which I also knew very little about, which is why it is so barebones right now!) Foundation established, things are looking good.
Got the app into a working state, can move forwards and backwards between images, super exciting. Extracted more info from the JSON to get the description, title, and date. UI is looking better, still a little bare. However, it is currently only possible to view the first page of images, so next devlogs will be focused on adding access to all the images, as well as improving their loading speeds. The core viewing mechanic is functional tho!
Can now view all of the James Webb space telescope images. Also optimized the manager to fetch just the first page to update the existing data file. If this file didnt exist at all, then a loading screen will display a little animation of stars while the first page loads, and upon it loading it lets the user view the images while the second page is loaded via background threading. Once all the pages have been downloaded, or it has been detected that the data already had that image, the process is stopped and the data is then saved. Also, once the user loads an image by clicking previous or next, that image is stored to avoid unnecesarily calling the same request again. Pretty exciting stuff
Final update The biggest issue in the earlier versions was the interface freezing whenever the app fetched new APi data or downloaded high-res images. To address this problem, i moved the network requests, cache updates, and image preloading onto the background threads using the threading module in python. Everything is much more smooth now. I also added an input parser that lets the user to select a specific date, which the app will find and jump to the image with the closest date. Furthermore, I added a download selector allowing users to save images in medium, large, or original quality via the native file save option. I also added a buffer system that preloads the previous and next five neighbouring images into memory (also in the background!) making the image switching instant with no lag.
Made an exe version of the python script that holds a preloaded data.json. Had a little trouble with getting pygame_gui to install into the exe but it worked in the end. If you run the exe you should see a data.json created inside the same directory as the exe, and that is so it can be updated with the latest images
Overhauled the UI, it now looks much cleaner than the previous bare-boned look. I also made several adjustments to the code to improve it’s archetecture. Examples include splitting the code into multiple files (it was one 600+ line file before lol), and moving the download file selection to the pygame gui instead of having the manager create a hidden window with tkinter. Also added headers at the top to make it look better, as well as changing the color pallette and fixing a hover bug for the link.
Ships:
This is WebbFinder, an app made in pygame that lets you browse the latest James Webb Space Telescope images through the official ESA/Webb image API. This is my first time using APIs, so getting that to work was a bit of a hassle, but I thoroughly enjoyed making this project. Space is always fascinating and making something about the James Webb telescope really filled me with awe about how beautiful the universe truly is. The app works like this: If you do not have the data.json file, you will have to wait ~30 seconds for the first page to load. You will then be able to browse the latest 100 images. It is recommended to wait for the rest of the pages to load, so that it is saved and your next startup is much quicker. If you do have the data.json file, the code simply requests the latest page and compares if you already have the images, and adds any new ones. You can browse the images in chronological order, which displays the actual image, its title, the description, date, link to the ESA website, and a download option. The download option gives you 3 options: medium, large or original, each one bigger than the last. A ‘jump to date’ feature is also present, letting you choose to look at images whose date is closest to the date you have selected. To keep the feel of the app smooth, the check for new images is done in the background. This is much different from the first versions where the whole screen would freeze, so multithreading was another thing I had to familiarize myself with. Furthermore, the neighbouring five images are also preloaded to ensure that there are no stutters while viewing. Overall, I am very proud of this system that ensured a smooth browsing experience, and of the project as a whole. Thanks for having read my pitch :D
This is a refined version of my first ship, WebbFinder, an app made in pygame that lets you view the latest James Webb Space Telescope imagery. After reading the constructive critism left on my ship, I have gone back and made adjustments to the code, notably to improve it’s archetecture and UI, as those were the issues highlighted by the people. I have used the same image as my first ship to show the difference between the two. Now some people also said that this could be a website, but the goal of this project, which was for me to learn how to use APIs, would have been much harder to achieve with a website because I have no experience with html, js, or css. Thus, the project would have taken exponentially longer than python, which I have a lot more experience in. Testing my project truly opened my eyes to how beautiful space really is… there is so much beauty out there and so much more that we have yet to find. The hardest project as a whole still remains the initial API setup, which after several hours I got working, but the feeling of success at the end is always worth it, and I have to say I am very proud of this new version. To run the project, you can either download the exe, or just follow the installation instructions in the read me. If you want to see the simple telescope animation, this only happens if you clone the repository and delete the json file, as the exe comes with the json preloaded. I also didn’t update the json file on purpose to showcase how it updates. If you run the project, you should see the image counter increase after around 30 seconds when the request comes back. All the other features are still here: Jump to date: find the image with the closest date to the one inputted Download: 3 options, medium, large or original. The originals are sometimes very big and might take some time to download Link takes you to the ESA/WEBB website for more information about the image That’s about all there is to it. For more info look at the first ship. Thanks for having read this btw, I appreciate you :D...
|
1793094824.1843984
|
1793181224.1843984
|
|
46459
|
APStudyCanvas by @derek_chen | Stardance
|
derek_chen
|
2
|
146.0
|
1942
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-25T17:25:39Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "An extension for Canvas. This works for other schools too, not just mine. Thank you all for your feedback. To install and use, please visit https://github.com/SimpleLemon/APStudyCanvas/releases and install the latest release.", "repo": "https://github.com/SimpleLemon/APStudyCanvas", "demo": "https://youtu.be/wb6AkZ6M4Q8"}, {"ship_num": 2, "ts": "2026-09-17T01:01:11Z", "hours": 133.0, "multiplier": 15.46, "payout": 1942, "blessing": "neutral", "text": "APStudyCanvas’s first beta release improves Canvas by improving the dashboard, a much richer To-Do experience, improved grades and course cards, synchronized streak tracking, smoother motion, and the first Google Calendar integration through Nest.APStudy. This extension adds onto CanvasRefined which similarly started due to dislike of BetterCampus’s high extension costs. Please note that this is still an early stage of the extension and bugs/optimization issues will be present. If you see any, please don’t hesitate to include comments in your feedback! They are greatly appreciated. The image below is a preview of the extension popup.", "repo": "https://github.com/SimpleLemon/APStudyCanvas", "demo": "https://youtu.be/wb6AkZ6M4Q8"}]...
|
[{"post_id": 82711, "ts": "202 [{"post_id": 82711, "ts": "2026-10-25T17:22:50Z", "hours": 5.7994, "text": "So many new features have been released since my last devlog that I forgot which was when. So for this devlog, I’ll announce a new solar system inspired progress bar where each ring represents a class. Each class orbits around a golden egg."}, {"post_id": 71578, "ts": "2026-09-21T02:45:37Z", "hours": 0.3953, "text": "Release: Beta 0.6 Link"}, {"post_id": 71562, "ts": "2026-09-21T02:00:02Z", "hours": 2.6711, "text": "Added a new orbital progress “bar” option that you can move around in 3d. I’m really happy with how it turned out."}, {"post_id": 70943, "ts": "2026-09-20T02:41:38Z", "hours": 3.76, "text": "Genuinely spent 2 hours on improving this 😭 Any design suggestions? I went with a compact streak button in the same line as the To-Do List instead of a large section above it to give more screen space to the assignments list. The large center is an egg surrounded by fire (because the extension is built under Nest.APStudy. So nests –> eggs) The motivational message also has a fun easter egg: one exclamation mark is rare and two exclamation mark messages are ultra rare. Just something to look forward to everyday."}, {"post_id": 69421, "ts": "2026-09-17T00:57:48Z", "hours": 2.2194, "text": "Still doesn’t look quite there yet, but more design UI will go into this including graphs and previous assignment history and how it affects your overall course grade."}, {"post_id": 68251, "ts": "2026-09-14T19:43:05Z", "hours": 8.8794, "text": "Improvement on the design! What do we think? Better rainbow, better sidebar, better assignment details, better streak, better due list, etc."}, {"post_id": 66008, "ts": "2026-09-11T15:02:04Z", "hours": 7.2456, "text": "Working on moving the 4 pages (Grades, Planner, Notes, and Study) to the popup UI and making it look nice."}, {"post_id": 64480, "ts": "2026-09-08T22:10:08Z", "hours": 3.4811, "text": "Settings design update! Went with an ios settings design"}, {"post_id": 63946, "ts": "2026-09-08T01:05:50Z", "hours": 8.5072, "text": "Looking better now! Now time to get some features to actually work properly (ie the 4 extension added pages)"}, {"post_id": 63211, "ts": "2026-09-06T21:51:20Z", "hours": 11.9767, "text": "Mildly messed up the settings page :("}, {"post_id": 61898, "ts": "2026-09-05T02:12:56Z", "hours": 9.4814, "text": "Heavily touched up that todo section & card appearance. Still got lots of issues to work on.As for new features, I’m working on adding canvas search, grade analytics, dashboard notes, local themes, planner tasks, and a better sidebar.Given that this project was initially a fork of CanvasRefined (though it has diverged by a large amount), I’m working on adding the new features/bug fixes to this extension as well."}, {"post_id": 60335, "ts": "2026-09-02T16:49:27Z", "hours": 9.1958, "text": "AYYY its coming together! The cards are now loading properly, the settings actually controls stuff, and the rings are coming together. Though, I can’t seem to figure out how to hide courses without active assignments from the ring design. After I finish all the UI changes I can think of, I’ll go through and completely revamp the settings popup (it’s mad ugly right now)."}, {"post_id": 58999, "ts": "2026-08-31T16:04:32Z", "hours": 12.4089, "text": "I may have broken the todo list section… But I’m still working on it and improving the design. I going for a rainbow style layout with a 3 column toggle for assignments and announcements"}, {"post_id": 55680, "ts": "2026-08-27T17:22:38Z", "hours": 8.4667, "text": "Sidebar is still coming together, but we’re getting closer to a nice design now!"}, {"post_id": 54401, "ts": "2026-08-25T12:19:14Z", "hours": 12.7903, "text": "Still working on improving the sidebar, which is suprisingly difficult to make look good. As for the todo list bar, I’m hoping to make it more like a rainbow and the tasks list to be easier to read."}, {"post_id": 49880, "ts": "2026-08-18T20:38:13Z", "hours": 9.9878, "text": "I’m trying to create a design similar to this… Still a work in progress though My Canvas page now looks broken with my WIP design, which is not good :("}, {"post_id": 46904, "ts": "2026-08-14T13:27:52Z", "hours": 10.6172, "text": "Almost done with my big change!"}, {"post_id": 46153, "ts": "2026-08-13T05:12:48Z", "hours": 8.9219, "text": "Many changes coming soon! Update in the DevLog above!"}, {"post_id": 45847, "ts": "2026-08-12T16:00:24Z", "hours": 9.2033, "text": "I am starting a project by forking CanvasRefined and connecting it to Nest.APStudy.org (my productivity project), as well as adding new features to make it easier to use myself. Improvements: Rebranded the extension (whilst keeping previous creator credit). Replaced the old settings screen with the new Edit Canvas workspace and compact-to-expanded navigation (essentially redesigned the popup and settings UI with clearer categories, spacing, focus states, and reduced-motion support) Added settings search with keyboard shortcuts and accessible live status updates. Improved course-card editing with previews, custom names, codes, images, visibility controls, saving, and reset actions. Added a settings-migration runbook for moving data from CanvasRefined to APStudyCanvas. Move changes to come!"}]...
|
Title: APStudyCanvas by @derek_chen | Stardance
D Title: APStudyCanvas by @derek_chen | Stardance
Devlogs:
I am starting a project by forking CanvasRefined and connecting it to Nest.APStudy.org (my productivity project), as well as adding new features to make it easier to use myself. Improvements: Rebranded the extension (whilst keeping previous creator credit). Replaced the old settings screen with the new Edit Canvas workspace and compact-to-expanded navigation (essentially redesigned the popup and settings UI with clearer categories, spacing, focus states, and reduced-motion support) Added settings search with keyboard shortcuts and accessible live status updates. Improved course-card editing with previews, custom names, codes, images, visibility controls, saving, and reset actions. Added a settings-migration runbook for moving data from CanvasRefined to APStudyCanvas. Move changes to come!
Many changes coming soon! Update in the DevLog above!
Almost done with my big change!
I’m trying to create a design similar to this… Still a work in progress though My Canvas page now looks broken with my WIP design, which is not good :(
Still working on improving the sidebar, which is suprisingly difficult to make look good. As for the todo list bar, I’m hoping to make it more like a rainbow and the tasks list to be easier to read.
Sidebar is still coming together, but we’re getting closer to a nice design now!
I may have broken the todo list section… But I’m still working on it and improving the design. I going for a rainbow style layout with a 3 column toggle for assignments and announcements
AYYY its coming together! The cards are now loading properly, the settings actually controls stuff, and the rings are coming together. Though, I can’t seem to figure out how to hide courses without active assignments from the ring design. After I finish all the UI changes I can think of, I’ll go through and completely revamp the settings popup (it’s mad ugly right now).
Heavily touched up that todo section & card appearance. Still got lots of issues to work on.As for new features, I’m working on adding canvas search, grade analytics, dashboard notes, local themes, planner tasks, and a better sidebar.Given that this project was initially a fork of CanvasRefined (though it has diverged by a large amount), I’m working on adding the new features/bug fixes to this extension as well.
Mildly messed up the settings page :(
Looking better now! Now time to get some features to actually work properly (ie the 4 extension added pages)
Settings design update! Went with an ios settings design
Working on moving the 4 pages (Grades, Planner, Notes, and Study) to the popup UI and making it look nice.
Improvement on the design! What do we think? Better rainbow, better sidebar, better assignment details, better streak, better due list, etc.
Still doesn’t look quite there yet, but more design UI will go into this including graphs and previous assignment history and how it affects your overall course grade.
Genuinely spent 2 hours on improving this 😭 Any design suggestions? I went with a compact streak button in the same line as the To-Do List instead of a large section above it to give more screen space to the assignments list. The large center is an egg surrounded by fire (because the extension is built under Nest.APStudy. So nests –> eggs) The motivational message also has a fun easter egg: one exclamation mark is rare and two exclamation mark messages are ultra rare. Just something to look forward to everyday.
Added a new orbital progress “bar” option that you can move around in 3d. I’m really happy with how it turned out.
Release: Beta 0.6 Link
So many new features have been released since my last devlog that I forgot which was when. So for this devlog, I’ll announce a new solar system inspired progress bar where each ring represents a class. Each class orbits around a golden egg.
Ships:
APStudyCanvas’s first beta release improves Canvas by improving the dashboard, a much richer To-Do experience, improved grades and course cards, synchronized streak tracking, smoother motion, and the first Google Calendar integration through Nest.APStudy. This extension adds onto CanvasRefined which similarly started due to dislike of BetterCampus’s high extension costs. Please note that this is still an early stage of the extension and bugs/optimization issues will be present. If you see any, please don’t hesitate to include comments in your feedback! They are greatly appreciated. The image below is a preview of the extension popup.
An extension for Canvas. This works for other schools too, not just mine. Thank you all for your feedback. To install and use, please visit https://github.com/SimpleLemon/APStudyCanvas/releases and install the latest release....
|
1793004863.894945
|
1793091263.894945
|
|
46550
|
PranavOS by @pranavvpatil | Stardance
|
pranavvpatil
|
2
|
4.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-12T01:54:10Z", "hours": 1.0, "multiplier": 1.67, "payout": 1, "blessing": "neutral", "text": "I made a Web OS through the tutorial. Making the tabs draggable was challenging. You can test the web OS by visiting https://pranav-patil-don.github.io/Pranav-OS/", "repo": "https://github.com/pranav-patil-don/Pranav-OS", "demo": "https://pranav-patil-don.github.io/Pranav-OS/"}, {"ship_num": 2, "ts": "2026-08-11T14:23:43Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made an webOS project making the windows draggable and coding script.js, I am happy as i could make it ui better. I tried to pose other 2 devlogs but it say minimum of 15min code required while i have already done of 3 hours", "repo": "https://github.com/pranav-patil-don/Pranav-OS", "demo": "https://pranav-patil-don.github.io/Pranav-OS/"}]...
|
[{"post_id": 45512, "ts": "202 [{"post_id": 45512, "ts": "2026-08-12T01:46:49Z", "hours": 0.35, "text": "i have added one more thing in the about me tab of contact me section"}, {"post_id": 45501, "ts": "2026-08-12T01:24:19Z", "hours": 0.3294, "text": "I did build the web OS but there was some problem in the java script then i found out the problem the tabs weren’t draggable it took me sometime to fix it."}, {"post_id": 45160, "ts": "2026-08-11T14:02:40Z", "hours": 2.7964, "text": "I was building an Web OS named as PranavOS which has tabs like about me, terminal and notes."}]...
|
Title: PranavOS by @pranavvpatil | Stardance
Devl Title: PranavOS by @pranavvpatil | Stardance
Devlogs:
I was building an Web OS named as PranavOS which has tabs like about me, terminal and notes.
I did build the web OS but there was some problem in the java script then i found out the problem the tabs weren’t draggable it took me sometime to fix it.
i have added one more thing in the about me tab of contact me section
Ships:
i made an webOS project making the windows draggable and coding script.js, I am happy as i could make it ui better. I tried to pose other 2 devlogs but it say minimum of 15min code required while i have already done of 3 hours
I made a Web OS through the tutorial. Making the tabs draggable was challenging. You can test the web OS by visiting https://pranav-patil-don.github.io/Pranav-OS/...
|
1792993666.608257
|
1793080066.608257
|
|
46703
|
Khuwari by @TheShovel | Stardance
|
TheShovel
|
2
|
36.0
|
609
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T04:08:34Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "well, since my last ship not very long ago at all, i have kept trying to polish and perfect this. I think its in a spot where im happy with it for now :3 probably the last ship for this project (well… at least until stardance ends. I am DEFINITELY gonna work on this after as well)", "repo": "https://github.com/TheShovel/khuwari", "demo": "https://theshovel.rocks/khuwari/"}, {"ship_num": 2, "ts": "2026-08-27T19:31:42Z", "hours": 32.0, "multiplier": 19.15, "payout": 609, "blessing": "neutral", "text": "Khuwari is a free and open source animation tool that generates the frames between your keyframes with machine learning. Everything runs locally in your browser, your images and projects never leave your machine. You bring the art, it brings the inbetweens.", "repo": "https://github.com/TheShovel/khuwari", "demo": "https://theshovel.rocks/khuwari/"}]...
|
[{"post_id": 58642, "ts": "202 [{"post_id": 58642, "ts": "2026-08-31T04:06:02Z", "hours": 1.2861, "text": "i gave the interpolation model some further adjustments and tweaks and stuff to get stuff as good as i possibly could. theres surprisingly a lot of stuff you can tweak internally!"}, {"post_id": 58065, "ts": "2026-08-30T12:37:51Z", "hours": 2.3178, "text": "Hello! since my first ship, i have gotten a lot of little suggestions and bug reports, so i have worked on implementing most of them, along with other stuff that i felt would be worth adding along the way: replaced the ugly svg doodles on the home page with cool epic krita drawings made by yours truly. rip to the drawing effect though… i have re written the docs to be in markdown, and then parsed through a script to automatically build the docs from those, making it a lot easier for me to update them fixed a bunch of random ui issues and inconsistencies added filter effects to layers in the drawing tool aaaand last but not least, themes! You can now choose a theme from a couple of pre-made ones in the settings. I have also went out of my way to update the github readme to say how much stuff was made by me and how much was made by ai. Hopefully that way, i dont get falsely accused of using ai again. i am still salty about that >:("}, {"post_id": 56912, "ts": "2026-08-28T22:39:15Z", "hours": 0.6606, "text": "the shipwrights keep marking my readme as ai, even after removing the little ai i used in the first place. SO HERE IS AN ENTIRE 16 MINUTE VIDEO OF ME REWRITING THE ENTIRE README, AGAIN. What a waste of my nerves bro. 3 times. 3 times my own hand written text was called ai. actually mental"}, {"post_id": 55769, "ts": "2026-08-27T19:25:43Z", "hours": 2.3383, "text": "And so, one more project comes to an end this summer, and probably my last one before school starts! Since last time, i just did a lot of testing, gave it to people to try out, implemented some QOL features and thats it. Just polish stuff :D"}, {"post_id": 54105, "ts": "2026-08-24T22:05:41Z", "hours": 6.9142, "text": "heyyyyy. long time no see but its almost over!!!! i have started to port the krita drawing tools to the app, so you can draw your frames directly in the app!!!! ooooo crazy i know. it was actually a lot of work, and its still not done, but its getting there and im quite proud of it!!! I also have added camera controls and effects! theres a separate special layer for camera keyframes, and you can animate the camera in all kinds of ways! we also have layer blending modes and soooo much more in the app itself. I have also worked on making the website less “i vibe coded this in 20 minutes” type stuff. its getting along pretty well as well! Even put animated gifs on the front page :D"}, {"post_id": 50455, "ts": "2026-08-19T16:50:50Z", "hours": 6.5889, "text": "hiiii. been a while… but ive been hard at work! i have made a website, docs, tools for automating the docs, sound, camera and sooooo much more stuff. I also started work on a krita compatible built in image editor! So that you can edit your images directly in the software easily! Yep. well id love to write more but ill be honest i dont feel like it. Look at the github commits i guess lmao oh also its now like, super fast. so fast, it can run on your phone, hell, ive been even working on a possible mobile version, but youll only see that if it actually happens hehe. ok byeeeeee!!!!"}, {"post_id": 47650, "ts": "2026-08-15T17:57:47Z", "hours": 8.2653, "text": "hey yall!!! i finally have more stuff to show! I did quite a lot of fairly difficult stuff, that im glad is now over. First of all, the ui is a lot better (still not perfect but better), now you can do interpolation on mutiple layers, and you can interpolate TRANSPARENT IMAGES. Thats right, i just made the first ever (that i heard of) actually good video interpolator that supports transparency. How i did it? Its pretty silly. I take every pixel with opacity in the current frame of that layer, and then i assign a opaque color to it. I make sure that the color that gets chosen is not a color that is in the image, to avoid breaking it… for the 2nd step! After i replace every pixel with opacity with an opaque pixel, i interpolate the frame. The interpolation model does a great job at full images. After that, i take all of the colors i assigned to the pixels i replaced, and do the reverse operation to turn them back into transparent pixels. And ta da! Its not the fastest approach, but other stuff that i tried, like masks and so on, dont seem as good. Along with that, I have also worked on some dynamic coloring tools! Right now this is still pretty basic, but the idea is: you have a layer, you place these dots on it, you choose a color, and it will fill that shape with the color. Its pretty basic, quite slow and still buggy right now but stuff is happening!!!!"}, {"post_id": 45693, "ts": "2026-08-12T10:50:51Z", "hours": 7.7056, "text": "Hiii!!! The shovel, back at it again, with another BANGER. You know how it be. always on the grind. So i was working on cutscenes for my passion project. Its a game blah blah doesnt matter. I was animating cutscenes frame by frame and then went like “man, this sure does look choppy, and not like in a cool stylized way. I wish i could easily make more inbetweens…” and then i realized, im a software developer and i can do it!!! So i thought of all those crappy “anime in 60 fps” videos on youtube. Those are ugly, and i thought… why? and realized that its because the artists didnt intend for it to be interpolated! So what if i make an animation editor, where you can drop your frames, you can set their timing and length and all that, and then you can interpolate them with full control! So this is what this project is. So far you can drag frames in, interpolate them with a small onnx interpolation model that runs locally in your browser, you can then download the frames that look bad, fix them up, drop them back in and improve the interpolation! This sounds like it wouldnt do much but it would save someone like me soooooooo much time!"}]...
|
Title: Khuwari by @TheShovel | Stardance
Devlogs: Title: Khuwari by @TheShovel | Stardance
Devlogs:
Hiii!!! The shovel, back at it again, with another BANGER. You know how it be. always on the grind. So i was working on cutscenes for my passion project. Its a game blah blah doesnt matter. I was animating cutscenes frame by frame and then went like “man, this sure does look choppy, and not like in a cool stylized way. I wish i could easily make more inbetweens…” and then i realized, im a software developer and i can do it!!! So i thought of all those crappy “anime in 60 fps” videos on youtube. Those are ugly, and i thought… why? and realized that its because the artists didnt intend for it to be interpolated! So what if i make an animation editor, where you can drop your frames, you can set their timing and length and all that, and then you can interpolate them with full control! So this is what this project is. So far you can drag frames in, interpolate them with a small onnx interpolation model that runs locally in your browser, you can then download the frames that look bad, fix them up, drop them back in and improve the interpolation! This sounds like it wouldnt do much but it would save someone like me soooooooo much time!
hey yall!!! i finally have more stuff to show! I did quite a lot of fairly difficult stuff, that im glad is now over. First of all, the ui is a lot better (still not perfect but better), now you can do interpolation on mutiple layers, and you can interpolate TRANSPARENT IMAGES. Thats right, i just made the first ever (that i heard of) actually good video interpolator that supports transparency. How i did it? Its pretty silly. I take every pixel with opacity in the current frame of that layer, and then i assign a opaque color to it. I make sure that the color that gets chosen is not a color that is in the image, to avoid breaking it… for the 2nd step! After i replace every pixel with opacity with an opaque pixel, i interpolate the frame. The interpolation model does a great job at full images. After that, i take all of the colors i assigned to the pixels i replaced, and do the reverse operation to turn them back into transparent pixels. And ta da! Its not the fastest approach, but other stuff that i tried, like masks and so on, dont seem as good. Along with that, I have also worked on some dynamic coloring tools! Right now this is still pretty basic, but the idea is: you have a layer, you place these dots on it, you choose a color, and it will fill that shape with the color. Its pretty basic, quite slow and still buggy right now but stuff is happening!!!!
hiiii. been a while… but ive been hard at work! i have made a website, docs, tools for automating the docs, sound, camera and sooooo much more stuff. I also started work on a krita compatible built in image editor! So that you can edit your images directly in the software easily! Yep. well id love to write more but ill be honest i dont feel like it. Look at the github commits i guess lmao oh also its now like, super fast. so fast, it can run on your phone, hell, ive been even working on a possible mobile version, but youll only see that if it actually happens hehe. ok byeeeeee!!!!
heyyyyy. long time no see but its almost over!!!! i have started to port the krita drawing tools to the app, so you can draw your frames directly in the app!!!! ooooo crazy i know. it was actually a lot of work, and its still not done, but its getting there and im quite proud of it!!! I also have added camera controls and effects! theres a separate special layer for camera keyframes, and you can animate the camera in all kinds of ways! we also have layer blending modes and soooo much more in the app itself. I have also worked on making the website less “i vibe coded this in 20 minutes” type stuff. its getting along pretty well as well! Even put animated gifs on the front page :D
And so, one more project comes to an end this summer, and probably my last one before school starts! Since last time, i just did a lot of testing, gave it to people to try out, implemented some QOL features and thats it. Just polish stuff :D
the shipwrights keep marking my readme as ai, even after removing the little ai i used in the first place. SO HERE IS AN ENTIRE 16 MINUTE VIDEO OF ME REWRITING THE ENTIRE README, AGAIN. What a waste of my nerves bro. 3 times. 3 times my own hand written text was called ai. actually mental
Hello! since my first ship, i have gotten a lot of little suggestions and bug reports, so i have worked on implementing most of them, along with other stuff that i felt would be worth adding along the way: replaced the ugly svg doodles on the home page with cool epic krita drawings made by yours truly. rip to the drawing effect though… i have re written the docs to be in markdown, and then parsed through a script to automatically build the docs from those, making it a lot easier for me to update them fixed a bunch of random ui issues and inconsistencies added filter effects to layers in the drawing tool aaaand last but not least, themes! You can now choose a theme from a couple of pre-made ones in the settings. I have also went out of my way to update the github readme to say how much stuff was made by me and how much was made by ai. Hopefully that way, i dont get falsely accused of using ai again. i am still salty about that >:(
i gave the interpolation model some further adjustments and tweaks and stuff to get stuff as good as i possibly could. theres surprisingly a lot of stuff you can tweak internally!
Ships:
Khuwari is a free and open source animation tool that generates the frames between your keyframes with machine learning. Everything runs locally in your browser, your images and projects never leave your machine. You bring the art, it brings the inbetweens.
well, since my last ship not very long ago at all, i have kept trying to polish and perfect this. I think its in a spot where im happy with it for now :3 probably the last ship for this project (well… at least until stardance ends. I am DEFINITELY gonna work on this after as well)...
|
1793101724.1558228
|
1793188124.1558228
|
|
46752
|
RedeeMOD by @DoMax | Stardance
|
DoMax
|
2
|
62.38
|
1027
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-28T12:19:38Z", "hours": 20.0, "multiplier": 9.77, "payout": 203, "blessing": "neutral", "text": "After quite some time, RedeeMOD development is back! What’s new New adapter! : IOQuake 3 is officially supported on RedeeMOD! The adapter is quite complex due to engine’s hardcoded filepaths and external game loading, thus only one type of content can be loaded at a time (either an IOQuake 3 game or Quake 3 mod). API improvements : Each adapter is equipped with a setup() method that runs after adding a game - useful for first-time initialization instead of prompting user for setup steps. Mod adapters can limit the amount of mods they allow selected at once. Game configurations are isolated now, so every game can work on its own requiring no modifications to unrelated files! Tests! : RedeeMOD has automated integration and unit tests implemented. Layout changes : The layout was tweaked a bit to be more usable. Changes mainly made to card positioning, so Add Game and Add Mod cards are always shown first. I hope that many of you will enjoy this project. Even better if you try to script adapters of games that YOU think are important! Remember, that you can always resort to the Contributing Guide on GitHub ! And, of course, leave a nice review if you think RedeeMOD is worth one ;)", "repo": "https://github.com/domasles/redeemod", "demo": "https://github.com/domasles/redeemod/releases/latest"}, {"ship_num": 2, "ts": "2026-08-23T18:42:23Z", "hours": 38.0, "multiplier": 18.45, "payout": 824, "blessing": "neutral", "text": "Modding (some) games has never been easier! I present to you - RedeeMOD , a mod launcher that lets anyone mod games with ease! RedeeMOD was first created for modding Unreal Tournament games, but due to its expandable nature, anyone who knows Python can write a little script and expand RedeeMOD’s game selection for any game imaginable! What are its core features? Glad you asked! Here’s what you get out of the box: Automatic game discovery - RedeeMOD finds your game installations all by itself! A real mod library - every game gets its own mod collection. Add mods once and toggle them whenever you like Custom path overrides - is your game installed somewhere weird? Just point at it and carry on Cross-platform frontend - built with Python and PySide6 (Qt6), so it runs natively on both Windows and Linux! (macOS should also work, but I can’t test that - I own no apple gear) And here’s my favorite part: mods never mess up the vanilla game! Which games are supported? As of today: Unreal Tournament ’99 - mods are loaded through automatic INI patching Unreal Tournament 2004 - mods are stitched together into a package and loaded using the game’s own -mod mechanism Both games are available to download from OldUnreal page, FOR FREE ! What about other games? Can I add them myself? Absolutely! This is where RedeeMOD shines - every game is just an adapter. It knows three things about a game: What’s it called Where it might live How to launch it with mods I even prepared a guide just for that! If a game can be modded without wrecking its installation, an adapter can be written for it. Cool! How do I get it? Head over to the Releases page and grab the app! Or if you want to Redeem the source: git clone https://github.com/domasles/redeemod.git cd redeemod pip install -e . # Omit -e flag if you are not planning to edit the source files later. Leaving it is recommended though redeemod How to use it? Download Unreal Tournament ’99 or Unreal Tournament 2004 from OldUnreal Open the game, configure your settings, and ONLY THEN add the game to RedeeMOD Download any mod you like. My recommendations: Unreal Tournament ’99 HD textures XVehicles for Unreal Tournament ’99 HaloUT for Unreal Tournament 2004 About any skin mod available (be careful, some depend on others!) Add it to your games’ Mod Library Enable the mods you feel like playing today Launch the game and enjoy ! Honesty is the most important thing A few things to know before diving in: Windows’ Smart App Control might block the unsigned executable. You can either disable it or build the app yourself. On Linux, case-sensitive filenames occasionally bite older mods - usually fixable with some renames. Unreal Tournament 2004 was designed to load one mod at a time, so stacking several can lead to conflicts. In practice? It mostly just works. Some mods might not work properly because: a. They require some GUI classes RedeeMOD can’t handle yet b. They are straight up broken Try it, break it, tell me everything I made RedeeMOD out of the frustration that some games don’t have ways of loading mods while leaving the base intact. If it happened to you before, and RedeeMOD helped, I can feel proud. Found a bug, got an idea, or want to see your favorite game in the lineup? Mind you - contributions are very welcome!", "repo": "https://github.com/domasles/redeemod", "demo": "https://github.com/domasles/redeemod/releases/latest"}]...
|
[{"post_id": 82459, "ts": "202 [{"post_id": 82459, "ts": "2026-10-24T21:33:36Z", "hours": 4.3781, "text": "Server owner? RedeeMOD is now CLI! Honestly, I wouldn’t even have thought about it if not for my other project, UT99 server container . Turns out, this is quite useful! How does it work? Like any other CLI app would. It lets anyone load mods on any game without opening the GUI. It’s useful for 2 audiences: Server owners, that need a tool that could be automated Terminal tinkerers, most likely Linux users :D After the beginning of UT99 server project one of the things I immediately thought about was modding the server, not only the client. Whether it’s a mutator, map or anything else - tinkering with individual directories can be brittle, especially in a server environment. Having a tool manage mods is much simplier and foolproof, since RedeeMOD even handles mods disposably - they don’t override the main installation, leading to a predictable setup at all times. Did anything internally change? Yes! Qt is no longer a dependency of the backend, allowing CLI app to be much smaller. The application data paths are now handled manually. The repo now also has more tests to account for new CLI features."}, {"post_id": 58008, "ts": "2026-08-30T10:53:42Z", "hours": 7.3058, "text": "Tested and working! How (and why) I implemented tests in RedeeMOD The reason behind “why” My dad is a high profile developer, and many new things I try are influenced by him. While I always liked setting up CI/CD pipelines and other automations, one thing my projects lacked was testing. Turns out, many tech jobs require knowledge about tests, because they guarantee several things: They assure that your application works as it should They document your working concept They let you make refactors that don’t hurt the functionality So, after considering these benefits, I started reading how tests are implemented. How did I implement tests for RedeeMOD? There are 3 main types of tests: Unit (where one small component is tested) Integration (where several combined components and their behaviour is tested) End to End (where full system flow from start to finish is tested) (they take a long time, so I didn’t even consider them for RedeeMOD) First thing any testable software should have is clear dependency injection. Dependency injection is a pattern where you don’t call dependencies directly, but pass them externally. I opted for implementing method argument injection that I could later use in tests. Why is DI required? Well, during testing, the external environments must be mocked and created virtually to test different use cases (things like sys.* calls and more). Luckily, RedeeMOD already had a nice and semi-testable architecture where very few things needed to be changed. Writing tests is a tedious and rather boring process, because all the edge cases must be defined. Don’t hate me for this, but I handed over writing tests to AI. My arguments for why AI is appropriate for this are: You can’t test software that hasn’t been previously written (by people) Repetitive work takes away precious time, and AI just performs checks While one could argue that Test-Driven Development exists, after trying it out I can confidently say that I’m not a fan of TDD. However, giving very broad instructions, like “Make me tests for this project” usually doesn’t go well, because AI can’t retain project philosophy and tests what doesn’t need to be tested (things that don’t contain logic, thus can’t really fail). RedeeMOD currently has a test suite based on pytest with integration and unit tests written. How tests could benefit you? With tests, instead of clicking around (and often forgetting) every edge case manually, you can offload it to a machine that does hundreds of calculations extremely fast. Not only is it a well-regarded pattern within the developer community, but also helps with coding efficiency and guards from failed refactors."}, {"post_id": 55616, "ts": "2026-08-27T16:10:59Z", "hours": 12.4111, "text": "Quake fans - I got you! Thought RedeeMOD would only be available for niche titles? Not exactly! Which Quake? Most people would probably agree with me that Quake 3 Arena was the best entry of the series for multiplayer games. After seeing just how many Quake 3 mods there are (some even being standalone games) I had to implement an adapter for it with support for both standalone games and mods! I resorted to the IOQuake 3 engine support due to its extra capabilities and being the modern choice for most, so original Id Tech 3 might not work. How does it work? IOQuake 3 inherits cvar support (and adds more!) from Id Tech 3 engine. Utilizing com_basegame , i could bypass Quake 3 Arena file presence for standalone games. What about Quake 3 MODS that are not standalone? The new adapter follows an interesting edge-case detection logic: If a mod has default.cfg file somewhere within its .pk3 files, it’s considered standalone. Other games are required to have genuine Quake 3 Arena present, about what RedeeMOD will warn. IOQuake 3 requires Quake 3 Arena or Team Arena files to be in baseq3 and missionpack directories. This adapter handles warning users against such restriction. Quake 3 Arena can’t be launched through RedeeMOD as a mod. Everything else works perfectly fine (based on testing). All mods I tested worked fine. If you find one that does not, kindly report it on GitHub issues 😄 The most challenging adapter of all No doubt, the amount of testing that was required to get this working is absurd, and definitely it was the most challenging adapter of all ."}, {"post_id": 53272, "ts": "2026-08-23T18:39:02Z", "hours": 3.8986, "text": "Pre-ship devlog! Maitenance pre-ship revealed 3 more bugs that I couldn’t live with… Bugs? What bugs? Actually, very counter-intuitive! UT99-specific : Turns out, when Unreal Tournament ’99 reads configuration and finds duplicate filenames in different directories, FIRST ENTRY DEFINED WINS , which, from coding perspective, is very unusual! Usually, if you define a variable, it can be redefined later. UT99 does not work like that, so I made the mods override any system files if they do override any. I noticed this by trying to load one of my favorite mods ever - the HD pack, which overrides system textures. Glad this bug got noticed! UT2004 skins not working : Some skin mods would not work due to the correct files not being imported on game runtime. By adding an extra file extension to the list of import files, I was able to fix this! Label truncation fails : Previously I had implemented an ElidedLabel that truncates a string and replaces the ending with ... if it is too long. In some rare instances however it failed and set a boundary on window size instead of truncating. However, it’s not an issue anymore! Error handling is better now I ran into an issue that got me confused - I couldn’t launch a game. I panicked, thought that my launcher was broken again, and only then did I realise that the game wasn’t installed! Launcher did not notify me and I got frustrated. Since I want the UX to be flawless, the best decision was to make a pop-up in case of a critical error. I gotta say - the ship is finally truly 100% ready !"}, {"post_id": 51848, "ts": "2026-08-21T18:29:00Z", "hours": 10.6333, "text": "Code, break, fix, repeat! Here’s what the final 1.0.0 release of RedeeMOD brings: Fully tested and documented! I built RedeeMOD not only as an app to manage Unreal Tournament games exclusively (though at first, that was the plan), but also as a framework to create more games in the future compatible with RedeeMOD! I recently wrote a Contribution guide that lets anyone create adapters and expand RedeeMOD by following a detailed guide! Also, as a standard practice, GitHub actions were added to help with releases. Both Windows and Linux builds work perfectly, but are unsigned, so Windows might throw Smart Screen or Smart App Control warnings. These are safe to ignore, and if they bother you too much, you can always resort to launching RedeeMOD directly through Python! Changes in code The code is formatted with Black formatter . It’s way easier to format the code using a tool than doing so manually. Also, I found some bugs that weren’t immediately noticeable. Things like: An uninitialized variable being still required in code (produces a TypeError ) Image painting events overriding each other Much more They are now fully fixed. Some inconsistencies between files have also been resolved. This latest build now features logos to feel more professional . User interface has been updated with more detailed card subtitles, so the app is easier to navigate. Overall, RedeeMOD is in its stable form for the first time ever. Now it’s just the matter of whether more adapters will be created for other games by the community! Does RedeeMOD lack something? Well, the mod management is very simple - adding, removing and enabling/disabling a mod probably doesn’t sound like the most sophisticated mod manager on the earth, but I am planning to later add a pop up that lets users customize the mods even further, like adding custom launch options, paths, even image customization, but that will require more time and I feel confident enough that the current feature set is good for the first ship. For more info on RedeeMOD, visit its GitHub repository !"}, {"post_id": 49281, "ts": "2026-08-18T00:07:57Z", "hours": 4.3475, "text": "Finally, it feels complete! What I’ve been through and why do I feel relieved So, after a LOT of trial and error, and MANY wrong paths taken, Unreal Tournament 2004 adapter is functioning! Why it took so much effort for such a simple thing UT2004 differs from UT99 in many different areas, even its modding system: It now has a dedicated -mod flag instead of using an overriden .ini file Every mod has its own mandatory structure, and UT2004 doesn’t like multiple mods loaded Mods can load diffs of system .ini files My plan was to replicate what I was doing with UT99 - building a custom mod at runtime that would bundle every enabled mod together. Since this game is quite old, so are its development sources. I resorted to the best source there is - proven to work mods. My top 3 problems with UT2004, ranked: Using empty files or ones that are with LF line endings instead of CRLF produces either a segfault or a Bad Mod error UT2004 creates a LOT of mod-specific runtime files, and they need to be cleared to be regenerated (I hate caching, as going through them all is difficult) I couldn’t get mods with heavy custom GUI usage to work, unless they’re being launched standalone, using UT2004 Community tab (which defeats the point of my launcher) Since I wanted to use the modern -mod flag, I had to make my own mod, which needs such files to function: ModDir/UT2K4Mod.ini (Name and description) ModDir/System/Default (Diffs of what to add/remove) ModDir/System/DefUser (Can be left empty, but requires at least one \\r\\n line) I’m thankful to whatever or whoever made me as patient as I am, because DefUser being absolutely empty causing a segfault or files requiring CRLF even in Linux was very unexpected, and required hours of investigation. On top of said implementation, backend framework also needed changes to ensure stability and flexibility. New methods returning more data to the game adapters were added, as well as improvements in attribute names and path handling. Bugs are always present… After testing with some edge cases, I found bugs that got resolved shortly after. Windows, as of now, works flawlessly, but I’ll be performing more tests when I distribute a full build. What’s that, some new GUI? Yes! I wanted to implement logos since the day 1 of starting this project. Surprisingly, that was one of the easiest modifications to date. Screen state tracking was also improved to provide no visual bugs after adding, removing, selecting and deselecting added material. Finally shipping, finally stable? Again, yes. All the intended functionality is verified to be working, and you can already try it out for yourself! Running python -m frontend.app from the project’s root will open up this GUI for you to play around! Over the next few days I’ll finish making all the necessary branding, README and ensure licensing is correct. Then I’ll push a final devlog and make a ship. Thank you for everyone following RedeeMOD’s journey. Keep rocking, and make the world truly Unreal !"}, {"post_id": 48536, "ts": "2026-08-16T23:19:20Z", "hours": 8.3097, "text": "UI tweaks! This looks better in my opinion After taking a look at the previous design I thought it looked quite ugly and inconsistent when some cards have center-aligned elements and others don’t. This update fixes these issues! You really spent so many hours on simple UI tweaks? Yes and no. While the primary purpose of this devlog IS to describe subtle interface change, under the hood many quality of development improvements hide as I’m trying to implement and fiddle with Unreal Tournament 2004 game adapter, which required a more streamlined API of adapter creation rather than what was previously developed. So, this devlog has hours logged from both a fully developed interface and half-developed new game adapter implementation. Stardance was warning me about getting close to 10h limit, so I must post this before diving deeper into Unreal Tournament 2004, which has way more twisted stuff within its modding system. Stay tuned and wish me luck!"}, {"post_id": 46034, "ts": "2026-08-12T23:13:59Z", "hours": 4.5775, "text": "A fresh look Expanding on the design I like, I decided to add some improvements. What improvements exactly? All these things: The launcher now supports adding multiple games (even though currently the only game supported is Unreal Tournament ’99 (more to come)) A sidebar was introduced for better UX A more user-friendly card design was expanded to become the main component interface relies on Backend experienced a bit of an overhaul too to support game/mod branching Safeguards were implemented to disallow adding multiple copies of the same mod OR directories that do NOT contain Unreal mod content Config is now stored in local paths for saving/loading added material Library tab disappears if no games are detected Wow! This is really awesome! Is it ready to be shipped? I could ship the current version, but there are exactly 3 things stopping me from doing so. I need to: Verify functionality on Windows (so it doesn’t become another Linux-only project of mine) Add verification for game paths and prompt user to enter location for both executable and config (if applicable/not found) Add Unreal Tournament 2004 functionality to leverage multiple game selection and see if it works (as well as possibly other games of the franchise, like Unreal and maybe even Unreal Tournament 2014)"}, {"post_id": 45747, "ts": "2026-08-12T13:16:35Z", "hours": 4.2758, "text": "Interface update A functional UI demo has just been made! Following a design language similar to Unreal Engine 5, I was able to make a functional UI, that can launch the game with selected mods! The UI is written with PySide6, which allows for Qt6 API to be used on Python, giving a modern development workflow, with customizable stylesheets and cross-platform capabilities. What’s next? I want to rewrite the launcher a bit to support more games in the future and be more architecturally correct , at the same time feeling more premium both from the user-facing app, and the source code too."}, {"post_id": 45266, "ts": "2026-08-11T16:50:22Z", "hours": 1.1736, "text": "Discovery - done! With the installation discovery done, I can finally focus on the real provisioning and frontend. How does it work? Utilizing common installation paths of Unreal Tournament, I could build a simple config.json file that has all this information for Windows and Linux. Then, I wrote a simple json parser, and methods to use as a simple interface for the frontend. What else currently exists? The current source tree has this functionality implemented: Filesystem utils for finding and sanitizing paths (required by Unreal Engine to load paths relative to the executable) .ini file editor (because Unreal Engine operates on .ini files for configuration, one of which allows for custom file discovery. Editing it allows injecting custom mod files) Next plans? I will try and build a user-facing application that does exactly 3 things: It discovers the installation directory (so the frontend can also act as a launcher) It lets you add folders with mod files It lets you load one or more mods (and the base game) by constructing a .ini file on the go Maybe something more will come to my mind as time passes."}, {"post_id": 45205, "ts": "2026-08-11T15:03:58Z", "hours": 0.6744, "text": "Never more excited! What am I building now? As a kid, I used to play Unreal Tournament ’99 with my dad. I always thought that game is genius - how it encompasses the soul of classic arena shooters yet still being fun to play! What is this Unreal Tournament? You’ve most likely heard of Unreal Engine. The reason it got this name is due to Epic Games’ first major game - Unreal ! While at first it acted as a competitor to Quake I and II style games with its campaign against various creatures, in a year turned to compete with upcoming genre of Arena Shooters, specifically Quake 3, focusing entirely on multiplayer. Never heard of it. Why? While the game itself was awesome not only the way it was written (with an interpreted UScript language, which lets pure UScript mods run on every platform, as well as GPU utilization), and Epic even released the last installment’s source code available to read with promises of development based on what the community wants, quickly realized the harsh reality of Arena Shooters losing market share and turned to developing Fortnite , finally shutting down official server support on 24th of January, 2023. So can I still play it anyhow? Despite cancellation of the whole series, community has stepped in and is still keeping up with modern games! Epic Games even allowed the Unreal and Unreal Tournament (original as well as 2004 version) ecosystem be maintained by a group called OldUnreal , while the latest game is available on UT4Ever , a self-hosted group of volunteers, who have rewritten Epic’s servers. And, guess what, all of this is available for free! What RedeeMOD aims to provide I am always looking at ways to modularize the software I use for maximum customization. Currently the mods follow a drag-over logic, which mixes mod files with original game’s files, rendering the original, pure and unmodified version unplayable if you ever want it back. After researching how modding architecture of Unreal Tournament ’99 works, I was able to prepare a plan on how to implement a mod loader, and started to work on it! So stay tuned, and join the Unreal Tournament community!"}]...
|
Title: RedeeMOD by @DoMax | Stardance
Devlogs:
Ne Title: RedeeMOD by @DoMax | Stardance
Devlogs:
Never more excited! What am I building now? As a kid, I used to play Unreal Tournament ’99 with my dad. I always thought that game is genius - how it encompasses the soul of classic arena shooters yet still being fun to play! What is this Unreal Tournament? You’ve most likely heard of Unreal Engine. The reason it got this name is due to Epic Games’ first major game - Unreal ! While at first it acted as a competitor to Quake I and II style games with its campaign against various creatures, in a year turned to compete with upcoming genre of Arena Shooters, specifically Quake 3, focusing entirely on multiplayer. Never heard of it. Why? While the game itself was awesome not only the way it was written (with an interpreted UScript language, which lets pure UScript mods run on every platform, as well as GPU utilization), and Epic even released the last installment’s source code available to read with promises of development based on what the community wants, quickly realized the harsh reality of Arena Shooters losing market share and turned to developing Fortnite , finally shutting down official server support on 24th of January, 2023. So can I still play it anyhow? Despite cancellation of the whole series, community has stepped in and is still keeping up with modern games! Epic Games even allowed the Unreal and Unreal Tournament (original as well as 2004 version) ecosystem be maintained by a group called OldUnreal , while the latest game is available on UT4Ever , a self-hosted group of volunteers, who have rewritten Epic’s servers. And, guess what, all of this is available for free! What RedeeMOD aims to provide I am always looking at ways to modularize the software I use for maximum customization. Currently the mods follow a drag-over logic, which mixes mod files with original game’s files, rendering the original, pure and unmodified version unplayable if you ever want it back. After researching how modding architecture of Unreal Tournament ’99 works, I was able to prepare a plan on how to implement a mod loader, and started to work on it! So stay tuned, and join the Unreal Tournament community!
Discovery - done! With the installation discovery done, I can finally focus on the real provisioning and frontend. How does it work? Utilizing common installation paths of Unreal Tournament, I could build a simple config.json file that has all this information for Windows and Linux. Then, I wrote a simple json parser, and methods to use as a simple interface for the frontend. What else currently exists? The current source tree has this functionality implemented: Filesystem utils for finding and sanitizing paths (required by Unreal Engine to load paths relative to the executable) .ini file editor (because Unreal Engine operates on .ini files for configuration, one of which allows for custom file discovery. Editing it allows injecting custom mod files) Next plans? I will try and build a user-facing application that does exactly 3 things: It discovers the installation directory (so the frontend can also act as a launcher) It lets you add folders with mod files It lets you load one or more mods (and the base game) by constructing a .ini file on the go Maybe something more will come to my mind as time passes.
Interface update A functional UI demo has just been made! Following a design language similar to Unreal Engine 5, I was able to make a functional UI, that can launch the game with selected mods! The UI is written with PySide6, which allows for Qt6 API to be used on Python, giving a modern development workflow, with customizable stylesheets and cross-platform capabilities. What’s next? I want to rewrite the launcher a bit to support more games in the future and be more architecturally correct , at the same time feeling more premium both from the user-facing app, and the source code too.
A fresh look Expanding on the design I like, I decided to add some improvements. What improvements exactly? All these things: The launcher now supports adding multiple games (even though currently the only game supported is Unreal Tournament ’99 (more to come)) A sidebar was introduced for better UX A more user-friendly card design was expanded to become the main component interface relies on Backend experienced a bit of an overhaul too to support game/mod branching Safeguards were implemented to disallow adding multiple copies of the same mod OR directories that do NOT contain Unreal mod content Config is now stored in local paths for saving/loading added material Library tab disappears if no games are detected Wow! This is really awesome! Is it ready to be shipped? I could ship the current version, but there are exactly 3 things stopping me from doing so. I need to: Verify functionality on Windows (so it doesn’t become another Linux-only project of mine) Add verification for game paths and prompt user to enter location for both executable and config (if applicable/not found) Add Unreal Tournament 2004 functionality to leverage multiple game selection and see if it works (as well as possibly other games of the franchise, like Unreal and maybe even Unreal Tournament 2014)
UI tweaks! This looks better in my opinion After taking a look at the previous design I thought it looked quite ugly and inconsistent when some cards have center-aligned elements and others don’t. This update fixes these issues! You really spent so many hours on simple UI tweaks? Yes and no. While the primary purpose of this devlog IS to describe subtle interface change, under the hood many quality of development improvements hide as I’m trying to implement and fiddle with Unreal Tournament 2004 game adapter, which required a more streamlined API of adapter creation rather than what was previously developed. So, this devlog has hours logged from both a fully developed interface and half-developed new game adapter implementation. Stardance was warning me about getting close to 10h limit, so I must post this before diving deeper into Unreal Tournament 2004, which has way more twisted stuff within its modding system. Stay tuned and wish me luck!
Finally, it feels complete! What I’ve been through and why do I feel relieved So, after a LOT of trial and error, and MANY wrong paths taken, Unreal Tournament 2004 adapter is functioning! Why it took so much effort for such a simple thing UT2004 differs from UT99 in many different areas, even its modding system: It now has a dedicated -mod flag instead of using an overriden .ini file Every mod has its own mandatory structure, and UT2004 doesn’t like multiple mods loaded Mods can load diffs of system .ini files My plan was to replicate what I was doing with UT99 - building a custom mod at runtime that would bundle every enabled mod together. Since this game is quite old, so are its development sources. I resorted to the best source there is - proven to work mods. My top 3 problems with UT2004, ranked: Using empty files or ones that are with LF line endings instead of CRLF produces either a segfault or a Bad Mod error UT2004 creates a LOT of mod-specific runtime files, and they need to be cleared to be regenerated (I hate caching, as going through them all is difficult) I couldn’t get mods with heavy custom GUI usage to work, unless they’re being launched standalone, using UT2004 Community tab (which defeats the point of my launcher) Since I wanted to use the modern -mod flag, I had to make my own mod, which needs such files to function: ModDir/UT2K4Mod.ini (Name and description) ModDir/System/Default (Diffs of what to add/remove) ModDir/System/DefUser (Can be left empty, but requires at least one \r\n line) I’m thankful to whatever or whoever made me as patient as I am, because DefUser being absolutely empty causing a segfault or files requiring CRLF even in Linux was very unexpected, and required hours of investigation. On top of said implementation, backend framework also needed changes to ensure stability and flexibility. New methods returning more data to the game adapters were added, as well as improvements in attribute names and path handling. Bugs are always present… After testing with some edge cases, I found bugs that got resolved shortly after. Windows, as of now, works flawlessly, but I’ll be performing more tests when I distribute a full build. What’s that, some new GUI? Yes! I wanted to implement logos since the day 1 of starting this project. Surprisingly, that was one of the easiest modifications to date. Screen state tracking was also improved to provide no visual bugs after adding, removing, selecting and deselecting added material. Finally shipping, finally stable? Again, yes. All the intended functionality is verified to be working, and you can already try it out for yourself! Running python -m frontend.app from the project’s root will open up this GUI for you to play around! Over the next few days I’ll finish making all the necessary branding, README and ensure licensing is correct. Then I’ll push a final devlog and make a ship. Thank you for everyone following RedeeMOD’s journey. Keep rocking, and make the world truly Unreal !
Code, break, fix, repeat! Here’s what the final 1.0.0 release of RedeeMOD brings: Fully tested and documented! I built RedeeMOD not only as an app to manage Unreal Tournament games exclusively (though at first, that was the plan), but also as a framework to create more games in the future compatible with RedeeMOD! I recently wrote a Contribution guide that lets anyone create adapters and expand RedeeMOD by following a detailed guide! Also, as a standard practice, GitHub actions were added to help with releases. Both Windows and Linux builds work perfectly, but are unsigned, so Windows might throw Smart Screen or Smart App Control warnings. These are safe to ignore, and if they bother you too much, you can always resort to launching RedeeMOD directly through Python! Changes in code The code is formatted with Black formatter . It’s way easier to format the code using a tool than doing so manually. Also, I found some bugs that weren’t immediately noticeable. Things like: An uninitialized variable being still required in code (produces a TypeError ) Image painting events overriding each other Much more They are now fully fixed. Some inconsistencies between files have also been resolved. This latest build now features logos to feel more professional . User interface has been updated with more detailed card subtitles, so the app is easier to navigate. Overall, RedeeMOD is in its stable form for the first time ever. Now it’s just the matter of whether more adapters will be created for other games by the community! Does RedeeMOD lack something? Well, the mod management is very simple - adding, removing and enabling/disabling a mod probably doesn’t sound like the most sophisticated mod manager on the earth, but I am planning to later add a pop up that lets users customize the mods even further, like adding custom launch options, paths, even image customization, but that will require more time and I feel confident enough that the current feature set is good for the first ship. For more info on RedeeMOD, visit its GitHub repository !
Pre-ship devlog! Maitenance pre-ship revealed 3 more bugs that I couldn’t live with… Bugs? What bugs? Actually, very counter-intuitive! UT99-specific : Turns out, when Unreal Tournament ’99 reads configuration and finds duplicate filenames in different directories, FIRST ENTRY DEFINED WINS , which, from coding perspective, is very unusual! Usually, if you define a variable, it can be redefined later. UT99 does not work like that, so I made the mods override any system files if they do override any. I noticed this by trying to load one of my favorite mods ever - the HD pack, which overrides system textures. Glad this bug got noticed! UT2004 skins not working : Some skin mods would not work due to the correct files not being imported on game runtime. By adding an extra file extension to the list of import files, I was able to fix this! Label truncation fails : Previously I had implemented an ElidedLabel that truncates a string and replaces the ending with ... if it is too long. In some rare instances however it failed and set a boundary on window size instead of truncating. However, it’s not an issue anymore! Error handling is better now I ran into an issue that got me confused - I couldn’t launch a game. I panicked, thought that my launcher was broken again, and only then did I realise that the game wasn’t installed! Launcher did not notify me and I got frustrated. Since I want the UX to be flawless, the best decision was to make a pop-up in case of a critical error. I gotta say - the ship is finally truly 100% ready !
Quake fans - I got you! Thought RedeeMOD would only be available for niche titles? Not exactly! Which Quake? Most people would probably agree with me that Quake 3 Arena was the best entry of the series for multiplayer games. After seeing just how many Quake 3 mods there are (some even being standalone games) I had to implement an adapter for it with support for both standalone games and mods! I resorted to the IOQuake 3 engine support due to its extra capabilities and being the modern choice for most, so original Id Tech 3 might not work. How does it work? IOQuake 3 inherits cvar support (and adds more!) from Id Tech 3 engine. Utilizing com_basegame , i could bypass Quake 3 Arena file presence for standalone games. What about Quake 3 MODS that are not standalone? The new adapter follows an interesting edge-case detection logic: If a mod has default.cfg file somewhere within its .pk3 files, it’s considered standalone. Other games are required to have genuine Quake 3 Arena present, about what RedeeMOD will warn. IOQuake 3 requires Quake 3 Arena or Team Arena files to be in baseq3 and missionpack directories. This adapter handles warning users against such restriction. Quake 3 Arena can’t be launched through RedeeMOD as a mod. Everything else works perfectly fine (based on testing). All mods I tested worked fine. If you find one that does not, kindly report it on GitHub issues 😄 The most challenging adapter of all No doubt, the amount of testing that was required to get this working is absurd, and definitely it was the most challenging adapter of all .
Tested and working! How (and why) I implemented tests in RedeeMOD The reason behind “why” My dad is a high profile developer, and many new things I try are influenced by him. While I always liked setting up CI/CD pipelines and other automations, one thing my projects lacked was testing. Turns out, many tech jobs require knowledge about tests, because they guarantee several things: They assure that your application works as it should They document your working concept They let you make refactors that don’t hurt the functionality So, after considering these benefits, I started reading how tests are implemented. How did I implement tests for RedeeMOD? There are 3 main types of tests: Unit (where one small component is tested) Integration (where several combined components and their behaviour is tested) End to End (where full system flow from start to finish is tested) (they take a long time, so I didn’t even consider them for RedeeMOD) First thing any testable software should have is clear dependency injection. Dependency injection is a pattern where you don’t call dependencies directly, but pass them externally. I opted for implementing method argument injection that I could later use in tests. Why is DI required? Well, during testing, the external environments must be mocked and created virtually to test different use cases (things like sys.* calls and more). Luckily, RedeeMOD already had a nice and semi-testable architecture where very few things needed to be changed. Writing tests is a tedious and rather boring process, because all the edge cases must be defined. Don’t hate me for this, but I handed over writing tests to AI. My arguments for why AI is appropriate for this are: You can’t test software that hasn’t been previously written (by people) Repetitive work takes away precious time, and AI just performs checks While one could argue that Test-Driven Development exists, after trying it out I can confidently say that I’m not a fan of TDD. However, giving very broad instructions, like “Make me tests for this project” usually doesn’t go well, because AI can’t retain project philosophy and tests what doesn’t need to be tested (things that don’t contain logic, thus can’t really fail). RedeeMOD currently has a test suite based on pytest with integration and unit tests written. How tests could benefit you? With tests, instead of clicking around (and often forgetting) every edge case manually, you can offload it to a machine that does hundreds of calculations extremely fast. Not only is it a well-regarded pattern within the developer community, but also helps with coding efficiency and guards from failed refactors.
Server owner? RedeeMOD is now CLI! Honestly, I wouldn’t even have thought about it if not for my other project, UT99 server container . Turns out, this is quite useful! How does it work? Like any other CLI app would. It lets anyone load mods on any game without opening the GUI. It’s useful for 2 audiences: Server owners, that need a tool that could be automated Terminal tinkerers, most likely Linux users :D After the beginning of UT99 server project one of the things I immediately thought about was modding the server, not only the client. Whether it’s a mutator, map or anything else - tinkering with individual directories can be brittle, especially in a server environment. Having a tool manage mods is much simplier and foolproof, since RedeeMOD even handles mods disposably - they don’t override the main installation, leading to a predictable setup at all times. Did anything internally change? Yes! Qt is no longer a dependency of the backend, allowing CLI app to be much smaller. The application data paths are now handled manually. The repo now also has more tests to account for new CLI features.
Ships:
Modding (some) games has never been easier! I present to you - RedeeMOD , a mod launcher that lets anyone mod games with ease! RedeeMOD was first created for modding Unreal Tournament games, but due to its expandable nature, anyone who knows Python can write a little script and expand RedeeMOD’s game selection for any game imaginable! What are its core features? Glad you asked! Here’s what you get out of the box: Automatic game discovery - RedeeMOD finds your game installations all by itself! A real mod library - every game gets its own mod collection. Add mods once and toggle them whenever you like Custom path overrides - is your game installed somewhere weird? Just point at it and carry on Cross-platform frontend - built with Python and PySide6 (Qt6), so it runs natively on both Windows and Linux! (macOS should also work, but I can’t test that - I own no apple gear) And here’s my favorite part: mods never mess up the vanilla game! Which games are supported? As of today: Unreal Tournament ’99 - mods are loaded through automatic INI patching Unreal Tournament 2004 - mods are stitched together into a package and loaded using the game’s own -mod mechanism Both games are available to download from OldUnreal page, FOR FREE ! What about other games? Can I add them myself? Absolutely! This is where RedeeMOD shines - every game is just an adapter. It knows three things about a game: What’s it called Where it might live How to launch it with mods I even prepared a guide just for that! If a game can be modded without wrecking its installation, an adapter can be written for it. Cool! How do I get it? Head over to the Releases page and grab the app! Or if you want to Redeem the source: git clone https://github.com/domasles/redeemod.git cd redeemod pip install -e . # Omit -e flag if you are not planning to edit the source files later. Leaving it is recommended though redeemod How to use it? Download Unreal Tournament ’99 or Unreal Tournament 2004 from OldUnreal Open the game, configure your settings, and ONLY THEN add the game to RedeeMOD Download any mod you like. My recommendations: Unreal Tournament ’99 HD textures XVehicles for Unreal Tournament ’99 HaloUT for Unreal Tournament 2004 About any skin mod available (be careful, some depend on others!) Add it to your games’ Mod Library Enable the mods you feel like playing today Launch the game and enjoy ! Honesty is the most important thing A few things to know before diving in: Windows’ Smart App Control might block the unsigned executable. You can either disable it or build the app yourself. On Linux, case-sensitive filenames occasionally bite older mods - usually fixable with some renames. Unreal Tournament 2004 was designed to load one mod at a time, so stacking several can lead to conflicts. In practice? It mostly just works. Some mods might not work properly because: a. They require some GUI classes RedeeMOD can’t handle yet b. They are straight up broken Try it, break it, tell me everything I made RedeeMOD out of the frustration that some games don’t have ways of loading mods while leaving the base intact. If it happened to you before, and RedeeMOD helped, I can feel proud. Found a bug, got an idea, or want to see your favorite game in the lineup? Mind you - contributions are very welcome!
After quite some time, RedeeMOD development is back! What’s new New adapter! : IOQuake 3 is officially supported on RedeeMOD! The adapter is quite complex due to engine’s hardcoded filepaths and external game loading, thus only one type of content can be loaded at a time (either an IOQuake 3 game or Quake 3 mod). API improvements : Each adapter is equipped with a setup() method that runs after adding a game - useful for first-time initialization instead of prompting user for setup steps. Mod adapters can limit the amount of mods they allow selected at once. Game configurations are isolated now, so every game can work on its own requiring no modifications to unrelated files! Tests! : RedeeMOD has automated integration and unit tests implemented. Layout changes : The layout was tweaked a bit to be more usable. Changes mainly made to card positioning, so Add Game and Add Mod cards are always shown first. I hope that many of you will enjoy this project. Even better if you try to script adapters of games that YOU think are important! Remember, that you can always resort to the Contributing Guide on GitHub ! And, of course, leave a nice review if you think RedeeMOD is worth one ;)...
|
1793102068.9683864
|
1793188468.9683864
|
|
46856
|
pi - web os by @NotSuspiciousProgrammer | Stardanc pi - web os by @NotSuspiciousProgrammer | Stardance...
|
NotSuspiciousProgrammer
|
2
|
9.0
|
24
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T00:06:08Z", "hours": 6.0, "multiplier": 3.5, "payout": 24, "blessing": "neutral", "text": "I made a PI-THEMED WEB-OS!! The most challenging part was the script for making “windows” draggable; I had to look through some tutorials for that. Either way, as a professional pi enthusiast, I’m pretty excited for this pi theme! As part of the WebOS2 Mission, I have more than three new features from what I submitted to WebOS1. Some of them include the Settings App, Bible App, and sound effects that say the next digit of pi each time you open/close an app. That part was very fun :P I hope you enjoy my Pi webOS! Please provide feedback on my project, whether you’re a pi enthusiast or not :)", "repo": "https://github.com/kpoovakan/piwebos", "demo": "https://kpoovakan.github.io/piwebos"}, {"ship_num": 2, "ts": "2026-08-11T23:36:39Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a pi-themed “operating system” that can run in a web browser! The hardest part for me was making the windows draggable, since I ran into some bugs even while following the guide. Thanks to some clarification in a W3Schools article, I managed to fix those bugs. I have some features in this OS that the guide doesn’t list, one which is the app that plays music. The other is the helpful text at the bottom of the screen (telling you where the apps can be opened!) that disappears when an app is opened. I enjoyed making this pi-themed “operating system”. I hope you enjoy exploring it!", "repo": "https://github.com/kpoovakan/piwebos", "demo": "https://kpoovakan.github.io/piwebos"}]...
|
[{"post_id": 67747, "ts": "202 [{"post_id": 67747, "ts": "2026-09-13T23:59:20Z", "hours": 1.6781, "text": "I updated my README! Now it has two images, a setup guide, and an organized table for my “apps”. There’s also a features list and a small credits section. I also went through my code and fixed all the bugs I could find. Time to ship!!"}, {"post_id": 66994, "ts": "2026-09-13T00:24:00Z", "hours": 3.9725, "text": "I added more apps to my webOS! Now it has a pi app, games, a web app, an e-mail redirect, a file manager, a notepad, a calculator, a Turbowarp redirect, a music app, YouTube, maps, a flight tracker redirect, a Bible app, and a settings app. The settings app lets you customize things like the time format and sound effect preferences."}, {"post_id": 45470, "ts": "2026-08-11T23:27:57Z", "hours": 0.8372, "text": "I added the content to my three applications! Now, there’s an app with stuff about pi, an app featuring my other coding projects, and a section to play popular classical piano pieces."}, {"post_id": 45452, "ts": "2026-08-11T22:21:00Z", "hours": 1.5489, "text": "I added more CSS styles and customization. I also made the “windows” draggable with JavaScript, and I added buttons to open and close the app placeholders. Next I’ll be adding things to the apps themselves!"}, {"post_id": 45398, "ts": "2026-08-11T20:32:05Z", "hours": 0.325, "text": "Added core code for my pi-themed web OS! I created a blue color palette for the CSS, added placeholder tags for what shall soon become the OS apps, and implemented a pi-themed background."}]...
|
Title: pi - web os by @NotSuspiciousProgrammer | S Title: pi - web os by @NotSuspiciousProgrammer | Stardance
Devlogs:
Added core code for my pi-themed web OS! I created a blue color palette for the CSS, added placeholder tags for what shall soon become the OS apps, and implemented a pi-themed background.
I added more CSS styles and customization. I also made the “windows” draggable with JavaScript, and I added buttons to open and close the app placeholders. Next I’ll be adding things to the apps themselves!
I added the content to my three applications! Now, there’s an app with stuff about pi, an app featuring my other coding projects, and a section to play popular classical piano pieces.
I added more apps to my webOS! Now it has a pi app, games, a web app, an e-mail redirect, a file manager, a notepad, a calculator, a Turbowarp redirect, a music app, YouTube, maps, a flight tracker redirect, a Bible app, and a settings app. The settings app lets you customize things like the time format and sound effect preferences.
I updated my README! Now it has two images, a setup guide, and an organized table for my “apps”. There’s also a features list and a small credits section. I also went through my code and fixed all the bugs I could find. Time to ship!!
Ships:
I made a pi-themed “operating system” that can run in a web browser! The hardest part for me was making the windows draggable, since I ran into some bugs even while following the guide. Thanks to some clarification in a W3Schools article, I managed to fix those bugs. I have some features in this OS that the guide doesn’t list, one which is the app that plays music. The other is the helpful text at the bottom of the screen (telling you where the apps can be opened!) that disappears when an app is opened. I enjoyed making this pi-themed “operating system”. I hope you enjoy exploring it!
I made a PI-THEMED WEB-OS!! The most challenging part was the script for making “windows” draggable; I had to look through some tutorials for that. Either way, as a professional pi enthusiast, I’m pretty excited for this pi theme! As part of the WebOS2 Mission, I have more than three new features from what I submitted to WebOS1. Some of them include the Settings App, Bible App, and sound effects that say the next digit of pi each time you open/close an app. That part was very fun :P I hope you enjoy my Pi webOS! Please provide feedback on my project, whether you’re a pi enthusiast or not :)...
|
1792997285.1477177
|
1793083685.1477177
|
|
46909
|
DevTab by @Eel | Stardance
|
Eel
|
2
|
24.0
|
275
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T00:15:29Z", "hours": 19.0, "multiplier": 14.9, "payout": 275, "blessing": "neutral", "text": "After a lot of work, the project is now complete and ready for others to try. I’m really proud of how far it has come, especially the workspace system, GitHub integration, task management, focus timer, and browser extension features. The goal was to make opening a new tab actually useful for development instead of just being another blank page, and I’m happy with where it ended up. Try it out and let me know what you think!", "repo": "https://github.com/Caleb-Guyer/DevTab", "demo": "https://caleb-guyer.github.io/DevTab/"}, {"ship_num": 2, "ts": "2026-08-12T17:11:27Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I finished and shipped my custom new tab page! The project features a fully custom HTML/CSS/JavaScript interface with interactive functionality and a design built from scratch. I focused on making it feel like a polished replacement for the default new tab page rather than just a static website.", "repo": "https://github.com/Caleb-Guyer/DevTab", "demo": "https://caleb-guyer.github.io/DevTab/"}]...
|
[{"post_id": 51364, "ts": "202 [{"post_id": 51364, "ts": "2026-08-21T00:07:07Z", "hours": 10.0667, "text": "DevTab 3.0 is now complete! I added support for multiple project workspaces, with each workspace having its own notes, links, tasks, layouts, accents, and saved sessions. DevTab can automatically migrate existing data from version 2.0, and it now integrates public GitHub repository information including commits, issues, pull requests, and releases, with offline caching. I also added a project task queue with progress tracking and a persistent focus timer that can be linked to tasks. The browser extension can now capture and restore browser tabs, while the website supports manually saved tab lists. Workspace commands such as workspace, launch, task, done, and focus were added, along with keyboard shortcuts for quickly switching between workspaces. I also finished up the responsive interface and updated the extension metadata, README, social preview, and demo. Overall, this update makes DevTab much more useful for managing multiple development projects and keeping everything related to a project in one place."}, {"post_id": 50771, "ts": "2026-08-20T04:24:35Z", "hours": 8.1569, "text": "Spent some time finishing up DevTab 2.0, and it’s finally complete. The goal with this update was to turn DevTab from a basic new-tab page into a much more customizable workspace that I can actually use every day. I added editable and reorderable quick links and cards, a command launcher with built-in calculations, and support for multiple Markdown notes. GitHub activity has also been expanded, and weather now supports manually selected locations and different units. I also added import/export functionality, individual reset options, and offline caching so the workspace is more useful even without a connection. I also spent some time on the less visible parts of the project. I added accessibility controls, built the browser extension version, created the icons, social preview, and demo GIF, and updated the README. Automated tests and a Lighthouse workflow were added as well."}, {"post_id": 48281, "ts": "2026-08-16T16:19:15Z", "hours": 0.2772, "text": "After receiving feedback during certification, I went back through the DevTab styling and rewrote several sections of the CSS myself. I focused on understanding and rebuilding the affected components rather than simply changing values, while also making some additional layout and styling adjustments. I then tested the updated interface to make sure the changes worked correctly and didn’t introduce visual or functional issues."}, {"post_id": 45886, "ts": "2026-08-12T17:05:52Z", "hours": 2.7272, "text": "I continued working on the new tab page and focused on turning the project from a basic prototype into something that actually feels like a finished website. I spent this session improving the styling and layout, fixing some smaller UI issues, and making the different interactive elements work together more smoothly. I also added and refined the main functionality of the page so it feels useful when opening a new tab instead of just being a static design .A lot of the time went into testing everything in the browser and making small adjustments to the CSS and JavaScript. I wanted the interface to feel consistent across the different parts of the page, so I kept refining spacing, sizing, and interactions as I found things that looked or behaved awkwardly."}, {"post_id": 45548, "ts": "2026-08-12T03:31:44Z", "hours": 2.3419, "text": "I’ve been working through the first parts of the Give Your Website a Pulse mission and have started turning the basic new tab page into a more complete website.So far, I’ve worked on the main HTML structure, built the custom layout, and started styling the interface with my own CSS rather than relying on a template. I’ve also been adding the JavaScript needed to make the page interactive and behave more like an actual new tab replacement.A big part of this session was getting the different parts of the page to work together while keeping the design clean and consistent. I also spent time testing the page in the browser and fixing small issues as they came up.There’s still some work left before I’m ready to ship, but the main structure and styling are coming together and the project is starting to feel like an actual usable new tab page rather than just a static webpage."}]...
|
Title: DevTab by @Eel | Stardance
Devlogs:
I’ve b Title: DevTab by @Eel | Stardance
Devlogs:
I’ve been working through the first parts of the Give Your Website a Pulse mission and have started turning the basic new tab page into a more complete website.So far, I’ve worked on the main HTML structure, built the custom layout, and started styling the interface with my own CSS rather than relying on a template. I’ve also been adding the JavaScript needed to make the page interactive and behave more like an actual new tab replacement.A big part of this session was getting the different parts of the page to work together while keeping the design clean and consistent. I also spent time testing the page in the browser and fixing small issues as they came up.There’s still some work left before I’m ready to ship, but the main structure and styling are coming together and the project is starting to feel like an actual usable new tab page rather than just a static webpage.
I continued working on the new tab page and focused on turning the project from a basic prototype into something that actually feels like a finished website. I spent this session improving the styling and layout, fixing some smaller UI issues, and making the different interactive elements work together more smoothly. I also added and refined the main functionality of the page so it feels useful when opening a new tab instead of just being a static design .A lot of the time went into testing everything in the browser and making small adjustments to the CSS and JavaScript. I wanted the interface to feel consistent across the different parts of the page, so I kept refining spacing, sizing, and interactions as I found things that looked or behaved awkwardly.
After receiving feedback during certification, I went back through the DevTab styling and rewrote several sections of the CSS myself. I focused on understanding and rebuilding the affected components rather than simply changing values, while also making some additional layout and styling adjustments. I then tested the updated interface to make sure the changes worked correctly and didn’t introduce visual or functional issues.
Spent some time finishing up DevTab 2.0, and it’s finally complete. The goal with this update was to turn DevTab from a basic new-tab page into a much more customizable workspace that I can actually use every day. I added editable and reorderable quick links and cards, a command launcher with built-in calculations, and support for multiple Markdown notes. GitHub activity has also been expanded, and weather now supports manually selected locations and different units. I also added import/export functionality, individual reset options, and offline caching so the workspace is more useful even without a connection. I also spent some time on the less visible parts of the project. I added accessibility controls, built the browser extension version, created the icons, social preview, and demo GIF, and updated the README. Automated tests and a Lighthouse workflow were added as well.
DevTab 3.0 is now complete! I added support for multiple project workspaces, with each workspace having its own notes, links, tasks, layouts, accents, and saved sessions. DevTab can automatically migrate existing data from version 2.0, and it now integrates public GitHub repository information including commits, issues, pull requests, and releases, with offline caching. I also added a project task queue with progress tracking and a persistent focus timer that can be linked to tasks. The browser extension can now capture and restore browser tabs, while the website supports manually saved tab lists. Workspace commands such as workspace, launch, task, done, and focus were added, along with keyboard shortcuts for quickly switching between workspaces. I also finished up the responsive interface and updated the extension metadata, README, social preview, and demo. Overall, this update makes DevTab much more useful for managing multiple development projects and keeping everything related to a project in one place.
Ships:
I finished and shipped my custom new tab page! The project features a fully custom HTML/CSS/JavaScript interface with interactive functionality and a design built from scratch. I focused on making it feel like a polished replacement for the default new tab page rather than just a static website.
After a lot of work, the project is now complete and ready for others to try. I’m really proud of how far it has come, especially the workspace system, GitHub integration, task management, focus timer, and browser extension features. The goal was to make opening a new tab actually useful for development instead of just being another blank page, and I’m happy with where it ended up. Try it out and let me know what you think!...
|
1792882039.2886648
|
1793746039.2886648
|
|
46995
|
Nebula OS by @vires | Stardance
|
vires
|
2
|
5.0
|
10
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T19:20:13Z", "hours": 3.0, "multiplier": 3.83, "payout": 10, "blessing": "neutral", "text": ":)", "repo": "https://github.com/abdulakimabdimanapov-rgb/nebula-os", "demo": "https://abdulakimabdimanapov-rgb.github.io/nebula-os/"}, {"ship_num": 2, "ts": "2026-08-13T07:27:36Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Nebula OS — a web-based operating system combining macOS design with Linux functionality! It includes draggable draggable windows, a functional terminal with custom commands like neofetch, a text editor, calculator, and custom themes.", "repo": "https://github.com/abdulakimabdimanapov-rgb/nebula-os", "demo": "https://abdulakimabdimanapov-rgb.github.io/nebula-os/"}]...
|
[{"post_id": 47105, "ts": "202 [{"post_id": 47105, "ts": "2026-08-14T19:11:27Z", "hours": 2.6272, "text": ":)"}, {"post_id": 46187, "ts": "2026-08-13T07:24:33Z", "hours": 0.4519, "text": ";)"}, {"post_id": 46181, "ts": "2026-08-13T06:42:24Z", "hours": 0.3772, "text": ":)"}, {"post_id": 46169, "ts": "2026-08-13T06:14:37Z", "hours": 0.9583, "text": "I can this"}]...
|
Title: Nebula OS by @vires | Stardance
Devlogs:
I Title: Nebula OS by @vires | Stardance
Devlogs:
I can this
:)
;)
:)
Ships:
I built Nebula OS — a web-based operating system combining macOS design with Linux functionality! It includes draggable draggable windows, a functional terminal with custom commands like neofetch, a text editor, calculator, and custom themes.
:)...
|
1792878721.73128
|
1793742721.73128
|
|
46998
|
Personal Portfolio Website by @silvonik | Stardanc Personal Portfolio Website by @silvonik | Stardance...
|
silvonik
|
2
|
11.0
|
66
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T10:12:05Z", "hours": 2.0, "multiplier": 2.33, "payout": 6, "blessing": "neutral", "text": "I made my own Personal Portfolio Website to showcase all of my complete projects, it took me about 25 days to build everything but it took a month entirely if we include me learning how to make a website. I only found out about Stardance halfway through the websites development so thats why there are so few devlogs. The most challenging part on making the project was the CSS and setting up the domains, I HATED the CSS because it takes so much time, but Im proud of the finished result of the website and im defnitely going to make more in the future. If you want to check the website out press the “try project” button, and if it doesn’t work search up edwardmare.com in your search engine.", "repo": "https://github.com/Silvonik/EdwardMare.github.io", "demo": "https://edwardmare.com"}, {"ship_num": 2, "ts": "2026-08-14T18:18:50Z", "hours": 9.0, "multiplier": 6.99, "payout": 60, "blessing": "neutral", "text": "I made my own Personal Portfolio Website to showcase all of my complete projects, it took me about 25 days to build everything but it took a month entirely if we include me learning how to make a website. I only found out about Stardance halfway through the websites development so thats why there are so few devlogs. The most challenging part on making the project was the CSS and setting up the domains, I HATED the CSS because it takes so much time, but Im proud of the finished result of the website and im defnitely going to make more in the future. If you want to check the website out press the “try project” button, and if it doesn’t work search up edwardmare.com in your search engine.", "repo": "https://github.com/Silvonik/EdwardMare.github.io", "demo": "https://edwardmare.com"}]...
|
[{"post_id": 67258, "ts": "202 [{"post_id": 67258, "ts": "2026-09-13T10:09:47Z", "hours": 1.6469, "text": "Added a new Project inside hardware called Macropad."}, {"post_id": 52540, "ts": "2026-08-22T18:18:24Z", "hours": 0.7622, "text": "Added a new Project inside hardware called Modded GBAs."}, {"post_id": 47065, "ts": "2026-08-14T18:03:36Z", "hours": 0.5789, "text": "Finished Last bits and pieces BUT I FINIALLY FINISHEDD!!!"}, {"post_id": 46829, "ts": "2026-08-14T11:00:52Z", "hours": 2.1508, "text": "Today I locked in and Finished all the project pages, it was pretty time consuming but im glad i finished all the writing. now i just need to do some finishing touches and im FINISHED!!!"}, {"post_id": 46483, "ts": "2026-08-13T18:34:53Z", "hours": 2.7186, "text": "Finished All the Games pages In Projects section and modified the home and fixed the footer"}, {"post_id": 46010, "ts": "2026-08-12T21:30:52Z", "hours": 2.2783, "text": "Almost Finished Gary’s Theft Auto 6’s page and added a footer to the website. As I’m working on the Gary’s Theft Auto 6’s page and building the design and layout of what every projects page will look like so after i finish this page it should get easier for the next ones."}, {"post_id": 45688, "ts": "2026-08-12T10:41:34Z", "hours": 0.8294, "text": "Fixed Mobile Bugs and Added More Pages To The Projects Section"}]...
|
Title: Personal Portfolio Website by @silvonik | S Title: Personal Portfolio Website by @silvonik | Stardance
Devlogs:
Fixed Mobile Bugs and Added More Pages To The Projects Section
Almost Finished Gary’s Theft Auto 6’s page and added a footer to the website. As I’m working on the Gary’s Theft Auto 6’s page and building the design and layout of what every projects page will look like so after i finish this page it should get easier for the next ones.
Finished All the Games pages In Projects section and modified the home and fixed the footer
Today I locked in and Finished all the project pages, it was pretty time consuming but im glad i finished all the writing. now i just need to do some finishing touches and im FINISHED!!!
Finished Last bits and pieces BUT I FINIALLY FINISHEDD!!!
Added a new Project inside hardware called Modded GBAs.
Added a new Project inside hardware called Macropad.
Ships:
I made my own Personal Portfolio Website to showcase all of my complete projects, it took me about 25 days to build everything but it took a month entirely if we include me learning how to make a website. I only found out about Stardance halfway through the websites development so thats why there are so few devlogs. The most challenging part on making the project was the CSS and setting up the domains, I HATED the CSS because it takes so much time, but Im proud of the finished result of the website and im defnitely going to make more in the future. If you want to check the website out press the “try project” button, and if it doesn’t work search up edwardmare.com in your search engine.
I made my own Personal Portfolio Website to showcase all of my complete projects, it took me about 25 days to build everything but it took a month entirely if we include me learning how to make a website. I only found out about Stardance halfway through the websites development so thats why there are so few devlogs. The most challenging part on making the project was the CSS and setting up the domains, I HATED the CSS because it takes so much time, but Im proud of the finished result of the website and im defnitely going to make more in the future. If you want to check the website out press the “try project” button, and if it doesn’t work search up edwardmare.com in your search engine....
|
1793000899.116906
|
1793087299.116906
|
|
47090
|
My (not so) Cool Site >:) by @vaito | Stardance
|
vaito
|
2
|
27.0
|
98
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T11:28:39Z", "hours": 14.0, "multiplier": 7.22, "payout": 98, "blessing": "neutral", "text": "I made a personal website :D so…. what changes Previously, I have made it with vanilla HTML and CSS to submit to Personal site quest. Now I have switched to Astro and TailwindCSS. I choose Astro because I just need SSG, no client-side code needed. Also, I added the education page where I yap about my schools. And I reworked the Projects page for cleaner looks Thats it :D P/s: Some of these images are clickable. wanna know more ._.? So the tech stack I use is: Astro + Vite, TailwindCSS for CSS things I use Github Pages (automated with Github Action) for hosting this site (thank you Github). But I’m planning to self-host it.", "repo": "https://github.com/VaitoSoi/vaito", "demo": "https://vaito.dev"}, {"ship_num": 2, "ts": "2026-08-17T09:12:59Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple site to introduce myself :D It has: the home, project and links section, as simple as that", "repo": "https://github.com/VaitoSoi/vaito", "demo": "https://vaito.dev"}]...
|
[{"post_id": 77282, "ts": "202 [{"post_id": 77282, "ts": "2026-10-06T12:43:32Z", "hours": 0.4419, "text": "I just made some changes to adapt the normal scale on Windows browser :D"}, {"post_id": 77089, "ts": "2026-10-05T16:52:06Z", "hours": 0.7775, "text": "The UI for phone is quite complete now. But the responsive UI support of TailwindCSS is quite limited, so I can’t implement the UI for tablet yet. Also, if you have a bad experience with the UI, the elements are randomly placed, try to decrease the scale of your browser, it may fix the problem"}, {"post_id": 77077, "ts": "2026-10-05T15:55:27Z", "hours": 2.1472, "text": "I’m doing the responsive UI"}, {"post_id": 76751, "ts": "2026-10-04T14:19:38Z", "hours": 4.5711, "text": "Some updates here: I split the education into a separate part I have done the about me page. I think I have to reorganize the about me page because it looks a bit messy. I have done the projects page: Thats all"}, {"post_id": 75605, "ts": "2026-09-30T15:24:26Z", "hours": 5.5722, "text": "It is quite a long time from the last update, isn’t it >:) To sum up, I’m moving to Astro for SSG and TailwindCSS so I don’t have to manually do the CSS Also, I’m adding new section is about my life (or education )"}, {"post_id": 48342, "ts": "2026-08-16T17:32:09Z", "hours": 1.1739, "text": "My site is live now"}, {"post_id": 48252, "ts": "2026-08-16T15:36:17Z", "hours": 3.3483, "text": "I have done the projects section Sorry for a 3hr devlog ;-; My first design for this part is scroll sync-link (or whatever it called), meaning that when you scroll the site, instead of boring scroll like normal, the site will change itself based on the scroll. Sound cool right >:) Thats until you work on its. It took me so much time that I decided to move to the traditional, click to see method."}, {"post_id": 47931, "ts": "2026-08-16T06:14:21Z", "hours": 8.7872, "text": "I have done the hero section and moving to the projects section :D"}]...
|
Title: My (not so) Cool Site >:) by @vaito | St Title: My (not so) Cool Site >:) by @vaito | Stardance
Devlogs:
I have done the hero section and moving to the projects section :D
I have done the projects section Sorry for a 3hr devlog ;-; My first design for this part is scroll sync-link (or whatever it called), meaning that when you scroll the site, instead of boring scroll like normal, the site will change itself based on the scroll. Sound cool right >:) Thats until you work on its. It took me so much time that I decided to move to the traditional, click to see method.
My site is live now
It is quite a long time from the last update, isn’t it >:) To sum up, I’m moving to Astro for SSG and TailwindCSS so I don’t have to manually do the CSS Also, I’m adding new section is about my life (or education )
Some updates here: I split the education into a separate part I have done the about me page. I think I have to reorganize the about me page because it looks a bit messy. I have done the projects page: Thats all
I’m doing the responsive UI
The UI for phone is quite complete now. But the responsive UI support of TailwindCSS is quite limited, so I can’t implement the UI for tablet yet. Also, if you have a bad experience with the UI, the elements are randomly placed, try to decrease the scale of your browser, it may fix the problem
I just made some changes to adapt the normal scale on Windows browser :D
Ships:
I made a simple site to introduce myself :D It has: the home, project and links section, as simple as that
I made a personal website :D so…. what changes Previously, I have made it with vanilla HTML and CSS to submit to Personal site quest. Now I have switched to Astro and TailwindCSS. I choose Astro because I just need SSG, no client-side code needed. Also, I added the education page where I yap about my schools. And I reworked the Projects page for cleaner looks Thats it :D P/s: Some of these images are clickable. wanna know more ._.? So the tech stack I use is: Astro + Vite, TailwindCSS for CSS things I use Github Pages (automated with Github Action) for hosting this site (thank you Github). But I’m planning to self-host it....
|
1793062425.3482175
|
1793148825.3482175
|
|
47146
|
10-Second Madness by @SCAMMARAS | Stardance
|
SCAMMARAS
|
2
|
9.0
|
49
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T00:01:46Z", "hours": 4.0, "multiplier": 12.8, "payout": 49, "blessing": "neutral", "text": "Hello again this is my second ship for this project as i had said and before this whole mission is amazing and i really liked following the guide and making the game even when i have made so more advanced godot projects before. Anyway that’s enough about me let’s talk about the game. So what changed, i added 3 new minigames and sfx with bg music. I made some small cutscenes they came out rough but still i like it qs i think it’s more of an assets problem that animation and i tried making my own assets , i did but you can see the difference between the ones i found and the ones i made", "repo": "https://github.com/Nikolaossamaras/10-Second-Madness", "demo": "https://scammaras.itch.io/10-second-madness"}, {"ship_num": 2, "ts": "2026-08-14T12:30:27Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It’s time for the Ship!!! I started this mission 2 days ago and found it pretty intresting and beginner friendly as the guide explains every step tbf though i would like if the code parts of the guide had more explanation in them so the one reading it can understand how his code works , also personally as i already know a little of godot i made some changes to the code as i found some lines of it unnecessary for my version of the game . This is my first mission here on stardance and it was amazing i hope that part 2 is the same if not more amazing that this was.", "repo": "https://github.com/Nikolaossamaras/10-Second-Madness", "demo": "https://scammaras.itch.io/10-second-madness"}]...
|
[{"post_id": 54743, "ts": "202 [{"post_id": 54743, "ts": "2026-08-25T20:29:45Z", "hours": 1.5342, "text": "Devlog 4| Today i added 1 minigame , sfx and music which i found on internet. In this minigame you need to avoid falling anvils"}, {"post_id": 54194, "ts": "2026-08-25T02:09:32Z", "hours": 2.2867, "text": "Devlog 3 | Today i added 2 diffrent minigame. 1 a flappy bird minigame and 2 a connect the wires minigame."}, {"post_id": 46612, "ts": "2026-08-13T23:35:29Z", "hours": 3.0311, "text": "Devlog 2 | This is my final devlog for the Warioware part 1 mission for my 10-Second Madness game , today or tommorow i will sumbit for review the game and start working on the Marioware part 2 mission. Today i finished the game added the victory screen and 3 minigames ."}, {"post_id": 45955, "ts": "2026-08-12T19:32:00Z", "hours": 1.5439, "text": "Devlog 1 | Even though i am not a beginner in Godot i wanted to do this WarioWare mission here on stardance , so i started today. What i have made until now: 1.Made the title screen 2.Made the level scene 3.Made the art 4.Started on the first minigame That’s all for today . See you next time"}]...
|
Title: 10-Second Madness by @SCAMMARAS | Stardance Title: 10-Second Madness by @SCAMMARAS | Stardance
Devlogs:
Devlog 1 | Even though i am not a beginner in Godot i wanted to do this WarioWare mission here on stardance , so i started today. What i have made until now: 1.Made the title screen 2.Made the level scene 3.Made the art 4.Started on the first minigame That’s all for today . See you next time
Devlog 2 | This is my final devlog for the Warioware part 1 mission for my 10-Second Madness game , today or tommorow i will sumbit for review the game and start working on the Marioware part 2 mission. Today i finished the game added the victory screen and 3 minigames .
Devlog 3 | Today i added 2 diffrent minigame. 1 a flappy bird minigame and 2 a connect the wires minigame.
Devlog 4| Today i added 1 minigame , sfx and music which i found on internet. In this minigame you need to avoid falling anvils
Ships:
It’s time for the Ship!!! I started this mission 2 days ago and found it pretty intresting and beginner friendly as the guide explains every step tbf though i would like if the code parts of the guide had more explanation in them so the one reading it can understand how his code works , also personally as i already know a little of godot i made some changes to the code as i found some lines of it unnecessary for my version of the game . This is my first mission here on stardance and it was amazing i hope that part 2 is the same if not more amazing that this was.
Hello again this is my second ship for this project as i had said and before this whole mission is amazing and i really liked following the guide and making the game even when i have made so more advanced godot projects before. Anyway that’s enough about me let’s talk about the game. So what changed, i added 3 new minigames and sfx with bg music. I made some small cutscenes they came out rough but still i like it qs i think it’s more of an assets problem that animation and i tried making my own assets , i did but you can see the difference between the ones i found and the ones i made...
|
1793065966.6138463
|
1793152366.6138463
|
|
47439
|
Persoal Site by @joboi_east | Stardance
|
joboi_east
|
2
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T20:26:00Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Wow, I made my site with hands. At first i thought it was impossible well it was at first. Especially when working on the navigation bar I hesitatatid to add complex pages yet i felt simplicity was the biggest advangtage. Then when it came to deploying i kept trying but could not deply turns out the link to CSS file was local link and vercel and any other hosting site could not read the code. And i was disappointed yet after some research it was a simple mistake. When i saw my site went online i was like HELL YEAH. It was 2 am in the morning so i screamed in lowercase XO But at the end of the day i am proud of what i achieved", "repo": "https://github.com/GustazVista/Personal-Site", "demo": "https://joeboieast.netlify.app/"}, {"ship_num": 2, "ts": "2026-08-21T19:13:01Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first personal site. The tough part was getting used to writing the code once again. However, with the help of internet namely Claude and W3schools lol i made it to the end. It is still my work tho.", "repo": "https://github.com/GustazVista/Personal-Site", "demo": "https://joeboieast.netlify.app/"}]...
|
[{"post_id": 58296, "ts": "202 [{"post_id": 58296, "ts": "2026-08-30T17:53:09Z", "hours": 1.2656, "text": "Update: This time i mainly worked on the README. However, turns out i also forgot to add images to the cards. So fixed that part as well. And added a new section as the site felt a little bit too small. Now about everything looks nicer than before. Worth the time."}, {"post_id": 56844, "ts": "2026-08-28T19:51:50Z", "hours": 2.1983, "text": "In the back of my mind~ the codes are coming back. Finally understanidng smth"}, {"post_id": 51871, "ts": "2026-08-21T19:11:23Z", "hours": 2.7039, "text": "Have been working on the Design of the site. The below is the inspo"}, {"post_id": 46837, "ts": "2026-08-14T11:17:16Z", "hours": 0.4064, "text": "Just started working on my first (yes first) personal website. Have a lot to learn still."}]...
|
Title: Persoal Site by @joboi_east | Stardance
De Title: Persoal Site by @joboi_east | Stardance
Devlogs:
Just started working on my first (yes first) personal website. Have a lot to learn still.
Have been working on the Design of the site. The below is the inspo
In the back of my mind~ the codes are coming back. Finally understanidng smth
Update: This time i mainly worked on the README. However, turns out i also forgot to add images to the cards. So fixed that part as well. And added a new section as the site felt a little bit too small. Now about everything looks nicer than before. Worth the time.
Ships:
I made my first personal site. The tough part was getting used to writing the code once again. However, with the help of internet namely Claude and W3schools lol i made it to the end. It is still my work tho.
Wow, I made my site with hands. At first i thought it was impossible well it was at first. Especially when working on the navigation bar I hesitatatid to add complex pages yet i felt simplicity was the biggest advangtage. Then when it came to deploying i kept trying but could not deply turns out the link to CSS file was local link and vercel and any other hosting site could not read the code. And i was disappointed yet after some research it was a simple mistake. When i saw my site went online i was like HELL YEAH. It was 2 am in the morning so i screamed in lowercase XO But at the end of the day i am proud of what i achieved...
|
1793094859.4884872
|
1793181259.4884872
|
|
47455
|
my-portfolio by @myselfgaurav99 | Stardance
|
myselfgaurav99
|
2
|
8.0
|
27
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T07:42:49Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I make my portfolio", "repo": "https://github.com/gauravpantha69/gaurav-portfolio", "demo": "https://gauravpantha69.github.io/gaurav-portfolio/"}, {"ship_num": 2, "ts": "2026-08-13T15:16:49Z", "hours": 7.0, "multiplier": 3.8, "payout": 27, "blessing": "neutral", "text": "I make my own portfolio while still learning things and coding.", "repo": "https://github.com/gauravpantha69/gaurav-portfolio", "demo": "https://gauravpantha69.github.io/gaurav-portfolio/"}]...
|
[{"post_id": 47981, "ts": "202 [{"post_id": 47981, "ts": "2026-08-16T08:08:01Z", "hours": 0.9606, "text": "I made this personal portfolio website to show about me, my skills, projects and some of the things i am interested in. I wanted to make something that feel like my own and not just a basic portfolio template. I worked on the design, sections, animations and added my projects in it. At first it was little hard to decide how everything should look, and I changed the design many times before getting something i liked. While making this project I learned many things about web development and designing. I faced some problems with responsive design, spacing and some code not working properly, but I fixed them one by one. The portfolio is still not fully finished because I want to keep adding new projects and improving it when I learn new things. Overall I am happy with how it turned out and this project was really fun to build."}, {"post_id": 46364, "ts": "2026-08-13T15:15:56Z", "hours": 7.0689, "text": "I am working on my portfolio"}]...
|
Title: my-portfolio by @myselfgaurav99 | Stardance Title: my-portfolio by @myselfgaurav99 | Stardance
Devlogs:
I am working on my portfolio
I made this personal portfolio website to show about me, my skills, projects and some of the things i am interested in. I wanted to make something that feel like my own and not just a basic portfolio template. I worked on the design, sections, animations and added my projects in it. At first it was little hard to decide how everything should look, and I changed the design many times before getting something i liked. While making this project I learned many things about web development and designing. I faced some problems with responsive design, spacing and some code not working properly, but I fixed them one by one. The portfolio is still not fully finished because I want to keep adding new projects and improving it when I learn new things. Overall I am happy with how it turned out and this project was really fun to build.
Ships:
I make my own portfolio while still learning things and coding.
I make my portfolio...
|
1793098375.994176
|
1793184775.994176
|
|
47461
|
NASA Fact by @RajanKC | Stardance
|
RajanKC
|
2
|
5.99
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T12:16:58Z", "hours": 1.0, "multiplier": 1.2, "payout": 1, "blessing": "neutral", "text": "This is my first vite project Please rate this good", "repo": "https://github.com/RajanKCKC/Nasa", "demo": "https://nasa-ten-ecru.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-17T14:49:40Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Ship", "repo": "https://github.com/RajanKCKC/Nasa", "demo": "https://nasa-ten-ecru.vercel.app/"}]...
|
[{"post_id": 56775, "ts": "202 [{"post_id": 56775, "ts": "2026-08-28T17:49:06Z", "hours": 0.9944, "text": "Update the Whole website Now there is no ai generated content"}, {"post_id": 50769, "ts": "2026-08-20T04:22:02Z", "hours": 0.6361, "text": "Rewrote Style.css"}, {"post_id": 49690, "ts": "2026-08-18T16:09:41Z", "hours": 0.3169, "text": "Update Auth"}, {"post_id": 48943, "ts": "2026-08-17T14:46:07Z", "hours": 1.2178, "text": "Added Readme"}, {"post_id": 48265, "ts": "2026-08-16T15:52:42Z", "hours": 0.8808, "text": "feat: implement NASA facts dashboard with loading state and fallback data"}, {"post_id": 47422, "ts": "2026-08-15T10:47:34Z", "hours": 0.7144, "text": "Integrate Supabase for authentication and data management Added .env.example for environment variable configuration. Updated .gitignore to exclude .env files. Refactored index.html for improved structure. Added Supabase dependencies in package.json and package-lock.json. Created supabase.js for Supabase client initialization. Implemented authentication flow in auth.js with sign-in and sign-up functionality. Developed dashboard.js to display user-specific content after authentication. Created home.js for the landing page with navigation to the auth page. Enhanced styling in style.css for a better user interface. Added NASA logo SVG asset for branding."}, {"post_id": 47022, "ts": "2026-08-14T16:46:10Z", "hours": 0.3492, "text": "feat: enhance main layout and styles for hero section, add login functionality"}, {"post_id": 46426, "ts": "2026-08-13T16:52:39Z", "hours": 0.6333, "text": "Initialize project with Vite, add basic structure and assets Created package.json with Vite as a development dependency and scripts for dev, build, and preview. Added favicon.svg for the application icon. Included icons.svg with various SVG symbols for UI components. Added hero image as an asset. Created JavaScript and Vite SVG assets for branding. Implemented a counter functionality in counter.js. Set up main.js to render the application structure and integrate the counter. Added style.css for basic styling of the application layout and components."}]...
|
Title: NASA Fact by @RajanKC | Stardance
Devlogs: Title: NASA Fact by @RajanKC | Stardance
Devlogs:
Initialize project with Vite, add basic structure and assets Created package.json with Vite as a development dependency and scripts for dev, build, and preview. Added favicon.svg for the application icon. Included icons.svg with various SVG symbols for UI components. Added hero image as an asset. Created JavaScript and Vite SVG assets for branding. Implemented a counter functionality in counter.js. Set up main.js to render the application structure and integrate the counter. Added style.css for basic styling of the application layout and components.
feat: enhance main layout and styles for hero section, add login functionality
Integrate Supabase for authentication and data management Added .env.example for environment variable configuration. Updated .gitignore to exclude .env files. Refactored index.html for improved structure. Added Supabase dependencies in package.json and package-lock.json. Created supabase.js for Supabase client initialization. Implemented authentication flow in auth.js with sign-in and sign-up functionality. Developed dashboard.js to display user-specific content after authentication. Created home.js for the landing page with navigation to the auth page. Enhanced styling in style.css for a better user interface. Added NASA logo SVG asset for branding.
feat: implement NASA facts dashboard with loading state and fallback data
Added Readme
Update Auth
Rewrote Style.css
Update the Whole website Now there is no ai generated content
Ships:
Ship
This is my first vite project Please rate this good...
|
1793098379.7465773
|
1793184779.7465773
|
|
47473
|
Mon Site Personnel by @SMD | Stardance
|
SMD
|
2
|
3.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T12:34:29Z", "hours": 1.0, "multiplier": 2.37, "payout": 3, "blessing": "neutral", "text": "I have built a personal website to give you a glimpse of who I am, what my hobbies are and what all technical projects I’ve done. So, what’s changed since my last ship? Well, for starters, I added images to all my hobbies and project cards so as to visualize them better. I’ve also added a toggle button to switch between dark and light themes. In case you are wondering, yes I did manage to debug the error I mentioned in my previous devlog and now my whole site changes to light theme (including my welcome page)", "repo": "https://github.com/DakshikaaTech/Mon-site-personnel", "demo": "https://dakshikaatech.github.io/Mon-site-personnel/"}, {"ship_num": 2, "ts": "2026-08-25T12:07:23Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have built a personal website for myself. It includes details about my hobbies and projects. I found styling my website to be really, really challenging! But yayy, I overcame it and have built a really cool project! I hope you enjoy navigating my website as much as I was excited to be making it!", "repo": "https://github.com/DakshikaaTech/Mon-site-personnel", "demo": "https://dakshikaatech.github.io/Mon-site-personnel/"}]...
|
[{"post_id": 56424, "ts": "202 [{"post_id": 56424, "ts": "2026-08-28T05:58:23Z", "hours": 1.3589, "text": "Added image placeholder cards and inserted some images to visualize my hobbies and projects. Tried to create a toggle button between Dark & Light themes, but I’m having some difficulties with making my entire page change colour. For some reason my first welcome screen does not change into light mode."}, {"post_id": 53200, "ts": "2026-08-23T17:16:04Z", "hours": 0.99, "text": "Designed the main title screen for my website along with task bar on top. (Image on the right) But for some reason, the rest of my website has white background and the texts are not clearly visible. (Image on the left) I gotta figure out how to correct my code and make my whole website the same navy blue colour, which won’t get affected when the user “scrolls” through my website."}, {"post_id": 52100, "ts": "2026-08-22T05:32:38Z", "hours": 1.2294, "text": "I have been learning html for 3 years now and I think it’s finally time I made a very cool personal site for myself. The code below encompasses the <style> for my personal website. I plan on adding facts about myself, my innovations, my hobbies and contact details."}]...
|
Title: Mon Site Personnel by @SMD | Stardance
Dev Title: Mon Site Personnel by @SMD | Stardance
Devlogs:
I have been learning html for 3 years now and I think it’s finally time I made a very cool personal site for myself. The code below encompasses the <style> for my personal website. I plan on adding facts about myself, my innovations, my hobbies and contact details.
Designed the main title screen for my website along with task bar on top. (Image on the right) But for some reason, the rest of my website has white background and the texts are not clearly visible. (Image on the left) I gotta figure out how to correct my code and make my whole website the same navy blue colour, which won’t get affected when the user “scrolls” through my website.
Added image placeholder cards and inserted some images to visualize my hobbies and projects. Tried to create a toggle button between Dark & Light themes, but I’m having some difficulties with making my entire page change colour. For some reason my first welcome screen does not change into light mode.
Ships:
I have built a personal website for myself. It includes details about my hobbies and projects. I found styling my website to be really, really challenging! But yayy, I overcame it and have built a really cool project! I hope you enjoy navigating my website as much as I was excited to be making it!
I have built a personal website to give you a glimpse of who I am, what my hobbies are and what all technical projects I’ve done. So, what’s changed since my last ship? Well, for starters, I added images to all my hobbies and project cards so as to visualize them better. I’ve also added a toggle button to switch between dark and light themes. In case you are wondering, yes I did manage to debug the error I mentioned in my previous devlog and now my whole site changes to light theme (including my welcome page)...
|
1793001120.1544437
|
1793087520.1544437
|
|
47475
|
indiware by @laret | Stardance
|
laret
|
2
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T02:33:35Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hize el juego de indiware y añadi mas sonidos repare bugs y incluso añadi un nuevo videojuego", "repo": "https://github.com/laret1/Indiware", "demo": "https://laret1.itch.io/indiware"}, {"ship_num": 2, "ts": "2026-08-23T03:39:56Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "lo que hize fue un warioware inspirado en algunos juegos indie due muy desafiante por ejemplo en el minijuego de among us fue muy dificil de hacer la logica para que funcionara la tarea de la tarjeta use ia solo en ese para los problemas pero no para nada mas ue minimo mi uso", "repo": "https://github.com/laret1/Indiware", "demo": "https://laret1.itch.io/indiware"}]...
|
[{"post_id": 58603, "ts": "202 [{"post_id": 58603, "ts": "2026-08-31T02:32:10Z", "hours": 2.7042, "text": "Hize un nuevo minijuego añadi un juego de flappy bird y mas sonidos"}, {"post_id": 55357, "ts": "2026-08-27T04:20:42Z", "hours": 0.7169, "text": "I finish the sound of some minigames"}, {"post_id": 52764, "ts": "2026-08-23T03:25:06Z", "hours": 8.0839, "text": "I finish the game"}]...
|
Title: indiware by @laret | Stardance
Devlogs:
I Title: indiware by @laret | Stardance
Devlogs:
I finish the game
I finish the sound of some minigames
Hize un nuevo minijuego añadi un juego de flappy bird y mas sonidos
Ships:
lo que hize fue un warioware inspirado en algunos juegos indie due muy desafiante por ejemplo en el minijuego de among us fue muy dificil de hacer la logica para que funcionara la tarea de la tarjeta use ia solo en ese para los problemas pero no para nada mas ue minimo mi uso
Hize el juego de indiware y añadi mas sonidos repare bugs y incluso añadi un nuevo videojuego...
|
1793001121.3111954
|
1793087521.3111954
|
|
47521
|
chip 8 emulator by @vexith | Stardance
|
vexith
|
2
|
9.0
|
53
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T15:13:03Z", "hours": 7.0, "multiplier": 6.72, "payout": 50, "blessing": "neutral", "text": "i built a lightweight chip-8 (programming language for old 8-bits microcomputers from the 1970s) emulator from scratch. now it’s running pratically all the games i tested for it without glitches, only “issue” to address is a light flicker but this is by design of chip8 how to test it: compile it yourself or run the pre-compiled binary on github.", "repo": "https://github.com/Vexith/chip8-emulator-c/", "demo": "https://github.com/Vexith/chip8-emulator-c/releases/"}, {"ship_num": 2, "ts": "2026-08-13T18:32:49Z", "hours": 2.0, "multiplier": 2.03, "payout": 3, "blessing": "neutral", "text": "i built a lightweight chip-8 emulator from scratch. now it’s very minimal and stripped down (not all opcodes implemented yet), but it sucessfully loads and renders the basic IBM rom how to test it: compile it yourself (made exclusively for windows) or run the pre-compiled exe on github.", "repo": "https://github.com/Vexith/chip8-emulator-c/", "demo": "https://github.com/Vexith/chip8-emulator-c/releases/"}]...
|
[{"post_id": 60208, "ts": "202 [{"post_id": 60208, "ts": "2026-09-02T13:10:35Z", "hours": 2.6883, "text": "devlog #4 - audio engine, new ui and linux build added sound support fixed a bug in the draw instruction missing a “break;” fixed a bug in math operations that bugged the collision in some games (brix and pong) readme rewritten for better clarity new user interface added linux support (sorry for bad gameplay)"}, {"post_id": 56342, "ts": "2026-08-28T02:36:52Z", "hours": 2.2806, "text": "devlog #3 - (not so) final release added rendering with SDL in a separate window added the remaining opcodes for running all chip8 demos/games fixed the shortcut to exit the emulator (ESC)"}, {"post_id": 48555, "ts": "2026-08-17T00:16:18Z", "hours": 2.4947, "text": "devlog #2 - small corrections what changed: separation of cpu and display responsibilities into dedicated implementation and header files (cpu.c/cpu.h and display.c/display.h). decoding of the x and y registers (in cpu cycle) is now performed once before opcode checking, eliminating redundancy within each switch case. removal of legacy debugging routines and standardization of video buffer handling. (basically same gif as before)"}, {"post_id": 46462, "ts": "2026-08-13T18:00:57Z", "hours": 1.6142, "text": "devlog #1 - writing a emulator i built this (not so) simple emulator for the CHIP-8 architecture what’s working: 4kb ram, 16 registers (V0-VF), Index (I) & PC (0x200) opcodes: clear (00E0), jmp (1NNN), 6XNN and 7XNN (math basically), index (ANNN) and sprites (DXYN) rendering in ascii (thinking about changing it to sdl2) todo: full 35 opcode support keypad input (maybe) migrating to SDL2"}]...
|
Title: chip 8 emulator by @vexith | Stardance
Dev Title: chip 8 emulator by @vexith | Stardance
Devlogs:
devlog #1 - writing a emulator i built this (not so) simple emulator for the CHIP-8 architecture what’s working: 4kb ram, 16 registers (V0-VF), Index (I) & PC (0x200) opcodes: clear (00E0), jmp (1NNN), 6XNN and 7XNN (math basically), index (ANNN) and sprites (DXYN) rendering in ascii (thinking about changing it to sdl2) todo: full 35 opcode support keypad input (maybe) migrating to SDL2
devlog #2 - small corrections what changed: separation of cpu and display responsibilities into dedicated implementation and header files (cpu.c/cpu.h and display.c/display.h). decoding of the x and y registers (in cpu cycle) is now performed once before opcode checking, eliminating redundancy within each switch case. removal of legacy debugging routines and standardization of video buffer handling. (basically same gif as before)
devlog #3 - (not so) final release added rendering with SDL in a separate window added the remaining opcodes for running all chip8 demos/games fixed the shortcut to exit the emulator (ESC)
devlog #4 - audio engine, new ui and linux build added sound support fixed a bug in the draw instruction missing a “break;” fixed a bug in math operations that bugged the collision in some games (brix and pong) readme rewritten for better clarity new user interface added linux support (sorry for bad gameplay)
Ships:
i built a lightweight chip-8 emulator from scratch. now it’s very minimal and stripped down (not all opcodes implemented yet), but it sucessfully loads and renders the basic IBM rom how to test it: compile it yourself (made exclusively for windows) or run the pre-compiled exe on github.
i built a lightweight chip-8 (programming language for old 8-bits microcomputers from the 1970s) emulator from scratch. now it’s running pratically all the games i tested for it without glitches, only “issue” to address is a light flicker but this is by design of chip8 how to test it: compile it yourself or run the pre-compiled binary on github....
|
1793101943.079464
|
1793188343.079464
|