|
34510
|
PythonLife by @egraich | Stardance
|
egraich
|
1
|
3.0
|
23
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T21:55:04Z", "hours": 3.0, "multiplier": 7.66, "payout": 23, "blessing": "neutral", "text": "I made PythonLife — an interactive, fully responsive Conway’s Game of Life simulation built with Pygame and NumPy. The biggest challenge was optimization. Standard nested loops lag heavily on large screens, so I completely rewrote the update logic using NumPy matrix shifts with np.roll() . This counts all neighbors simultaneously and applies rules instantly via array masking, keeping the FPS smooth even in borderless fullscreen mode. Another unexpected challenge was configuring the Web/Executable build environment, but I successfully compiled everything into a standalone executable. I’m really proud of the performance and the seamless window scaling feature—the simulation auto-extends on the fly, introducing random noise into newly opened space while preserving existing patterns. To test the project, click “Try project” to download the pre-compiled PythonLife.exe from my GitHub Releases, open it, and you’re good to go! Left-click to draw living cells, right-click to clear them, press Space to pause, and use keys 1, 2, or 3 to change simulation speed.", "repo": "https://github.com/egraich/PythonLife", "demo": "https://github.com/egraich/PythonLife/releases/tag/v1.0.0"}]...
|
[{"post_id": 27947, "ts": "202 [{"post_id": 27947, "ts": "2026-07-13T21:50:00Z", "hours": 0.4803, "text": "The first version is officially ready! For the first time ever, I’ve created my own GitHub release and bundled the entire game into a 25MB .exe file. Also upgrade README. Shipping it in a bit! <3"}, {"post_id": 27917, "ts": "2026-07-13T20:52:41Z", "hours": 0.9825, "text": "Spent the last hour trying to port the project to web with pygbag, but no luck so far <3 On the bright side, I added time controls: you can now speed things up by 2x or 4x using numbers keys. Also, moved everything to a config.py file, so you can easily tweak colors, base FPS, keybindings, and more. Also fix some F11 bugs."}, {"post_id": 27844, "ts": "2026-07-13T18:45:06Z", "hours": 0.7272, "text": "Finally, fully interactive drawing is now live. You can left-click to spawn cells and right-click to wipe them out on the fly. Added a proper pause state on Spacebar too, so you can stop time, comfortably sketch out gliders, spaceships, or any complex structures, and then let them loose. Also made the window fully resizable, which means you can just hit the square icon to maximize it, or press F11 for a true borderless fullscreen. Had a bit of a nightmare with Windows loop-crashing the resolution scaling at first, but it is completely fixed now. The grid dynamically auto-adjusts to whatever screen size you throw at it, keeping your current shapes intact while filling the new empty space with random chaos."}, {"post_id": 27798, "ts": "2026-07-13T17:50:18Z", "hours": 0.3044, "text": "I just added a basic PyGame simulation and it looks cool! With constants, I can easily change the grid size and colors. Now I want to add the ability to pause the game and draw figures with a mouse click!"}, {"post_id": 27771, "ts": "2026-07-13T16:49:35Z", "hours": 0.6006, "text": "I decided to start this project to master NumPy, a useful library for matrix operations in Python. I’m planning to use PyGame to visualize the game grid. Also, the game board features wrapped boundaries, meaning cells seamlessly teleport to the opposite side when crossing the edges!"}]...
|
Title: PythonLife by @egraich | Stardance
Devlogs Title: PythonLife by @egraich | Stardance
Devlogs:
I decided to start this project to master NumPy, a useful library for matrix operations in Python. I’m planning to use PyGame to visualize the game grid. Also, the game board features wrapped boundaries, meaning cells seamlessly teleport to the opposite side when crossing the edges!
I just added a basic PyGame simulation and it looks cool! With constants, I can easily change the grid size and colors. Now I want to add the ability to pause the game and draw figures with a mouse click!
Finally, fully interactive drawing is now live. You can left-click to spawn cells and right-click to wipe them out on the fly. Added a proper pause state on Spacebar too, so you can stop time, comfortably sketch out gliders, spaceships, or any complex structures, and then let them loose. Also made the window fully resizable, which means you can just hit the square icon to maximize it, or press F11 for a true borderless fullscreen. Had a bit of a nightmare with Windows loop-crashing the resolution scaling at first, but it is completely fixed now. The grid dynamically auto-adjusts to whatever screen size you throw at it, keeping your current shapes intact while filling the new empty space with random chaos.
Spent the last hour trying to port the project to web with pygbag, but no luck so far <3 On the bright side, I added time controls: you can now speed things up by 2x or 4x using numbers keys. Also, moved everything to a config.py file, so you can easily tweak colors, base FPS, keybindings, and more. Also fix some F11 bugs.
The first version is officially ready! For the first time ever, I’ve created my own GitHub release and bundled the entire game into a 25MB .exe file. Also upgrade README. Shipping it in a bit! <3
Ships:
I made PythonLife — an interactive, fully responsive Conway’s Game of Life simulation built with Pygame and NumPy. The biggest challenge was optimization. Standard nested loops lag heavily on large screens, so I completely rewrote the update logic using NumPy matrix shifts with np.roll() . This counts all neighbors simultaneously and applies rules instantly via array masking, keeping the FPS smooth even in borderless fullscreen mode. Another unexpected challenge was configuring the Web/Executable build environment, but I successfully compiled everything into a standalone executable. I’m really proud of the performance and the seamless window scaling feature—the simulation auto-extends on the fly, introducing random noise into newly opened space while preserving existing patterns. To test the project, click “Try project” to download the pre-compiled PythonLife.exe from my GitHub Releases, open it, and you’re good to go! Left-click to draw living cells, right-click to clear them, press Space to pause, and use keys 1, 2, or 3 to change simulation speed....
|
1793706815.095965
|
1793793215.095965
|
|
4719
|
Scoutmaster 2.0 by @Zee | Stardance
|
Zee
|
1
|
101.0
|
1439
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T23:30:04Z", "hours": 101.0, "multiplier": 15.34, "payout": 1439, "blessing": "neutral", "text": "I made a realtime syncing First Tech Challenge scouting tool. It lets teams scout other teams during matches and before matches to figure out more about opponent teams, and be ready to make the best possible pick for the knockout stages.", "repo": "https://github.com/16423-Storm/Scoutmaster-React", "demo": "https://www.ftcscoutmaster.xyz/"}]...
|
[{"post_id": 83103, "ts": "202 [{"post_id": 83103, "ts": "2026-10-26T21:48:57Z", "hours": 6.5447, "text": "Devlog 18 It has been a while, but I have finally got to the final features. I have now used Render to host the python server and github pages for the actual site. I have finished the auto paths update, and now everything is setup for the final release."}, {"post_id": 65679, "ts": "2026-09-11T00:05:40Z", "hours": 4.6714, "text": "Devlog 17 Now that this webapp is in its final stages of completion, I have just been completing todo list items really, these were: Fixing double websocket connect bug Adding update current team for summary to server Added functionality to settings menu Made competitions pull from an actual API instead of a json saved inside the project files Now the main items left are: Path scouting for auto Finish landing page"}, {"post_id": 61154, "ts": "2026-09-03T22:30:36Z", "hours": 5.5403, "text": "Devlog 16 I just boosted the security of the tool quite a bit, now with rate limiting, aggressive schema validation, and payload size limits. The issue before was that you could spam stuff no problem, but now there is a ton of resistance, and very strict limits. I still have more plans to make it even more secure as well. I also setup meta tags so now supposedly when you send a link depending on the platform, it will show this image and a description as well. An example of some of the new aggressive schema validation is: class QuestionChanges ( StrictModel ): title : Str | None = None type : ( Literal [ \" ln \" , \" sn \" , \" cb \" , \" a \" , \" img \" , \" n \" , \" mc \" , \" sc \" , \" r \" , \" st \" ] | None ) = None opt : dict [ Annotated [ str , StringConstraints ( pattern = r \" ^[0-9]$ \" )], Annotated [ str , Field ( max_length = 50 )]] | None = Field ( default = None , max_length = 10 ) minmax : Annotated [ list [ Annotated [ int , Field ( ge =- 99999 , le = 99999 )]], Field ( min_length = 2 , max_length = 2 )] | None = None stars : Annotated [ int , Field ( ge = 0 , le = 10 )] | None = None I setup two different rate limiting systems, these include ones for the websocket, where each individual message type can get its own rate limit (some things should be easily called 500 times in a minute, while others should NOT be called more than 10) @ws_limit ( maxCalls = 500 , window = 60 ) async def handleUpdateTeamQuestion ( @ws_limit ( maxCalls = 8 , window = 60 ) async def handleCompCodeChange ( Window being time in seconds, maxCalls being the max calls in that window. This still needs more testing to make sure edge cases that are actually possible to do using the UI are not blocked by this security, but most regular use seems to not be affected."}, {"post_id": 59831, "ts": "2026-09-01T20:09:55Z", "hours": 5.2906, "text": "Devlog 15 I have now finished the following tasks: Inviting members Uninviting members Kicking members out of group Most of the UI to do with the member system (only joining a group left) I have also added these improvements to the backend related things: The front end no longer assumes that a user is in a group and instead calls a server endpoint to check first on sign in The front end now connects on loading of the dashboard page instead of loading on the sign in page, which is to fix a current issue where if the user is already signed in but on the landing page, it makes them re-sign in, but soon it will just be a button saying “go to dash” Added UI for loading hydration for dash Made it so the add match/add team buttons were only visible to admins I now pretty much don’t have too much to do, instead it will simply be finishing touches and a little bit of work with the joining system: Make the UI for creating a group Make the UI for joining a group actually work Add rate limiting Sync settings with database Publish"}, {"post_id": 56176, "ts": "2026-08-27T20:14:15Z", "hours": 3.9831, "text": "Devlog 14 I have now fully finished the summary team page UI as well. Now there are charts that show the points of each individual match, and then also each individual method of scoring. I also added two new screens for when a team is in first or last, if a team is in first, then there are no teams above to accept/reject, so it shows a little bit of text, if a team is in last, there is no team below to pick, so they have a separate message. I also took the time to add the flags bit beside a team’s name in the summary page too so it can match prescout. With all of the above, I also completed the mobile UI equivalent."}, {"post_id": 54640, "ts": "2026-08-25T17:45:02Z", "hours": 8.1594, "text": "Devlog 13 ALL. SERVER. SYNC. IS. DONE. I have finished every single piece of work needed to sync the server with the client at all times. I am now getting close to the finish line for this project. I added info toasts for some new things, rather than just showing the success toast for an action a user may not have actually done themselves for things like adding teams and matches. There are now very few tasks left really, they are: Fully localize everything Add French Add mobile UI to summary Add custom competition handling for summary Add a favicon Fix dark mode glitches on sign in/sign up pages"}, {"post_id": 50586, "ts": "2026-08-19T19:50:31Z", "hours": 6.155, "text": "Devlog 12 This devlog is now much more about the server side of things as that has been my focus right now. The way this all works is I have a realtime python server connect to my database and all clients. Clients are put into a realtime channel with all their teammates. When the first user of a team joins, the python server pulls all that team’s scouting data from the database and keeps it in memory. This is to speed up request response times. When a second, third, fourth, so on, user of a team joins, the server instead just gives them the data it has in memory instead of the database. To keep this all in sync, the server updates its version of that group’s data as soon as it is successfully saved to the database. It takes time to set this all up, and the parts of synchronization that I have completed so far are: Competition code changes Setting competitions to custom Adding an individual team Adding teams from API at the start Adding an individual match Adding matches from API at the start I have done one thing for the UI though, and that is finally adding a 404 page. I designed this 404 with the magnifying glass in the middle as the 0."}, {"post_id": 46008, "ts": "2026-08-12T21:28:56Z", "hours": 0.9444, "text": "Devlog 11 I usually space out my devlogs more, but I have now managed to get the base connection. This went by rather flawlessly due to now having the ability to use a python server for websockets, rather than the old system of having to use SQL requests with a million different RPC functions (sometimes causing queries to take up to 500ms on average) now taking only 100ms on average. This uses a simple system to take the JWT token from the user, validate it from the server to find the user id, then checks the database to see what group the user is in, then checks the group to make sure that the user is actually in that group, and if all those conditions are met, the user will connect to the websocket. If the user is the first one in the websocket, it right now just prints it, but it is designed to soon be used for a new feature. Soon, when a user joins a websocket and is the first one there, the server will load all that group’s data from the database, the reason for this is to have lightning fast connection and also make it possible to synchronize all users’ data in real time. (Whenever a user makes a change, it would update the server’s copy, and also push that change to the database)"}, {"post_id": 45166, "ts": "2026-08-11T14:13:17Z", "hours": 3.3492, "text": "Devlog 10 I have now finished the skeleton UI for the summary tab. I originally ran into some issues because I had tried to make one table with one map and just change the data for it, but that went horribly wrong because it made the code so janky and I had to write a ton of spaghetti code for it. In the end, I decided to switch to this system instead, where there are 3 completely separate tables for each tab, that get rendered in conditionally. { currentTab == 0 ? ( < Tab1 sorted = { sorted } sortBy = { sortBy } setSortBy = { setSortBy } setSortDown = { setSortDown } sortDown = { sortDown } selected = { selected } /> ) : currentTab == 1 ? ( < Tab2 teamsBelow = { teamsBelow } /> ) : ( < Tab3 teamsAbove = { teamsAbove } /> )} This way allowed me to have more freedom and more organization with the code. I also originally ran into an issue with my rendering system for picks. When a team would set their pick order, originally to preserve the order they had in mind, the site would check all teams in the picks array, and if they were below, they would render them in. This caused an issue where if a team changed ranks through a competition, the teams below would change, and some might not render, which caused a problem in that the indexes for the reordering were off, and it would reorder the ones at the top that were not visible to the user. In the end I fixed this by simply filtering out and deleting the ones that were no longer a valid pick. updateSummary ({ picks : [ ... summary . picks . filter (( pick ) => below . includes ( pick )), ... below . filter (( team ) => ! summary . picks . includes ( team )), ], }); My goals now are to get a start on the backend part so that the main structure of the site can be complete. The tasks that would be left after that are: Polishing the summary page UI Making the mobile UI for the summary page Adding the new setting to set user’s team number by default so they don’t have to constantly set it from the tab Landing page improvements"}, {"post_id": 44669, "ts": "2026-08-10T16:15:28Z", "hours": 4.81, "text": "Devlog 9 I have now done a lot of work in relation to the summary page, the hardest part is now pretty much done (the all teams page). The parts left now are the top picks page, and the accept/reject page. I have also done some work that isn’t specifically for the summary page too. Now, setting a competition will make it so the FTCScout api will actually pull the teams and matches in the competition. The only steps left before synchronization now are those previously mentioned summary pages, and the mobile UI for all summary pages."}, {"post_id": 43486, "ts": "2026-08-08T19:40:09Z", "hours": 3.4014, "text": "Devlog 8 This is now where things are really starting to pick up. With the entire match scouting page done, there is now only summary, and then it is time to work on the synchronization. I was thinking about leaving the score page empty, but instead I decided to just put what would be there for FTC Decode, I will later switch it to Biobuzz when the game is known."}, {"post_id": 32018, "ts": "2026-07-20T21:46:48Z", "hours": 3.5639, "text": "Devlog 7 I have now finished the team prescout page for both phones and desktop, this is where scouts can fill in those questions from earlier. I didn’t really run into much issues, but I implemented a special system to make sure that this fill in works with my current question structure. The original issue The original issue with this system is that if a question is edited, it keeps its question id, and if a user edits the question type, that means that what was once a multiple choice, can now be a note, which would completely mess it up if a user opens a team to check on the data. The solution? If a user enters a team page with an invalid question, the question will be reset to its default, so a string will be reset to “”, a number input will be reset to 0, etc. Now this means the prescout page is pretty much completely done, and I now have to start on the match scouting page."}, {"post_id": 31565, "ts": "2026-07-20T02:20:22Z", "hours": 1.3606, "text": "Devlog 6 I have now finished the phone UI for the prescouting page, meaning the last step of this page is officially complete. The next tasks are the individual team pages and the start of the match scouting page."}, {"post_id": 31396, "ts": "2026-07-19T18:47:10Z", "hours": 4.8928, "text": "Devlog 5 I have now finished the following tasks: Ability to edit question extra fields (e.g. min/max of a slider question) Ability to delete a section Ability to add a section Ability to edit a section Ability to add a question The tasks I have left related to the question management system are: Translation keys Create the phone UI I also hit a small hiccup along the way of adding these features where I discovered due to my localstorage structure, whenever a competition is switched, the questions are all deleted (now fixed by not just using a blank localstorage.clear()) New Code /** * Creates the base skeleton structure for localstorage * * @param {boolean} force - Force overwrite of existing localstorage or not */ export function createSkeleton ( force : boolean ) { const existing = localStorage . getItem ( \" data \" ); if ( existing && ! force ) { return ; } let setPrescout = { structure : {}, sections : { \" 0 \" : { title : \" Section 1 \" , headersize : 1 , questions : [], index : 0 , }, }, }; if ( existing ) { const parsed = JSON . parse ( existing ); setPrescout . structure = parsed . prescout . structure ; setPrescout . sections = parsed . prescout . sections ; } const skeleton : LocalStorageData = { compkey : \"\" , custom : false , prescout : { structure : setPrescout . structure , sections : setPrescout . sections , teams : {}, }, match : {}, }; localStorage . setItem ( \" data \" , JSON . stringify ( skeleton )); resetAllStates (); }"}, {"post_id": 30267, "ts": "2026-07-17T18:16:39Z", "hours": 7.7772, "text": "Devlog 4 I have spent almost 8 hours working on one feature and one feature alone. That feature is this drag and drop organizer for questions. This lets the user drag around the order of questions to rearrange them, and also drag around the order of sections. The reason this took so long was because the original library I was using (dnd-kit) for drag and drop made it a complete nightmare to try and do anything, it did not have a way to tell what items were where, as it would literally just change the HTML rather than give any data. Once I switched to hello pangea dnd, it all started fitting together. It actually gave me a way to see what changes occurred, save them, and then that updates the UI. Now my next tasks are: Ability to edit question extra fields (e.g. min/max of a slider question) Ability to delete a section Ability to add a section Ability to edit a section Ability to add a question Translation keys Create the phone UI"}, {"post_id": 28962, "ts": "2026-07-15T16:08:33Z", "hours": 3.4122, "text": "Devlog 3 I have learned my mistake, so now I will be aiming for a devlog every 3-4 hours instead. I have now made it so that the progress bar for teams scouted actually shows the real progress so far of scouting, and the lights actually react to that team’s scouting progress. (I have not made the system to add questions yet, so technically all teams are fully scouted (0/0 questions answered)). I have also started work on the question organization menu. It will be a drag and drop menu to let users arrange and edit questions how they want, with a button at the bottom to edit questions. The images attached below show the progress bar and drag and drop menu (ignore the dummy data put for now, I will replace that with actual data later), and the dropdown menu, which will be for selecting question type soon. I have also attached a very rough sketch of what the draggable question and section divs themselves will look like. (the blue and red is just to indicate different colors, it is not the final color)"}, {"post_id": 28423, "ts": "2026-07-14T17:37:05Z", "hours": 15.4136, "text": "Devlog 2 So far I have now completed the main job of the competition tab, which is to handle adding custom matches and teams. One of the major issues I came along was that the UI was ugly , the modals were bland, and I wanted to add more depth, so I added that highlight in the middle which lifts the interactable content up. I had issues with the height of the modal being either too tall or too short depending on the device screen. I solved this one by making a simple new function that helps decide if the modal needs to be bumped up in height or not /** * Returns whether the current screen height is \"akward\", <= 700px for phones/tablets, and <= 899px for desktop * * @returns true | false */ export function useIsAkwardHeight (): true | false { if ( useScreenType () != \" desktop \" ) { const isAkwardHeight = useMediaQuery ({ query : \" (max-height: 700px) \" }); return isAkwardHeight ; } else { const isAkwardHeight = useMediaQuery ({ query : \" (max-height: 899px) \" }); return isAkwardHeight ; } } An example of it being used: < div className = \" desktop-warningpopup \" id = \" avoidwarningpopupheight \" style = { specifyCustomCountry ? { height : useIsAkwardHeight () ? \" 55vh \" : \" 40vh \" } : { height : useIsAkwardHeight () ? \" 40vh \" : \" 25vh \" } } > One big thing I have done in the past bit of time (I did not know that anything after 10 hours is voided, meaning I just wasted like 5 hours 😭) is the organization of a lot of the code. I also organized a lot of the CSS into barrel files so that the CSS files are not thousands of lines long anymore. I have also started work on the prescouting tab (finally) and with that I have got the UI for the progress bar of teams scouted, and also the table of teams. One big thing I have now put in this project is persisting settings, and one big settings function. export const useSettings = create ( persist < { isLightMode : boolean ; flipTheme : () => void ; isCustomCountry : boolean ; flipCustomCountry : () => void ; } > ( ( set ) => ({ isLightMode : true , flipTheme : () => { set (( state ) => ({ isLightMode : ! state . isLightMode , })); }, isCustomCountry : false , flipCustomCountry : () => { set (( state ) => ({ isCustomCountry : ! state . isCustomCountry , })); }, }), { name : \" settings \" }, ), );"}, {"post_id": 14615, "ts": "2026-06-23T19:57:27Z", "hours": 11.9042, "text": "Devlog 1 This is my first devlog here, so I will explain a little bit about what this project is. Scoutmaster is a First Tech Challenge scouting tool designed to make scouting at competitions easier for teams. It has prescouting, which is basically scouting teams’ abilities before matches start to see what features they may have that might not be seen in matches, and then match scouting which lets scouts figure out exaclty how many points on average each team scores on their own, to make alliance selection at the end much easier. The original Scoutmaster did that, but in a very primitive way, the UI was not that good, and there were many bugs. This prompted me to rebuild it from the ground up, and fix those bugs along the way with what I have learned since then. So far, I have put in about 12 hours into this project. Within this time, I have managed to get a start on: Landing Page for both Desktop and Phone Dashboard for Desktop and Phone Initial API structure { \"compkey\": \"CAONBOQ\", \"custom\": false, \"prescout\": { \"structure\": { \"numOfQuestions\": 6, // the type of questions \"questionorder\": [\"lt\", \"st\", \"cb\", \"r\", \"auto\", \"picture\"], }, \"teams\": { \"1\": { // for images, the image name will be Scouting team number - picof Scouted team number, so XXXXX-picof-XXXXX \"data\": [ \"lorem ipsum\", \"situm dilor\", true, 213, \"IMAGINEANSVGPATHRIGHTHERE\", \"16423-picof1.png\", ], \"matchesIn\": [1, 5, 67], }, \"2\": {}, \"3\": {}, }, }, \"matchscout\": { \"Q1\": { \"highlighted\": [true, true, false, true], \"teams\": [1234, 1222, 1223, 1313], \"red1\": [45, 45, 45, 45], \"red2\": [55, 55, 55, 55], \"blue1\": [555, 555, 555, 555], \"blue2\": [1, 1, 1, 1], }, \"Q2\": { \"highlighted\": [true, true, false, true], \"teams\": [1234, 1222, 1223, 1313], \"red1\": [45, 45, 45, 45], \"red2\": [55, 55, 55, 55], \"blue1\": [555, 555, 555, 555], \"blue2\": [1, 1, 1, 1], }, }, } This is the initial API structure of what this tool will be using. This is designed to allow for both official competitions and custom ones, a feature not previously included in the original Scoutmaster. The plan now is to continue making the dashboard, and then afterwards, once the full dashboard works with localstorage, begin working on the backend to actually make it synchronize across devices."}]...
|
Title: Scoutmaster 2.0 by @Zee | Stardance
Devlog Title: Scoutmaster 2.0 by @Zee | Stardance
Devlogs:
Devlog 1 This is my first devlog here, so I will explain a little bit about what this project is. Scoutmaster is a First Tech Challenge scouting tool designed to make scouting at competitions easier for teams. It has prescouting, which is basically scouting teams’ abilities before matches start to see what features they may have that might not be seen in matches, and then match scouting which lets scouts figure out exaclty how many points on average each team scores on their own, to make alliance selection at the end much easier. The original Scoutmaster did that, but in a very primitive way, the UI was not that good, and there were many bugs. This prompted me to rebuild it from the ground up, and fix those bugs along the way with what I have learned since then. So far, I have put in about 12 hours into this project. Within this time, I have managed to get a start on: Landing Page for both Desktop and Phone Dashboard for Desktop and Phone Initial API structure { "compkey": "CAONBOQ", "custom": false, "prescout": { "structure": { "numOfQuestions": 6, // the type of questions "questionorder": ["lt", "st", "cb", "r", "auto", "picture"], }, "teams": { "1": { // for images, the image name will be Scouting team number - picof Scouted team number, so XXXXX-picof-XXXXX "data": [ "lorem ipsum", "situm dilor", true, 213, "IMAGINEANSVGPATHRIGHTHERE", "16423-picof1.png", ], "matchesIn": [1, 5, 67], }, "2": {}, "3": {}, }, }, "matchscout": { "Q1": { "highlighted": [true, true, false, true], "teams": [1234, 1222, 1223, 1313], "red1": [45, 45, 45, 45], "red2": [55, 55, 55, 55], "blue1": [555, 555, 555, 555], "blue2": [1, 1, 1, 1], }, "Q2": { "highlighted": [true, true, false, true], "teams": [1234, 1222, 1223, 1313], "red1": [45, 45, 45, 45], "red2": [55, 55, 55, 55], "blue1": [555, 555, 555, 555], "blue2": [1, 1, 1, 1], }, }, } This is the initial API structure of what this tool will be using. This is designed to allow for both official competitions and custom ones, a feature not previously included in the original Scoutmaster. The plan now is to continue making the dashboard, and then afterwards, once the full dashboard works with localstorage, begin working on the backend to actually make it synchronize across devices.
Devlog 2 So far I have now completed the main job of the competition tab, which is to handle adding custom matches and teams. One of the major issues I came along was that the UI was ugly , the modals were bland, and I wanted to add more depth, so I added that highlight in the middle which lifts the interactable content up. I had issues with the height of the modal being either too tall or too short depending on the device screen. I solved this one by making a simple new function that helps decide if the modal needs to be bumped up in height or not /** * Returns whether the current screen height is "akward", <= 700px for phones/tablets, and <= 899px for desktop * * @returns true | false */ export function useIsAkwardHeight (): true | false { if ( useScreenType () != " desktop " ) { const isAkwardHeight = useMediaQuery ({ query : " (max-height: 700px) " }); return isAkwardHeight ; } else { const isAkwardHeight = useMediaQuery ({ query : " (max-height: 899px) " }); return isAkwardHeight ; } } An example of it being used: < div className = " desktop-warningpopup " id = " avoidwarningpopupheight " style = { specifyCustomCountry ? { height : useIsAkwardHeight () ? " 55vh " : " 40vh " } : { height : useIsAkwardHeight () ? " 40vh " : " 25vh " } } > One big thing I have done in the past bit of time (I did not know that anything after 10 hours is voided, meaning I just wasted like 5 hours 😭) is the organization of a lot of the code. I also organized a lot of the CSS into barrel files so that the CSS files are not thousands of lines long anymore. I have also started work on the prescouting tab (finally) and with that I have got the UI for the progress bar of teams scouted, and also the table of teams. One big thing I have now put in this project is persisting settings, and one big settings function. export const useSettings = create ( persist < { isLightMode : boolean ; flipTheme : () => void ; isCustomCountry : boolean ; flipCustomCountry : () => void ; } > ( ( set ) => ({ isLightMode : true , flipTheme : () => { set (( state ) => ({ isLightMode : ! state . isLightMode , })); }, isCustomCountry : false , flipCustomCountry : () => { set (( state ) => ({ isCustomCountry : ! state . isCustomCountry , })); }, }), { name : " settings " }, ), );
Devlog 3 I have learned my mistake, so now I will be aiming for a devlog every 3-4 hours instead. I have now made it so that the progress bar for teams scouted actually shows the real progress so far of scouting, and the lights actually react to that team’s scouting progress. (I have not made the system to add questions yet, so technically all teams are fully scouted (0/0 questions answered)). I have also started work on the question organization menu. It will be a drag and drop menu to let users arrange and edit questions how they want, with a button at the bottom to edit questions. The images attached below show the progress bar and drag and drop menu (ignore the dummy data put for now, I will replace that with actual data later), and the dropdown menu, which will be for selecting question type soon. I have also attached a very rough sketch of what the draggable question and section divs themselves will look like. (the blue and red is just to indicate different colors, it is not the final color)
Devlog 4 I have spent almost 8 hours working on one feature and one feature alone. That feature is this drag and drop organizer for questions. This lets the user drag around the order of questions to rearrange them, and also drag around the order of sections. The reason this took so long was because the original library I was using (dnd-kit) for drag and drop made it a complete nightmare to try and do anything, it did not have a way to tell what items were where, as it would literally just change the HTML rather than give any data. Once I switched to hello pangea dnd, it all started fitting together. It actually gave me a way to see what changes occurred, save them, and then that updates the UI. Now my next tasks are: Ability to edit question extra fields (e.g. min/max of a slider question) Ability to delete a section Ability to add a section Ability to edit a section Ability to add a question Translation keys Create the phone UI
Devlog 5 I have now finished the following tasks: Ability to edit question extra fields (e.g. min/max of a slider question) Ability to delete a section Ability to add a section Ability to edit a section Ability to add a question The tasks I have left related to the question management system are: Translation keys Create the phone UI I also hit a small hiccup along the way of adding these features where I discovered due to my localstorage structure, whenever a competition is switched, the questions are all deleted (now fixed by not just using a blank localstorage.clear()) New Code /** * Creates the base skeleton structure for localstorage * * @param {boolean} force - Force overwrite of existing localstorage or not */ export function createSkeleton ( force : boolean ) { const existing = localStorage . getItem ( " data " ); if ( existing && ! force ) { return ; } let setPrescout = { structure : {}, sections : { " 0 " : { title : " Section 1 " , headersize : 1 , questions : [], index : 0 , }, }, }; if ( existing ) { const parsed = JSON . parse ( existing ); setPrescout . structure = parsed . prescout . structure ; setPrescout . sections = parsed . prescout . sections ; } const skeleton : LocalStorageData = { compkey : "" , custom : false , prescout : { structure : setPrescout . structure , sections : setPrescout . sections , teams : {}, }, match : {}, }; localStorage . setItem ( " data " , JSON . stringify ( skeleton )); resetAllStates (); }
Devlog 6 I have now finished the phone UI for the prescouting page, meaning the last step of this page is officially complete. The next tasks are the individual team pages and the start of the match scouting page.
Devlog 7 I have now finished the team prescout page for both phones and desktop, this is where scouts can fill in those questions from earlier. I didn’t really run into much issues, but I implemented a special system to make sure that this fill in works with my current question structure. The original issue The original issue with this system is that if a question is edited, it keeps its question id, and if a user edits the question type, that means that what was once a multiple choice, can now be a note, which would completely mess it up if a user opens a team to check on the data. The solution? If a user enters a team page with an invalid question, the question will be reset to its default, so a string will be reset to “”, a number input will be reset to 0, etc. Now this means the prescout page is pretty much completely done, and I now have to start on the match scouting page.
Devlog 8 This is now where things are really starting to pick up. With the entire match scouting page done, there is now only summary, and then it is time to work on the synchronization. I was thinking about leaving the score page empty, but instead I decided to just put what would be there for FTC Decode, I will later switch it to Biobuzz when the game is known.
Devlog 9 I have now done a lot of work in relation to the summary page, the hardest part is now pretty much done (the all teams page). The parts left now are the top picks page, and the accept/reject page. I have also done some work that isn’t specifically for the summary page too. Now, setting a competition will make it so the FTCScout api will actually pull the teams and matches in the competition. The only steps left before synchronization now are those previously mentioned summary pages, and the mobile UI for all summary pages.
Devlog 10 I have now finished the skeleton UI for the summary tab. I originally ran into some issues because I had tried to make one table with one map and just change the data for it, but that went horribly wrong because it made the code so janky and I had to write a ton of spaghetti code for it. In the end, I decided to switch to this system instead, where there are 3 completely separate tables for each tab, that get rendered in conditionally. { currentTab == 0 ? ( < Tab1 sorted = { sorted } sortBy = { sortBy } setSortBy = { setSortBy } setSortDown = { setSortDown } sortDown = { sortDown } selected = { selected } /> ) : currentTab == 1 ? ( < Tab2 teamsBelow = { teamsBelow } /> ) : ( < Tab3 teamsAbove = { teamsAbove } /> )} This way allowed me to have more freedom and more organization with the code. I also originally ran into an issue with my rendering system for picks. When a team would set their pick order, originally to preserve the order they had in mind, the site would check all teams in the picks array, and if they were below, they would render them in. This caused an issue where if a team changed ranks through a competition, the teams below would change, and some might not render, which caused a problem in that the indexes for the reordering were off, and it would reorder the ones at the top that were not visible to the user. In the end I fixed this by simply filtering out and deleting the ones that were no longer a valid pick. updateSummary ({ picks : [ ... summary . picks . filter (( pick ) => below . includes ( pick )), ... below . filter (( team ) => ! summary . picks . includes ( team )), ], }); My goals now are to get a start on the backend part so that the main structure of the site can be complete. The tasks that would be left after that are: Polishing the summary page UI Making the mobile UI for the summary page Adding the new setting to set user’s team number by default so they don’t have to constantly set it from the tab Landing page improvements
Devlog 11 I usually space out my devlogs more, but I have now managed to get the base connection. This went by rather flawlessly due to now having the ability to use a python server for websockets, rather than the old system of having to use SQL requests with a million different RPC functions (sometimes causing queries to take up to 500ms on average) now taking only 100ms on average. This uses a simple system to take the JWT token from the user, validate it from the server to find the user id, then checks the database to see what group the user is in, then checks the group to make sure that the user is actually in that group, and if all those conditions are met, the user will connect to the websocket. If the user is the first one in the websocket, it right now just prints it, but it is designed to soon be used for a new feature. Soon, when a user joins a websocket and is the first one there, the server will load all that group’s data from the database, the reason for this is to have lightning fast connection and also make it possible to synchronize all users’ data in real time. (Whenever a user makes a change, it would update the server’s copy, and also push that change to the database)
Devlog 12 This devlog is now much more about the server side of things as that has been my focus right now. The way this all works is I have a realtime python server connect to my database and all clients. Clients are put into a realtime channel with all their teammates. When the first user of a team joins, the python server pulls all that team’s scouting data from the database and keeps it in memory. This is to speed up request response times. When a second, third, fourth, so on, user of a team joins, the server instead just gives them the data it has in memory instead of the database. To keep this all in sync, the server updates its version of that group’s data as soon as it is successfully saved to the database. It takes time to set this all up, and the parts of synchronization that I have completed so far are: Competition code changes Setting competitions to custom Adding an individual team Adding teams from API at the start Adding an individual match Adding matches from API at the start I have done one thing for the UI though, and that is finally adding a 404 page. I designed this 404 with the magnifying glass in the middle as the 0.
Devlog 13 ALL. SERVER. SYNC. IS. DONE. I have finished every single piece of work needed to sync the server with the client at all times. I am now getting close to the finish line for this project. I added info toasts for some new things, rather than just showing the success toast for an action a user may not have actually done themselves for things like adding teams and matches. There are now very few tasks left really, they are: Fully localize everything Add French Add mobile UI to summary Add custom competition handling for summary Add a favicon Fix dark mode glitches on sign in/sign up pages
Devlog 14 I have now fully finished the summary team page UI as well. Now there are charts that show the points of each individual match, and then also each individual method of scoring. I also added two new screens for when a team is in first or last, if a team is in first, then there are no teams above to accept/reject, so it shows a little bit of text, if a team is in last, there is no team below to pick, so they have a separate message. I also took the time to add the flags bit beside a team’s name in the summary page too so it can match prescout. With all of the above, I also completed the mobile UI equivalent.
Devlog 15 I have now finished the following tasks: Inviting members Uninviting members Kicking members out of group Most of the UI to do with the member system (only joining a group left) I have also added these improvements to the backend related things: The front end no longer assumes that a user is in a group and instead calls a server endpoint to check first on sign in The front end now connects on loading of the dashboard page instead of loading on the sign in page, which is to fix a current issue where if the user is already signed in but on the landing page, it makes them re-sign in, but soon it will just be a button saying “go to dash” Added UI for loading hydration for dash Made it so the add match/add team buttons were only visible to admins I now pretty much don’t have too much to do, instead it will simply be finishing touches and a little bit of work with the joining system: Make the UI for creating a group Make the UI for joining a group actually work Add rate limiting Sync settings with database Publish
Devlog 16 I just boosted the security of the tool quite a bit, now with rate limiting, aggressive schema validation, and payload size limits. The issue before was that you could spam stuff no problem, but now there is a ton of resistance, and very strict limits. I still have more plans to make it even more secure as well. I also setup meta tags so now supposedly when you send a link depending on the platform, it will show this image and a description as well. An example of some of the new aggressive schema validation is: class QuestionChanges ( StrictModel ): title : Str | None = None type : ( Literal [ " ln " , " sn " , " cb " , " a " , " img " , " n " , " mc " , " sc " , " r " , " st " ] | None ) = None opt : dict [ Annotated [ str , StringConstraints ( pattern = r " ^[0-9]$ " )], Annotated [ str , Field ( max_length = 50 )]] | None = Field ( default = None , max_length = 10 ) minmax : Annotated [ list [ Annotated [ int , Field ( ge =- 99999 , le = 99999 )]], Field ( min_length = 2 , max_length = 2 )] | None = None stars : Annotated [ int , Field ( ge = 0 , le = 10 )] | None = None I setup two different rate limiting systems, these include ones for the websocket, where each individual message type can get its own rate limit (some things should be easily called 500 times in a minute, while others should NOT be called more than 10) @ws_limit ( maxCalls = 500 , window = 60 ) async def handleUpdateTeamQuestion ( @ws_limit ( maxCalls = 8 , window = 60 ) async def handleCompCodeChange ( Window being time in seconds, maxCalls being the max calls in that window. This still needs more testing to make sure edge cases that are actually possible to do using the UI are not blocked by this security, but most regular use seems to not be affected.
Devlog 17 Now that this webapp is in its final stages of completion, I have just been completing todo list items really, these were: Fixing double websocket connect bug Adding update current team for summary to server Added functionality to settings menu Made competitions pull from an actual API instead of a json saved inside the project files Now the main items left are: Path scouting for auto Finish landing page
Devlog 18 It has been a while, but I have finally got to the final features. I have now used Render to host the python server and github pages for the actual site. I have finished the auto paths update, and now everything is setup for the final release.
Ships:
I made a realtime syncing First Tech Challenge scouting tool. It lets teams scout other teams during matches and before matches to figure out more about opponent teams, and be ready to make the best possible pick for the knockout stages....
|
1793706813.814895
|
1793793213.814895
|
|
10351
|
portfolio by @srivamsirajesh | Stardance
|
srivamsirajesh
|
1
|
4.0
|
15
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T00:31:51Z", "hours": 4.0, "multiplier": 3.46, "payout": 15, "blessing": "neutral", "text": "Its my personal portfolio with a floating dock from shadcn components. I really enjoyed customizing the existing template from magic UI.", "repo": "https://github.com/srirae/portfolio", "demo": "https://srirae.vercel.app"}]...
|
[{"post_id": 15753, "ts": "202 [{"post_id": 15753, "ts": "2026-06-25T17:01:35Z", "hours": 1.9744, "text": "Made a gantt chart for the experience part."}, {"post_id": 4441, "ts": "2026-06-07T19:22:57Z", "hours": 0.5017, "text": "Made changes to the floating dock with better icons and sorting."}, {"post_id": 3924, "ts": "2026-06-07T01:21:00Z", "hours": 2.0053, "text": "Just finished setting up the initial landing page. Will be adding more tomorrow"}]...
|
Title: portfolio by @srivamsirajesh | Stardance
D Title: portfolio by @srivamsirajesh | Stardance
Devlogs:
Just finished setting up the initial landing page. Will be adding more tomorrow
Made changes to the floating dock with better icons and sorting.
Made a gantt chart for the experience part.
Ships:
Its my personal portfolio with a floating dock from shadcn components. I really enjoyed customizing the existing template from magic UI....
|
1793706812.6718593
|
1793793212.6718593
|
|
15406
|
My very own WebOS by @rehanhabbu | Stardance
|
rehanhabbu
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-07T16:37:24Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Simple web os for stardance with: Moveable and closable tabs A welcome screen with this github repo link A canvas painter app a notes app", "repo": "https://github.com/Catsarepro21/WebOS", "demo": "https://catsarepro21.github.io/WebOS/"}]...
|
[{"post_id": 42739, "ts": "202 [{"post_id": 42739, "ts": "2026-08-07T16:36:49Z", "hours": 0.5708, "text": "Added a notes app and a paint app with a canvas"}, {"post_id": 42687, "ts": "2026-08-07T15:20:29Z", "hours": 0.465, "text": "Made the welcome screen window draggable and closable"}, {"post_id": 42210, "ts": "2026-08-06T20:27:42Z", "hours": 0.6356, "text": "Made the base of the webos Made a welcome screen with an intro and the github link Added a top navigation bar with a clock and ability to change the background. Added date and time"}]...
|
Title: My very own WebOS by @rehanhabbu | Stardanc Title: My very own WebOS by @rehanhabbu | Stardance
Devlogs:
Made the base of the webos Made a welcome screen with an intro and the github link Added a top navigation bar with a clock and ability to change the background. Added date and time
Made the welcome screen window draggable and closable
Added a notes app and a paint app with a canvas
Ships:
Simple web os for stardance with: Moveable and closable tabs A welcome screen with this github repo link A canvas painter app a notes app...
|
1793706811.5259883
|
1793793211.5259883
|
|
30593
|
MediaPad by @Dom787 | Stardance
|
Dom787
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-15T15:23:23Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "MediaPad - A Simple Macro Pad It’s just a simple Macropad that can controll in/output and media. Nothing too fancy, but it get’s the job done. I designed my PCB in KiCad, my case in Fusion and wrote python code with KMK. It’s not very demoable, but I did my best and uploaded a fully assembled model you can look at.", "repo": "https://github.com/Vovkey/MacroPad", "demo": "https://skfb.ly/pLQKS"}]...
|
[{"post_id": 28789, "ts": "202 [{"post_id": 28789, "ts": "2026-07-15T09:07:22Z", "hours": 0.3333, "text": "Firmware. I made the entire firmware in 20 minutes. I used KMK to assign my keys and used MicMute for my mute function, because KMK doesn’t have the feature."}, {"post_id": 28774, "ts": "2026-07-15T08:04:02Z", "hours": 0.7028, "text": "Finishing up the Case + Complete Model I made a full model and finished up the Case. Nothing More to say really."}, {"post_id": 24397, "ts": "2026-07-07T22:29:05Z", "hours": 0.3061, "text": "IM SORRYY I just designed the Case for my MediaPad Today, but Lookout just didn’t work so I just wrote some code for nothing. Here’s the screenshot for my 36minute recording. And the finished case. I hate Lookout"}, {"post_id": 22112, "ts": "2026-07-04T12:04:49Z", "hours": 0.6028, "text": "Today, I designed my PCB. I started with the schematic, then a the PCB itself. I ran into some trouble with aligning the switches, because they snapped to the wrong position, but after a minute of tweaking the settings, they aligned perfectly. My switches are going to have these functions: SW1 - Skip SW2 - Pause SW3 - Rewind SW4 - Volume up SW5 - Volume down SW0 - Mute/UnmuteThe switches are in a simple 2x3 layout and the ESP32 is on the back. You might be wondering, why I chose switches for volume and not a dial. Simply put, I just don’t like dials. Additionally, it just wouldn’t have fit in the layout. Next step will be designing a case."}]...
|
Title: MediaPad by @Dom787 | Stardance
Devlogs:
T Title: MediaPad by @Dom787 | Stardance
Devlogs:
Today, I designed my PCB. I started with the schematic, then a the PCB itself. I ran into some trouble with aligning the switches, because they snapped to the wrong position, but after a minute of tweaking the settings, they aligned perfectly. My switches are going to have these functions: SW1 - Skip SW2 - Pause SW3 - Rewind SW4 - Volume up SW5 - Volume down SW0 - Mute/UnmuteThe switches are in a simple 2x3 layout and the ESP32 is on the back. You might be wondering, why I chose switches for volume and not a dial. Simply put, I just don’t like dials. Additionally, it just wouldn’t have fit in the layout. Next step will be designing a case.
IM SORRYY I just designed the Case for my MediaPad Today, but Lookout just didn’t work so I just wrote some code for nothing. Here’s the screenshot for my 36minute recording. And the finished case. I hate Lookout
Finishing up the Case + Complete Model I made a full model and finished up the Case. Nothing More to say really.
Firmware. I made the entire firmware in 20 minutes. I used KMK to assign my keys and used MicMute for my mute function, because KMK doesn’t have the feature.
Ships:
MediaPad - A Simple Macro Pad It’s just a simple Macropad that can controll in/output and media. Nothing too fancy, but it get’s the job done. I designed my PCB in KiCad, my case in Fusion and wrote python code with KMK. It’s not very demoable, but I did my best and uploaded a fully assembled model you can look at....
|
1793706810.3497732
|
1793793210.3497732
|
|
19320
|
My awesome macropad! by @zak_books1 | Stardance
|
zak_books1
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T01:33:22Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A custom four-key macro pad built with KiCad, QMK firmware, and a 3D-printed case for fast, reliable controls.", "repo": "https://github.com/zakbooks1/TuffPad", "demo": ""}]...
|
[{"post_id": 9637, "ts": "2026 [{"post_id": 9637, "ts": "2026-06-16T01:25:30Z", "hours": 2.835, "text": "finaly done lets go"}, {"post_id": 9429, "ts": "2026-06-15T19:50:00Z", "hours": 0.5417, "text": "about to 3d model the case for it"}]...
|
Title: My awesome macropad! by @zak_books1 | Stard Title: My awesome macropad! by @zak_books1 | Stardance
Devlogs:
about to 3d model the case for it
finaly done lets go
Ships:
A custom four-key macro pad built with KiCad, QMK firmware, and a 3D-printed case for fast, reliable controls....
|
1793706809.400634
|
1793793209.400634
|
|
31039
|
Self Driving Car by @shreyas_rawat | Stardance
|
shreyas_rawat
|
1
|
13.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T05:14:15Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a fully autonomous RC race car powered by ROS 2, a Jetson Orin Nano, LiDAR, IMU, and a VESC. The car creates and uses maps, localizes itself in real time, follows an optimized racing line, slows down for corners, speeds up on straights, and avoids obstacles without any human input. The biggest challenge was making all of the different systems work together reliably. I spent most of my time improving localization, reducing pose lag with IMU and wheel odometry, tuning the Pure Pursuit controller, creating adaptive speed control, and building an obstacle avoidance system that could safely drive around objects and reconnect to the original path. Small improvements in one system often affected everything else, so there was a lot of testing and debugging. I’m most proud of how far the project came in such a short amount of time. It started as an RC car that constantly drifted, oversteered, and crashed into walls. By the end, it was driving smooth autonomous laps around the map completely on its own. To test the project, launch the ROS 2 workspace on the Jetson Orin Nano, connect the LiDAR, IMU, and VESC, load the provided map, and start the localization and navigation nodes. Once initialized, the car will localize itself and begin driving autonomously while avoiding obstacles and following the racing line.", "repo": "https://github.com/shreyasrawat/ros2_ws/tree/restored_localization", "demo": ""}]...
|
[{"post_id": 23947, "ts": "202 [{"post_id": 23947, "ts": "2026-07-07T04:59:30Z", "hours": 1.0444, "text": "Devlog – Pure Pursuit Controller Improvements One of the biggest improvements I made during this stage of the project was upgrading the Pure Pursuit controller. While the original implementation could follow the racing line, it wasn’t reliable enough once the car started driving faster. It would oversteer in corners, make unnecessary steering corrections, and sometimes struggle to recover after obstacle avoidance or localization drift. The first thing I focused on was waypoint tracking. The previous controller would occasionally target waypoints that were too close or even behind the vehicle, causing unstable steering behavior. I improved the waypoint selection logic so the controller consistently looks farther ahead on the racing line, resulting in much smoother and more predictable steering. I also refined how the controller handles corners. Instead of making aggressive steering inputs when approaching a turn, the updated controller transitions into corners much more naturally. This allows the car to maintain higher speeds while staying much closer to the ideal racing line. Recovery was another major area of improvement. Previously, if the car drifted off the planned path because of localization error or obstacle avoidance, it could take several seconds to find the racing line again. I redesigned the path reacquisition logic so the controller intelligently finds the best point to merge back onto the path instead of simply driving toward the nearest waypoint. This made recovery significantly faster and reduced unnecessary crashes. I spent a considerable amount of time tuning controller parameters, including lookahead behavior, steering gain, waypoint progression, and cornering performance. Most of this work involved iterative testing, making small adjustments, and analyzing the car’s behavior until it drove consistently across the entire track. Results After these improvements, the difference was immediately noticeable: Much smoother steering with fewer oscillations Cleaner cornering at higher speeds More accurate tracking of the racing line Faster recovery after localization drift or obstacle avoidance More stable autonomous driving overall Better foundation for future high-speed racing improvements These Pure Pursuit upgrades made the car feel significantly more polished and reliable. With a much stronger path-following system in place, the project is now ready for future improvements such as adaptive lookahead, curvature-based speed control, and more advanced racing algorithms."}, {"post_id": 23228, "ts": "2026-07-06T01:41:39Z", "hours": 12.36, "text": "Autonomous Self-Driving RC Race Car For my project, I spent 12 hours turning my RC car from something that constantly crashed into a fully autonomous racing platform. At the start, localization drifted, steering was unstable, obstacle avoidance made poor decisions, and the car could barely complete a lap. By the end, it could localize itself, follow an optimized racing line, slow down for corners, avoid obstacles, and drive around the map completely on its own. Hardware NVIDIA Jetson Orin Nano ROS 2 Humble RPLidar C1 Yahboom 10-Axis IMU VESC motor controller with wheel odometry Brushless RC platform What I Built I developed a complete autonomous driving stack that combines localization, path planning, obstacle avoidance, speed control, and vehicle control. Every system runs in real time on the Jetson Orin Nano. Problems I Solved Localization Drift: The car slowly lost track of where it was, causing missed turns and crashes. I rebuilt the localization system using AMCL, improved scan matching, and tuned the parameters until the pose stayed stable. Localization Delay: The LiDAR alone couldn’t keep up at higher speeds, so the car reacted too late. I integrated IMU data and wheel odometry to predict motion between LiDAR scans, making localization much smoother. Steering Instability: Small localization errors caused the steering to constantly twitch. I improved the Pure Pursuit controller with better lookahead calculations, steering smoothing, and waypoint selection so the car follows the track naturally. Cornering: The car entered corners too fast and couldn’t recover if it started understeering. I added adaptive braking that slows the car before sharp turns and accelerates again on straights, making high-speed driving much more reliable. Obstacle Avoidance: Originally the car drove straight into obstacles. I built a new occupancy grid based obstacle avoidance system that detects blocked paths, plans a safe route around obstacles, and smoothly reconnects to the original racing line. If no safe path exists, the car stops instead of crashing. Wall Detection: The obstacle detector often thought nearby walls were obstacles. After improving the detection logic, the car could correctly distinguish walls from actual obstacles and stopped making unnecessary avoidance maneuvers. Biggest Accomplishments Built a complete autonomous driving system from scratch Improved localization accuracy and stability Added IMU and wheel odometry for smoother pose estimation Reduced localization delay Stabilized TF transforms Improved Pure Pursuit path following Added adaptive speed control for corners Built intelligent obstacle avoidance Generated smoother racing lines Achieved reliable autonomous driving without human control Results At the beginning of the hackathon, the car struggled to drive across a room without hitting a wall. Twelve hours later, it could build and use maps, localize itself in real time, follow a racing line, slow down for corners, avoid obstacles, reconnect to its path, and complete laps completely autonomously. This project showed me that autonomous driving is all about combining many smaller systems into one reliable solution. Every improvement to localization, planning, and control made the entire car perform better, and by the end I had built a solid foundation for a true self-driving RC race car."}]...
|
Title: Self Driving Car by @shreyas_rawat | Starda Title: Self Driving Car by @shreyas_rawat | Stardance
Devlogs:
Autonomous Self-Driving RC Race Car For my project, I spent 12 hours turning my RC car from something that constantly crashed into a fully autonomous racing platform. At the start, localization drifted, steering was unstable, obstacle avoidance made poor decisions, and the car could barely complete a lap. By the end, it could localize itself, follow an optimized racing line, slow down for corners, avoid obstacles, and drive around the map completely on its own. Hardware NVIDIA Jetson Orin Nano ROS 2 Humble RPLidar C1 Yahboom 10-Axis IMU VESC motor controller with wheel odometry Brushless RC platform What I Built I developed a complete autonomous driving stack that combines localization, path planning, obstacle avoidance, speed control, and vehicle control. Every system runs in real time on the Jetson Orin Nano. Problems I Solved Localization Drift: The car slowly lost track of where it was, causing missed turns and crashes. I rebuilt the localization system using AMCL, improved scan matching, and tuned the parameters until the pose stayed stable. Localization Delay: The LiDAR alone couldn’t keep up at higher speeds, so the car reacted too late. I integrated IMU data and wheel odometry to predict motion between LiDAR scans, making localization much smoother. Steering Instability: Small localization errors caused the steering to constantly twitch. I improved the Pure Pursuit controller with better lookahead calculations, steering smoothing, and waypoint selection so the car follows the track naturally. Cornering: The car entered corners too fast and couldn’t recover if it started understeering. I added adaptive braking that slows the car before sharp turns and accelerates again on straights, making high-speed driving much more reliable. Obstacle Avoidance: Originally the car drove straight into obstacles. I built a new occupancy grid based obstacle avoidance system that detects blocked paths, plans a safe route around obstacles, and smoothly reconnects to the original racing line. If no safe path exists, the car stops instead of crashing. Wall Detection: The obstacle detector often thought nearby walls were obstacles. After improving the detection logic, the car could correctly distinguish walls from actual obstacles and stopped making unnecessary avoidance maneuvers. Biggest Accomplishments Built a complete autonomous driving system from scratch Improved localization accuracy and stability Added IMU and wheel odometry for smoother pose estimation Reduced localization delay Stabilized TF transforms Improved Pure Pursuit path following Added adaptive speed control for corners Built intelligent obstacle avoidance Generated smoother racing lines Achieved reliable autonomous driving without human control Results At the beginning of the hackathon, the car struggled to drive across a room without hitting a wall. Twelve hours later, it could build and use maps, localize itself in real time, follow a racing line, slow down for corners, avoid obstacles, reconnect to its path, and complete laps completely autonomously. This project showed me that autonomous driving is all about combining many smaller systems into one reliable solution. Every improvement to localization, planning, and control made the entire car perform better, and by the end I had built a solid foundation for a true self-driving RC race car.
Devlog – Pure Pursuit Controller Improvements One of the biggest improvements I made during this stage of the project was upgrading the Pure Pursuit controller. While the original implementation could follow the racing line, it wasn’t reliable enough once the car started driving faster. It would oversteer in corners, make unnecessary steering corrections, and sometimes struggle to recover after obstacle avoidance or localization drift. The first thing I focused on was waypoint tracking. The previous controller would occasionally target waypoints that were too close or even behind the vehicle, causing unstable steering behavior. I improved the waypoint selection logic so the controller consistently looks farther ahead on the racing line, resulting in much smoother and more predictable steering. I also refined how the controller handles corners. Instead of making aggressive steering inputs when approaching a turn, the updated controller transitions into corners much more naturally. This allows the car to maintain higher speeds while staying much closer to the ideal racing line. Recovery was another major area of improvement. Previously, if the car drifted off the planned path because of localization error or obstacle avoidance, it could take several seconds to find the racing line again. I redesigned the path reacquisition logic so the controller intelligently finds the best point to merge back onto the path instead of simply driving toward the nearest waypoint. This made recovery significantly faster and reduced unnecessary crashes. I spent a considerable amount of time tuning controller parameters, including lookahead behavior, steering gain, waypoint progression, and cornering performance. Most of this work involved iterative testing, making small adjustments, and analyzing the car’s behavior until it drove consistently across the entire track. Results After these improvements, the difference was immediately noticeable: Much smoother steering with fewer oscillations Cleaner cornering at higher speeds More accurate tracking of the racing line Faster recovery after localization drift or obstacle avoidance More stable autonomous driving overall Better foundation for future high-speed racing improvements These Pure Pursuit upgrades made the car feel significantly more polished and reliable. With a much stronger path-following system in place, the project is now ready for future improvements such as adaptive lookahead, curvature-based speed control, and more advanced racing algorithms.
Ships:
I built a fully autonomous RC race car powered by ROS 2, a Jetson Orin Nano, LiDAR, IMU, and a VESC. The car creates and uses maps, localizes itself in real time, follows an optimized racing line, slows down for corners, speeds up on straights, and avoids obstacles without any human input. The biggest challenge was making all of the different systems work together reliably. I spent most of my time improving localization, reducing pose lag with IMU and wheel odometry, tuning the Pure Pursuit controller, creating adaptive speed control, and building an obstacle avoidance system that could safely drive around objects and reconnect to the original path. Small improvements in one system often affected everything else, so there was a lot of testing and debugging. I’m most proud of how far the project came in such a short amount of time. It started as an RC car that constantly drifted, oversteered, and crashed into walls. By the end, it was driving smooth autonomous laps around the map completely on its own. To test the project, launch the ROS 2 workspace on the Jetson Orin Nano, connect the LiDAR, IMU, and VESC, load the provided map, and start the localization and navigation nodes. Once initialized, the car will localize itself and begin driving autonomously while avoiding obstacles and following the racing line....
|
1793706808.2246504
|
1793793208.2246504
|
|
34167
|
Benchsift by @scorpion7slayer | Stardance
|
scorpion7slayer
|
1
|
9.98
|
59
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T20:25:07Z", "hours": 8.0, "multiplier": 7.77, "payout": 59, "blessing": "neutral", "text": "New icon, site optimization & improved catalog Added two modes: a normal mode (simple category-based ranking) and a nerd mode (comprehensive, with more data). Improved the comparison page when no model is selected, as well as the catalog. Added several new benchmarks and fixed a bug with theme switching. Updated model pages styling for better clarity and readability, and adjusted benchmark colors. Models are now grouped together instead of being split by reasoning level. Fixed desktop and mobile UI. Improved overall UX and site speed — the site is also lighter now. Updated the 404 page.", "repo": "https://github.com/scorpion7slayer/benchsift", "demo": "https://benchsift.nxtaigen.com/"}]...
|
[{"post_id": 34211, "ts": "202 [{"post_id": 34211, "ts": "2026-07-24T18:46:47Z", "hours": 1.9839, "text": "Hey everyone!First off, thanks so much for all the feedback! I’ve made a few updates to the site based on your suggestions:Sorting & Categorization: Separated the Open Weight filter from the Intelligence filter (they used to be in the same spot).Header: Made the header more compact.Navigation: Moved DeepSWE and Coding Agent under the Other Benchmarks section.New Page: Added an “About” page explaining what BenchSift is and providing a bit more context on the project."}, {"post_id": 30344, "ts": "2026-07-17T20:22:08Z", "hours": 1.07, "text": "update page 404"}, {"post_id": 30171, "ts": "2026-07-17T15:09:15Z", "hours": 1.7211, "text": "Improved the comparison page when no model is selected, as well as the catalog. Added several new benchmarks and fixed a bug with theme switching. Updated the model pages styling to make them clearer and more readable, and adjusted the benchmark colors. Models are now grouped together previously they were split by reasoning level."}, {"post_id": 29048, "ts": "2026-07-15T18:15:31Z", "hours": 1.2694, "text": "New icon and website optimization"}, {"post_id": 27676, "ts": "2026-07-13T13:37:06Z", "hours": 3.6828, "text": "Added two modes: a normal mode which is a simple ranking mode based on category, and a nerd mode which is more comprehensive with more data. Fixed the desktop and mobile UI. UX has also been improved, as well as site speed. It’s also lighter now."}]...
|
Title: Benchsift by @scorpion7slayer | Stardance
Title: Benchsift by @scorpion7slayer | Stardance
Devlogs:
Added two modes: a normal mode which is a simple ranking mode based on category, and a nerd mode which is more comprehensive with more data. Fixed the desktop and mobile UI. UX has also been improved, as well as site speed. It’s also lighter now.
New icon and website optimization
Improved the comparison page when no model is selected, as well as the catalog. Added several new benchmarks and fixed a bug with theme switching. Updated the model pages styling to make them clearer and more readable, and adjusted the benchmark colors. Models are now grouped together previously they were split by reasoning level.
update page 404
Hey everyone!First off, thanks so much for all the feedback! I’ve made a few updates to the site based on your suggestions:Sorting & Categorization: Separated the Open Weight filter from the Intelligence filter (they used to be in the same spot).Header: Made the header more compact.Navigation: Moved DeepSWE and Coding Agent under the Other Benchmarks section.New Page: Added an “About” page explaining what BenchSift is and providing a bit more context on the project.
Ships:
New icon, site optimization & improved catalog Added two modes: a normal mode (simple category-based ranking) and a nerd mode (comprehensive, with more data). Improved the comparison page when no model is selected, as well as the catalog. Added several new benchmarks and fixed a bug with theme switching. Updated model pages styling for better clarity and readability, and adjusted benchmark colors. Models are now grouped together instead of being split by reasoning level. Fixed desktop and mobile UI. Improved overall UX and site speed — the site is also lighter now. Updated the 404 page....
|
1793706804.0926735
|
1793793204.0926735
|
|
55928
|
VFRAME by @Paachu | Stardance
|
Paachu
|
1
|
11.0
|
177
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T05:49:52Z", "hours": 11.0, "multiplier": 16.79, "payout": 177, "blessing": "neutral", "text": "VFRAME – A video maker Software Uh Video Maker software? Like Clipchamp? No This is a project which i tried to fix a problem The video editors are bit complex for those who we call senior citizens . some of em like to make video with very basic structure, but cant make it due to the complexity and digital gap I am bridging that digital gap using a very basic video maker VFRAME Challanges i faced 🥹 Made as website planning to host in nest , as well nest dont give public ipv4 so I dropped and rewrited code to make as a desktop software Pyside6 and html Ui QoL Improvements Auto clear up tmp files for saving storage Nice looking Ui Limitations will take time propotional to length of audio and yeah ugly terminal will show up along with window. For Every mind who want to make narrative videos especially Senior citizens, from a Gen Alpha - Vasudev Download Setup from https://editor.vasudevonden.in", "repo": "https://github.com/Along-the-skies/video-editor", "demo": "https://editor.vasudevonden.in/"}]...
|
[{"post_id": 64050, "ts": "202 [{"post_id": 64050, "ts": "2026-09-08T05:39:42Z", "hours": 1.0228, "text": "VFRAME Download page deployed After a huge work, VFRAME is ready to ship started as a webapp ended as a Desktop software Download setup from https://editor.vasudevonden.in"}, {"post_id": 63102, "ts": "2026-09-06T18:32:00Z", "hours": 0.6372, "text": "VFRAME – EXTRA DEVLOG New NAME IS HERE = \" VFRAME \""}, {"post_id": 62841, "ts": "2026-09-06T11:29:28Z", "hours": 1.1939, "text": "Video Maker Software - Day 7 WEll Completed Website –> Software change currently Building exe"}, {"post_id": 61624, "ts": "2026-09-04T16:52:03Z", "hours": 1.3206, "text": "Video Maker Software - Day 6 Switched to desktop software due to nest’s ip limitations Pyside6 Ui still uses fastapi and HTML CSS JS Aw Man This gonna be peak !"}, {"post_id": 61518, "ts": "2026-09-04T13:57:03Z", "hours": 1.5167, "text": "Video make website - Day 5 (late) completed work 😁 added a opensource like donate page (no idea if its allowed so rn placeholder) but . but.. HOW AM I SUPPOSED TO DEPLOY ! Gotta burn the head"}, {"post_id": 60252, "ts": "2026-09-02T14:41:34Z", "hours": 0.6167, "text": "Video Editor Website - Day 4 Name Lf Not a big deal today. simply got inspired by new style from ranked YSWS will i get sued? Lol"}, {"post_id": 59703, "ts": "2026-09-01T16:58:14Z", "hours": 1.3036, "text": "Video Editor Website - Day 3 Still Lf a name !! Completed first step of wiring frontend to server Working 🥳 .🪲👀"}, {"post_id": 59046, "ts": "2026-08-31T17:08:11Z", "hours": 0.7228, "text": "Video Editor Website - Day 2 Still Lf a name ! Aw Crap hackatime is down? my 2 hour is missing Today I made the frontend side I guess HTML CSS home page is made 😋✌️"}, {"post_id": 58007, "ts": "2026-08-30T10:53:21Z", "hours": 1.4631, "text": "Video Editor Website - Day 1 Completed backend server FastAPI ffmpeg server clean up Next > Frontend Still looking for a better name"}, {"post_id": 57520, "ts": "2026-08-29T18:03:12Z", "hours": 0.7631, "text": "Video editor website If you got a better name after reading description, Please Comment it down Made with love — for retired ones, from a Gen Alpha ."}]...
|
Title: VFRAME by @Paachu | Stardance
Devlogs:
Vid Title: VFRAME by @Paachu | Stardance
Devlogs:
Video editor website If you got a better name after reading description, Please Comment it down Made with love — for retired ones, from a Gen Alpha .
Video Editor Website - Day 1 Completed backend server FastAPI ffmpeg server clean up Next > Frontend Still looking for a better name
Video Editor Website - Day 2 Still Lf a name ! Aw Crap hackatime is down? my 2 hour is missing Today I made the frontend side I guess HTML CSS home page is made 😋✌️
Video Editor Website - Day 3 Still Lf a name !! Completed first step of wiring frontend to server Working 🥳 .🪲👀
Video Editor Website - Day 4 Name Lf Not a big deal today. simply got inspired by new style from ranked YSWS will i get sued? Lol
Video make website - Day 5 (late) completed work 😁 added a opensource like donate page (no idea if its allowed so rn placeholder) but . but.. HOW AM I SUPPOSED TO DEPLOY ! Gotta burn the head
Video Maker Software - Day 6 Switched to desktop software due to nest’s ip limitations Pyside6 Ui still uses fastapi and HTML CSS JS Aw Man This gonna be peak !
Video Maker Software - Day 7 WEll Completed Website –> Software change currently Building exe
VFRAME – EXTRA DEVLOG New NAME IS HERE = " VFRAME "
VFRAME Download page deployed After a huge work, VFRAME is ready to ship started as a webapp ended as a Desktop software Download setup from https://editor.vasudevonden.in
Ships:
VFRAME – A video maker Software Uh Video Maker software? Like Clipchamp? No This is a project which i tried to fix a problem The video editors are bit complex for those who we call senior citizens . some of em like to make video with very basic structure, but cant make it due to the complexity and digital gap I am bridging that digital gap using a very basic video maker VFRAME Challanges i faced 🥹 Made as website planning to host in nest , as well nest dont give public ipv4 so I dropped and rewrited code to make as a desktop software Pyside6 and html Ui QoL Improvements Auto clear up tmp files for saving storage Nice looking Ui Limitations will take time propotional to length of audio and yeah ugly terminal will show up along with window. For Every mind who want to make narrative videos especially Senior citizens, from a Gen Alpha - Vasudev Download Setup from https://editor.vasudevonden.in...
|
1793706802.87803
|
1793793202.87803
|
|
5287
|
Mars Terrain Classifier by @Gelo | Stardance
|
Gelo
|
1
|
4.0
|
27
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-10T21:25:42Z", "hours": 4.0, "multiplier": 6.75, "payout": 27, "blessing": "neutral", "text": "I made a Mars Terrain Classifier – a deep learning model that identifies 7 types of Martian geological features from orbital satellite images. The categories are: bright dune, crater, dark dune, impact ejecta, slope streak, spider, and swiss cheese. I also built a web interface where anyone can upload an image and get an instant prediction with confidence scores. The model runs on Hugging Face and the frontend is deployed on Netlify. Live demo: https://mars-terrain-classifier.netlify.app The biggest challenge was dataset handling. The official NASA dataset was over 20GB and kept failing to download. I had to find a smaller HiRISE dataset and manually organize it into train/val splits. Git was another nightmare – the trained model file was 216MB and GitHub kept rejecting my push. I had to use .gitignore and rewrite git history to remove it. Also, the model struggles with low-resolution images, weird color tones, and rover photos (since it was trained only on orbiter data). Debugging OpenCV image generation and label creation took way more time than expected. I’m proud that the model achieved 97% validation accuracy despite all the data issues. The web interface looks clean and professional – it has drag-and-drop upload, real-time predictions, and a NASA-inspired design. I’m also proud that I figured out how to deploy the model on Hugging Face and the frontend on Netlify, making it accessible to anyone without installing anything. The project went from a broken script to a fully functional web app that people can actually use. Go to https://mars-terrain-classifier.netlify.app – upload any Mars orbital image (JPG, PNG, TIFF). The model works best on clear, high-contrast satellite photos from HiRISE. It will struggle with low-resolution images, overexposed shots, or photos taken by rovers (Curiosity/Perseverance) because it was only trained on orbiter data. If the prediction confidence is low or seems wrong, it’s probably a resolution or color issue. The GitHub repo has all the code if you want to run it locally: https://github.com/gelo-dev-e/mars-terrain-classifier", "repo": "https://github.com/gelo-dev-e/mars-terrain-classifier", "demo": "https://mars-terrain-classifier.netlify.app"}]...
|
[{"post_id": 6457, "ts": "2026 [{"post_id": 6457, "ts": "2026-06-10T21:21:31Z", "hours": 0.9569, "text": "Final Devlog – Mars Terrain Classifier The Mars Terrain Classifier is now live The model runs on Hugging Face for inference, and the frontend is deployed on Netlify. You can try it here: 🔗 https://mars-terrain-classifier.netlify.app The model works well on clear orbital images from HiRISE, but it struggles with low-resolution photos, overexposed shots, or images with unusual color tones. It also has difficulty with rover-level photos (like from Curiosity or Perseverance) since it was trained only on orbiter data. Categories like spider and swiss cheese have fewer training samples, so predictions there are less confident. Upload a Mars image and see what happens – if it fails, it’s probably a resolution or color issue. The web UI is fully functional with drag-and-drop upload and real-time confidence scores. Live demo: https://mars-terrain-classifier.netlify.app GitHub: https://github.com/gelo-dev-e/mars-terrain-classifier"}, {"post_id": 3436, "ts": "2026-06-06T11:28:04Z", "hours": 0.9633, "text": "Devlog – Web UI for Mars Terrain Classifier Title: Building a Web Interface for the Mars Terrain Classifier After training the model to 97% validation accuracy, I created a web-based user interface to make the classifier accessible to anyone – no command line needed. The UI features: Drag & drop image upload Real-time prediction display 7 terrain categories with visual indicators Clean NASA-inspired design (dark theme, Mars colors) I’m not sure yet if I will deploy this publicly online, but the entire project will remain open source. The code, the training scripts, the web UI, and everything else will be available on GitHub for anyone to use, modify, or improve."}, {"post_id": 2799, "ts": "2026-06-05T16:46:46Z", "hours": 0.7358, "text": "Devlog – Training Complete! After all the dataset struggles, I finally completed the training! Training Results I trained a ResNet50 model for 20 epochs on 7 Mars terrain categories (bright dune, crater, dark dune, impact ejecta, slope streak, spider, swiss cheese). Final metrics: Training Accuracy: 96.41% Validation Accuracy: 96.80% Best Validation Accuracy: 97.00% Training Loss: 0.1261 Validation Loss: 0.0968 The model achieved 97% validation accuracy which is solid for a 7-class classifier on orbital Mars imagery. What Worked Well ResNet50 pretrained on ImageNet was a great base – even with limited data, it learned quickly Freezing early layers and only training layer4 + fc prevented overfitting Dropout (0.4 and 0.3) helped with generalization Data augmentation (random flips, rotations) made the model more robust Next Steps Now that I have a working model at 97% accuracy, here’s what’s next: Test on completely unseen validation data The 97% was measured on the validation split (20% of the original dataset) Next, I need to test on brand new images that the model has never seen – not even in validation Real-world testing Find fresh Mars orbiter images online (not from the original dataset) See if the model can correctly identify terrain types in the wild Identify weak spots Which categories is the model struggling with? Spider and swiss cheese have fewer training samples – likely lower accuracy Confusion matrix will show where mistakes happen Deploy as a demo Build a simple interface Upload any Mars image and get instant terrain prediction Goal Take the 97% validation model and prove it works on real-world, never-before-seen Mars images – not just the test split from the dataset."}, {"post_id": 1680, "ts": "2026-06-03T20:34:42Z", "hours": 0.585, "text": "I initially planned to use 4 simple categories (crater, dusty, rocky, sandy), but I ended up with 7 scientific categories from the HiRISE orbiter dataset: bright dune, crater, dark dune, impact ejecta, slope streak, spider, and swiss cheese. The main challenge was that the official NASA datasets (AI4Mars) had over 50,000 images and were too large to download (around 16-20 GB). Direct download kept failing, and the dataset required heavy preprocessing because it was semantic segmentation, not simple image classification. So instead, I used a smaller HiRISE dataset from Kaggle. The trade-off is that these are orbital telescope images, not rover photos, so the terrain looks different. Also, some categories like spider and swiss cheese are very rare, which makes the dataset imbalanced, and the model might struggle to learn them properly."}, {"post_id": 1418, "ts": "2026-06-03T13:26:55Z", "hours": 0.8628, "text": "Making the dataset (training and validation data) for my model."}]...
|
Title: Mars Terrain Classifier by @Gelo | Stardanc Title: Mars Terrain Classifier by @Gelo | Stardance
Devlogs:
Making the dataset (training and validation data) for my model.
I initially planned to use 4 simple categories (crater, dusty, rocky, sandy), but I ended up with 7 scientific categories from the HiRISE orbiter dataset: bright dune, crater, dark dune, impact ejecta, slope streak, spider, and swiss cheese. The main challenge was that the official NASA datasets (AI4Mars) had over 50,000 images and were too large to download (around 16-20 GB). Direct download kept failing, and the dataset required heavy preprocessing because it was semantic segmentation, not simple image classification. So instead, I used a smaller HiRISE dataset from Kaggle. The trade-off is that these are orbital telescope images, not rover photos, so the terrain looks different. Also, some categories like spider and swiss cheese are very rare, which makes the dataset imbalanced, and the model might struggle to learn them properly.
Devlog – Training Complete! After all the dataset struggles, I finally completed the training! Training Results I trained a ResNet50 model for 20 epochs on 7 Mars terrain categories (bright dune, crater, dark dune, impact ejecta, slope streak, spider, swiss cheese). Final metrics: Training Accuracy: 96.41% Validation Accuracy: 96.80% Best Validation Accuracy: 97.00% Training Loss: 0.1261 Validation Loss: 0.0968 The model achieved 97% validation accuracy which is solid for a 7-class classifier on orbital Mars imagery. What Worked Well ResNet50 pretrained on ImageNet was a great base – even with limited data, it learned quickly Freezing early layers and only training layer4 + fc prevented overfitting Dropout (0.4 and 0.3) helped with generalization Data augmentation (random flips, rotations) made the model more robust Next Steps Now that I have a working model at 97% accuracy, here’s what’s next: Test on completely unseen validation data The 97% was measured on the validation split (20% of the original dataset) Next, I need to test on brand new images that the model has never seen – not even in validation Real-world testing Find fresh Mars orbiter images online (not from the original dataset) See if the model can correctly identify terrain types in the wild Identify weak spots Which categories is the model struggling with? Spider and swiss cheese have fewer training samples – likely lower accuracy Confusion matrix will show where mistakes happen Deploy as a demo Build a simple interface Upload any Mars image and get instant terrain prediction Goal Take the 97% validation model and prove it works on real-world, never-before-seen Mars images – not just the test split from the dataset.
Devlog – Web UI for Mars Terrain Classifier Title: Building a Web Interface for the Mars Terrain Classifier After training the model to 97% validation accuracy, I created a web-based user interface to make the classifier accessible to anyone – no command line needed. The UI features: Drag & drop image upload Real-time prediction display 7 terrain categories with visual indicators Clean NASA-inspired design (dark theme, Mars colors) I’m not sure yet if I will deploy this publicly online, but the entire project will remain open source. The code, the training scripts, the web UI, and everything else will be available on GitHub for anyone to use, modify, or improve.
Final Devlog – Mars Terrain Classifier The Mars Terrain Classifier is now live The model runs on Hugging Face for inference, and the frontend is deployed on Netlify. You can try it here: 🔗 https://mars-terrain-classifier.netlify.app The model works well on clear orbital images from HiRISE, but it struggles with low-resolution photos, overexposed shots, or images with unusual color tones. It also has difficulty with rover-level photos (like from Curiosity or Perseverance) since it was trained only on orbiter data. Categories like spider and swiss cheese have fewer training samples, so predictions there are less confident. Upload a Mars image and see what happens – if it fails, it’s probably a resolution or color issue. The web UI is fully functional with drag-and-drop upload and real-time confidence scores. Live demo: https://mars-terrain-classifier.netlify.app GitHub: https://github.com/gelo-dev-e/mars-terrain-classifier
Ships:
I made a Mars Terrain Classifier – a deep learning model that identifies 7 types of Martian geological features from orbital satellite images. The categories are: bright dune, crater, dark dune, impact ejecta, slope streak, spider, and swiss cheese. I also built a web interface where anyone can upload an image and get an instant prediction with confidence scores. The model runs on Hugging Face and the frontend is deployed on Netlify. Live demo: https://mars-terrain-classifier.netlify.app The biggest challenge was dataset handling. The official NASA dataset was over 20GB and kept failing to download. I had to find a smaller HiRISE dataset and manually organize it into train/val splits. Git was another nightmare – the trained model file was 216MB and GitHub kept rejecting my push. I had to use .gitignore and rewrite git history to remove it. Also, the model struggles with low-resolution images, weird color tones, and rover photos (since it was trained only on orbiter data). Debugging OpenCV image generation and label creation took way more time than expected. I’m proud that the model achieved 97% validation accuracy despite all the data issues. The web interface looks clean and professional – it has drag-and-drop upload, real-time predictions, and a NASA-inspired design. I’m also proud that I figured out how to deploy the model on Hugging Face and the frontend on Netlify, making it accessible to anyone without installing anything. The project went from a broken script to a fully functional web app that people can actually use. Go to https://mars-terrain-classifier.netlify.app – upload any Mars orbital image (JPG, PNG, TIFF). The model works best on clear, high-contrast satellite photos from HiRISE. It will struggle with low-resolution images, overexposed shots, or photos taken by rovers (Curiosity/Perseverance) because it was only trained on orbiter data. If the prediction confidence is low or seems wrong, it’s probably a resolution or color issue. The GitHub repo has all the code if you want to run it locally: https://github.com/gelo-dev-e/mars-terrain-classifier...
|
1793706801.7080655
|
1793793201.7080655
|
|
40623
|
My own site! by @rileymcmanus1120 | Stardance
|
rileymcmanus1120
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-27T16:06:43Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website that I will continue to work on. I love that Hackblub helps you start these projects, and I am looking forward to making it my own as I learn more.", "repo": "https://github.com/rileymcmanus1120-lang/rileysite", "demo": "https://rileymcmanus1120-lang.github.io/rileysite"}]...
|
[{"post_id": 35860, "ts": "202 [{"post_id": 35860, "ts": "2026-07-27T15:58:43Z", "hours": 3.0697, "text": "I just started working on this while coding some other projects. I think making a website will be super cool! This is what I have so far, but I will use CSS to make it look better!"}]...
|
Title: My own site! by @rileymcmanus1120 | Stardan Title: My own site! by @rileymcmanus1120 | Stardance
Devlogs:
I just started working on this while coding some other projects. I think making a website will be super cool! This is what I have so far, but I will use CSS to make it look better!
Ships:
I made a website that I will continue to work on. I love that Hackblub helps you start these projects, and I am looking forward to making it my own as I learn more....
|
1793706800.5533473
|
1793793200.5533473
|
|
53511
|
Personal Website by @Kailey | Stardance
|
Kailey
|
1
|
11.84
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T05:37:20Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Got basic format of website done, need to finish adding projects and make it look better", "repo": "https://github.com/KaileyLiou/Personal-Website", "demo": "https://kaileyliou.com/"}]...
|
[{"post_id": 86254, "ts": "202 [{"post_id": 86254, "ts": "2026-11-01T04:48:28Z", "hours": 3.8422, "text": "Removed jittering bug in carousel, moved over all projects from v1 website, added all new projects from last year, updated correct links and images"}, {"post_id": 82896, "ts": "2026-10-26T05:35:16Z", "hours": 3.1706, "text": "Added carousel loop, figured out deploying and got .com domain"}, {"post_id": 61153, "ts": "2026-09-03T22:28:22Z", "hours": 2.0533, "text": "Worked on the UI of website Added nav bar Started projects carousel (static for now) and made cards with pictures and descriptions"}, {"post_id": 57825, "ts": "2026-08-30T04:00:13Z", "hours": 2.3283, "text": "Created heading and welcome sections of my website, added new files, learning astro"}]...
|
Title: Personal Website by @Kailey | Stardance
De Title: Personal Website by @Kailey | Stardance
Devlogs:
Created heading and welcome sections of my website, added new files, learning astro
Worked on the UI of website Added nav bar Started projects carousel (static for now) and made cards with pictures and descriptions
Added carousel loop, figured out deploying and got .com domain
Removed jittering bug in carousel, moved over all projects from v1 website, added all new projects from last year, updated correct links and images
Ships:
Got basic format of website done, need to finish adding projects and make it look better...
|
1793706799.3457088
|
1793793199.3457088
|
|
17961
|
SpotOn by @nishanth05 | Stardance
|
nishanth05
|
1
|
2.0
|
15
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T19:07:30Z", "hours": 2.0, "multiplier": 7.23, "payout": 15, "blessing": "neutral", "text": "SpotOn is a Slack bot that brings music discovery into your workspace via slash commands. Random track picks, artist comparisons, similar artist recommendations, stats, trivia, and band name generation — all without leaving Slack. It uses the free music brainz api and trivia api. Originally the project was supposed to use the spotify developer api , it’s been long since i used the api. When i tried to Implement the commands below, i encountered the error of not having a spotify premium account 😭. Finally ended up changing everyting to the music brainz api. Making a slack bot using javascript was definitely an experience, as once i’ve made a slack bot with python. Using the actions to handle the trivia was a headache second to the artist comparing So please sure do check out the /spoton-trivia and /spoton-vs commands. Of course there are other ones, make sure to try them before deciding ✌️", "repo": "https://github.com/Nishanth-S-A/SpotOn", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B8P5DRDB3"}]...
|
[{"post_id": 8254, "ts": "2026 [{"post_id": 8254, "ts": "2026-06-13T18:47:25Z", "hours": 2.0511, "text": "Guess it’s done , SpotOn Project: SpotOn · Stack: Node.js, Slack Bolt, MusicBrainz API, OpenTDB Status: ✅ Working · Commands shipped: 6 What is SpotOn? SpotOn is a Slack bot that brings music discovery into your workspace via slash commands. Random track picks, artist comparisons, similar artist recommendations, stats, trivia, and band name generation — all without leaving Slack. The goal was simple: a bot you can actually use casually in a team channel without it feeling like a chore. What I Built CommandWhat it does/spoton-trackRandom track pick from the MusicBrainz catalogue/spoton-similar Finds artists sharing genres/tags/spoton-vs vs Head-to-head stat battle/spoton-stats Full artist profile — genres, albums, recordings/spoton-triviaInteractive music trivia with Slack buttons/spoton-bandnameGenerates a random band name + debut album title The Spotify Problem I originally built everything on the Spotify Web API. No user OAuth needed — just client credentials for public catalog data. Seemed perfect. Then the /spoton-track command started throwing 403 Forbidden. The error body said it all: “Active premium subscription required for the owner of the app.” Spotify quietly tightened their API access in late 2024. Even the Search endpoint — purely public catalog data — now requires the app owner to have a Premium account. Every command I’d built against the Search API was dead. Scrapped Spotify entirely. Switched everything to MusicBrainz. Why MusicBrainz Completely free, no API key required Massive open music database Structured data: tags, release groups, recordings, artist relationships The only rule: identify your app in the User-Agent header and stay under ~1 req/sec The tradeoff is no popularity scores or audio previews, but for everything SpotOn actually needs — artist metadata, genres, recordings, album counts — it’s more than enough. Interesting Implementation Notes Similar artists without a “related” endpoint MusicBrainz has no direct “related artists” API. The workaround: fetch the source artist’s top tags, then search for other artists matching those same tags. It’s not perfect, but the results are surprisingly good — searching tag:alternative rock AND tag:indie for Radiohead surfaces exactly the kind of artists you’d expect. Parsing /spoton-vs input Getting two artist names from a single text field is messier than it looks. Users might type: Taylor Swift vs Drake Taylor Swift, Drake oasis blur (no separator at all) The final parsing tries vs split first, then comma, then a midpoint word split as a last resort. Not bulletproof, but handles the common cases. Documenting the preferred format in /spoton-help does the rest. Trivia with interactive buttons The /spoton-trivia command uses Slack’s Block Kit action buttons for the answer choices. Answer state is stored in a Map keyed by userId-channelId, so multiple people can have active questions at once. The map entry is deleted after the user answers, keeping memory clean. One gotcha: the OpenTDB API returns HTML-encoded strings (&, ', etc.) in question and answer text. Had to add a small decode() helper to strip those before sending to Slack, otherwise the blocks render raw HTML entities. MusicBrainz rate limiting MusicBrainz asks for 1 request/second max. Commands like /spoton-stats make 3 sequential API calls (artist detail, albums, recordings). Running them with Promise.all works fine most of the time, but under load it can trigger a 503. The safe pattern is sequential calls with a sleep(300) between each — slower, but reliable. Stack Runtime: Node.js Slack: Slack Bolt with Socket Mode (no public URL needed) Music data: MusicBrainz API (free, no key) Trivia: OpenTDB API (free, no key) HTTP: axios Config: dotenv"}]...
|
Title: SpotOn by @nishanth05 | Stardance
Devlogs: Title: SpotOn by @nishanth05 | Stardance
Devlogs:
Guess it’s done , SpotOn Project: SpotOn · Stack: Node.js, Slack Bolt, MusicBrainz API, OpenTDB Status: ✅ Working · Commands shipped: 6 What is SpotOn? SpotOn is a Slack bot that brings music discovery into your workspace via slash commands. Random track picks, artist comparisons, similar artist recommendations, stats, trivia, and band name generation — all without leaving Slack. The goal was simple: a bot you can actually use casually in a team channel without it feeling like a chore. What I Built CommandWhat it does/spoton-trackRandom track pick from the MusicBrainz catalogue/spoton-similar Finds artists sharing genres/tags/spoton-vs vs Head-to-head stat battle/spoton-stats Full artist profile — genres, albums, recordings/spoton-triviaInteractive music trivia with Slack buttons/spoton-bandnameGenerates a random band name + debut album title The Spotify Problem I originally built everything on the Spotify Web API. No user OAuth needed — just client credentials for public catalog data. Seemed perfect. Then the /spoton-track command started throwing 403 Forbidden. The error body said it all: “Active premium subscription required for the owner of the app.” Spotify quietly tightened their API access in late 2024. Even the Search endpoint — purely public catalog data — now requires the app owner to have a Premium account. Every command I’d built against the Search API was dead. Scrapped Spotify entirely. Switched everything to MusicBrainz. Why MusicBrainz Completely free, no API key required Massive open music database Structured data: tags, release groups, recordings, artist relationships The only rule: identify your app in the User-Agent header and stay under ~1 req/sec The tradeoff is no popularity scores or audio previews, but for everything SpotOn actually needs — artist metadata, genres, recordings, album counts — it’s more than enough. Interesting Implementation Notes Similar artists without a “related” endpoint MusicBrainz has no direct “related artists” API. The workaround: fetch the source artist’s top tags, then search for other artists matching those same tags. It’s not perfect, but the results are surprisingly good — searching tag:alternative rock AND tag:indie for Radiohead surfaces exactly the kind of artists you’d expect. Parsing /spoton-vs input Getting two artist names from a single text field is messier than it looks. Users might type: Taylor Swift vs Drake Taylor Swift, Drake oasis blur (no separator at all) The final parsing tries vs split first, then comma, then a midpoint word split as a last resort. Not bulletproof, but handles the common cases. Documenting the preferred format in /spoton-help does the rest. Trivia with interactive buttons The /spoton-trivia command uses Slack’s Block Kit action buttons for the answer choices. Answer state is stored in a Map keyed by userId-channelId, so multiple people can have active questions at once. The map entry is deleted after the user answers, keeping memory clean. One gotcha: the OpenTDB API returns HTML-encoded strings (&, ', etc.) in question and answer text. Had to add a small decode() helper to strip those before sending to Slack, otherwise the blocks render raw HTML entities. MusicBrainz rate limiting MusicBrainz asks for 1 request/second max. Commands like /spoton-stats make 3 sequential API calls (artist detail, albums, recordings). Running them with Promise.all works fine most of the time, but under load it can trigger a 503. The safe pattern is sequential calls with a sleep(300) between each — slower, but reliable. Stack Runtime: Node.js Slack: Slack Bolt with Socket Mode (no public URL needed) Music data: MusicBrainz API (free, no key) Trivia: OpenTDB API (free, no key) HTTP: axios Config: dotenv
Ships:
SpotOn is a Slack bot that brings music discovery into your workspace via slash commands. Random track picks, artist comparisons, similar artist recommendations, stats, trivia, and band name generation — all without leaving Slack. It uses the free music brainz api and trivia api. Originally the project was supposed to use the spotify developer api , it’s been long since i used the api. When i tried to Implement the commands below, i encountered the error of not having a spotify premium account 😭. Finally ended up changing everyting to the music brainz api. Making a slack bot using javascript was definitely an experience, as once i’ve made a slack bot with python. Using the actions to handle the trivia was a headache second to the artist comparing So please sure do check out the /spoton-trivia and /spoton-vs commands. Of course there are other ones, make sure to try them before deciding ✌️...
|
1793706798.1178083
|
1793793198.1178083
|
|
53509
|
Sustainable Architecture Housing by @ncHammer | St Sustainable Architecture Housing by @ncHammer | Stardance...
|
ncHammer
|
1
|
25.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-27T23:49:26Z", "hours": 25.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Everyone is human. And everyone deserves to be treated as such. That’s the message behind our model, “Solstone”. The Solstone is a humane disaster relief model that focuses on being environmentally friendly and cost effective, while making sure that those benefits don’t come at the cost of the people who live inside. A tiny concrete home with a 258.5 ft² footprint, Solstone provides basic human comfort and safety while occupying the least amount of space possible. In a disaster, displaced individuals can be quickly trained in its fast assembly and land maintenance. This lowers labor costs and thrives in a “pod village” setting, which reduces machinery mobilization costs. Once residents transition out, the village can convert into an open-air homeless shelter facility to permanently serve the community. Our design meets the requirements of a sustainable miniature housing unit using a 3D-printed concrete exterior as well as lightweight insulating concrete (LWIC). This additive manufacturing approach optimizes material efficiency, reduces on-site waste, and lowers the carbon footprint. The layered concrete walls provide a high thermal mass to stabilize interior temperatures, lowering the energy needed for climate control. This efficiency is paired with roof-mounted photovoltaic solar panels, a fuse box, and solar batteries to regulate energy consumption and maximize cost-effectiveness. We kept a strict eye on affordability, bringing the total construction cost to an average of around ~$12,500 per unit. A basic, fast-curing slab foundation costs $2,000-$3,000. The printed exterior costs $2,000, utilizing a double-skin contour for natural air insulation. LWIC concrete blocks are made from cement mixed with expanded polystyrene, which gives them the structure and support they need as well as keeping the cost to only around $3,500 for a roof of our size. Framing for the single-entry door and dual sliding ventilation windows costs $2,000. Core plumbing, surface-mounted electrical conduits, and fixtures total $3,000. Finally, the exterior rain barrel setup and solar grid structure add the remaining $2,000. The interior layout is built to serve our sustainable and humanizing goals down to every feature. The bathroom is placed in the center with two doors, allowing visitors to enter from the living room without invading the private bedroom space. Utilities like a tankless water heater supply on-demand hot water without the space and energy waste of a traditional tank. For space savings, interior doors are accordion style, the bathroom features a space-efficient Danish wet-room shower, and the toilet tank has a built-in sink that routes handwashing greywater straight to the toilet tank to eliminate water waste. Every interior feature is carefully thought out to give residents control over their space. Twin beds sit on a track system to slide together for couples or lock apart for roommates. The living room includes built-in shelves, a collapsible coffee table that folds flat into the floor, a deflatable bean bag, and a couch extension with hidden storage that expands into a fold-out bed. The kitchen is fully equipped with a medium fridge, microwave, sink, and oven, separated from the living space by a double-sided shelf wall. Outside, a unique utility loop reduces ongoing costs. Shower and sink drainage collects in a greywater tank connected to a garden hose or sprinkler, while gutters route rainwater into a barrel for backup water security. Outdoor furniture matches this flexibility: the picnic bench converts or folds flat; camping chairs feature plastic storage tubs as bases, and stackable garden beds accommodate deep-root crops. Finally, a ring of cinder blocks can support a plastic kiddie pool, which drains via a side spigot to open the space up as a community fire pit. The model was entirely modeled and rendered in Onshape, by members of our team. The background, textures, and lighting were all provided by Onshape Render Studio.", "repo": "https://github.com/noahcraig029-code/SustainableArchitecturalDesign", "demo": "https://www.thingiverse.com/thing:7411798"}]...
|
[{"post_id": 83448, "ts": "202 [{"post_id": 83448, "ts": "2026-10-27T23:44:22Z", "hours": 0.7594, "text": "All finished! After a bunch of submitting and fixing and submitting and fixing and back and forth for what felt like forever, my full model is complete! This was a ton of fun to make and really helped me flex my creative muscles. In this devlog I just put everything together and printed a scale model in one solid print for the sake of time and my own sanity. Enjoy! Ps. Sorry for the bad picture quality, I dropped my phone and my camera is falling off 😀"}, {"post_id": 70801, "ts": "2026-09-19T19:44:06Z", "hours": 0.515, "text": "Render and model finished! The Solstone is a humane disaster relief model that focuses on being environmentally friendly and cost effective, while making sure that those benefits don’t come at the cost of the people who live inside. A tiny concrete home with a 258.5 ft² footprint, Solstone provides basic human comfort and safety while occupying the least amount of space possible. In a disaster, displaced individuals can be quickly trained in its fast assembly and land maintenance. This lowers labor costs and thrives in a “pod village” setting, which reduces machinery mobilization costs. Once residents transition out, the village can convert into an open-air homeless shelter facility to permanently serve the community. Our design meets the requirements of a sustainable miniature housing unit using a 3D-printed concrete exterior as well as lightweight insulating concrete (LWIC). This additive manufacturing approach optimizes material efficiency, reduces on-site waste, and lowers the carbon footprint. The layered concrete walls provide a high thermal mass to stabilize interior temperatures, lowering the energy needed for climate control. This efficiency is paired with roof-mounted photovoltaic solar panels, a fuse box, and solar batteries to regulate energy consumption and maximize cost-effectiveness. We kept a strict eye on affordability, bringing the total construction cost to an average of around ~$12,500 per unit. A basic, fast-curing slab foundation costs $2,000-$3,000. The printed exterior costs $2,000, utilizing a double-skin contour for natural air insulation. LWIC concrete blocks are made from cement mixed with expanded polystyrene, which gives them the structure and support they need as well as keeping the cost to only around $3,500 for a roof of our size. Framing for the single-entry door and dual sliding ventilation windows costs $2,000. Core plumbing, surface-mounted electrical conduits, and fixtures total $3,000. Finally, the exterior rain barrel setup and solar grid structure add the remaining $2,000. The interior layout is built to serve our sustainable and humanizing goals down to every feature. The bathroom is placed in the center with two doors, allowing visitors to enter from the living room without invading the private bedroom space. Utilities like a tankless water heater supply on-demand hot water without the space and energy waste of a traditional tank. For space savings, interior doors are accordion style, the bathroom features a space-efficient Danish wet-room shower, and the toilet tank has a built-in sink that routes handwashing greywater straight to the toilet tank to eliminate water waste. Every interior feature is carefully thought out to give residents control over their space. Twin beds sit on a track system to slide together for couples or lock apart for roommates. The living room includes built-in shelves, a collapsible coffee table that folds flat into the floor, a deflatable bean bag, and a couch extension with hidden storage that expands into a fold-out bed. The kitchen is fully equipped with a medium fridge, microwave, sink, and oven, separated from the living space by a double-sided shelf wall. Outside, a unique utility loop reduces ongoing costs. Shower and sink drainage collects in a greywater tank connected to a garden hose or sprinkler, while gutters route rainwater into a barrel for backup water security. Outdoor furniture matches this flexibility: the picnic bench converts or folds flat; camping chairs feature plastic storage tubs as bases, and stackable garden beds accommodate deep-root crops. Finally, a ring of cinder blocks can support a plastic kiddie pool, which drains via a side spigot to open the space up as a community fire pit."}, {"post_id": 65397, "ts": "2026-09-10T14:52:00Z", "hours": 3.3231, "text": "I’ve started the rendering process! It’s slow going, but I’m making it work. I have to use a school computer because my laptop is too slow. The only downside is I can’t put Hackatime on it, so hopefully this project gets recognized as taking longer then it says lol. I’ve done a lot of work on the multifunctional furniture, and I incorporated an automatic greywater and rainwater system into the irrigation, so any water outdoors will be stored in the rain barrel to lower the water usage."}, {"post_id": 62501, "ts": "2026-09-05T22:01:39Z", "hours": 1.4253, "text": "I’ve started on the outside, and focusing on creating multi-functional furniture has really helped the process overall! The table can convert into a stand-alone bench, and the cinderblock circle can hold a kiddie pool, or a fire pit, or can have a separate piece of wood on top to serve as a table! I’m working on a garden as of right now that is watered by graywater from the shower. Sorry to post a second devlog so close, just trying to make more!"}, {"post_id": 62456, "ts": "2026-09-05T20:10:13Z", "hours": 8.6989, "text": "I finally finished my design! After much time working on decals and structural shape and layout, the baseline is finished. The roof is composed of a faux granite slab that adds natural cooling as well as increases stability without being too heavy. It also provides a natural erosion-resistance. The walls are made from 3D Printed concrete, and the wooden materials would all be locally sourced. This house would only cost around $35,000 to make, due to it’s incredibly small size, around 350 sqft. It could be constructed as a disaster relief unit for a small village of houses exactly like it! Those living in it could be trained on the simple equipment to earn their keep, as food and other essentials would be provided. After displaced peoples have moved out, the already existing structures could be used to fight homelessness, help refugees, or even just provide affordable housing to those in need. This is sustaiapod. Modeled entirely on Onshape."}, {"post_id": 58954, "ts": "2026-08-31T14:53:03Z", "hours": 6.2381, "text": "I’ve adjusted the material load uses, and created a rooftop storage space. The structural shell would cost between $4-5k to print, also causing minimal waste. The doorframes would be printed using a special steel plate that the concrete could run over, as opposed to wasteful supports that could be created by a similar desktop 3D printer. If anyone has any decoration or design ideas please let me know! The goal with this project is to create a happy and affordable home that focuses on the humane aspect of housing. People need to feel safe and at home in their living situation, so I want it to feel as high quality for as little as possible."}, {"post_id": 53364, "ts": "2026-08-23T21:42:04Z", "hours": 4.2708, "text": "Every human is a person. That’s the message behind Sustainapod, my new sustainably built emergency housing unit. I am currently working on a 3D model, as well as floorplans and build designs that go over the creation of this theoretical housing. The Sustainapod is under 400sqft, making it similar to a miniature studio apartment. Many current homeless shelters and disaster relief housing units are unsafe, densely populated, and have little privacy. The sustainapod would function either as a stand-alone unit or as a part of a small village of them, creating a community that respects it’s citizens as people. I’ve currently finished the unique design of the roof and walls. It has a small allotted private grass area that is included in the <400sqft measurement. The roof is also designed to allow rainwater to flow off without residing, causing long-term damage. Last but not least, there’s an outdoor-accessed attic for additional storage!"}]...
|
Title: Sustainable Architecture Housing by @ncHamm Title: Sustainable Architecture Housing by @ncHammer | Stardance
Devlogs:
Every human is a person. That’s the message behind Sustainapod, my new sustainably built emergency housing unit. I am currently working on a 3D model, as well as floorplans and build designs that go over the creation of this theoretical housing. The Sustainapod is under 400sqft, making it similar to a miniature studio apartment. Many current homeless shelters and disaster relief housing units are unsafe, densely populated, and have little privacy. The sustainapod would function either as a stand-alone unit or as a part of a small village of them, creating a community that respects it’s citizens as people. I’ve currently finished the unique design of the roof and walls. It has a small allotted private grass area that is included in the <400sqft measurement. The roof is also designed to allow rainwater to flow off without residing, causing long-term damage. Last but not least, there’s an outdoor-accessed attic for additional storage!
I’ve adjusted the material load uses, and created a rooftop storage space. The structural shell would cost between $4-5k to print, also causing minimal waste. The doorframes would be printed using a special steel plate that the concrete could run over, as opposed to wasteful supports that could be created by a similar desktop 3D printer. If anyone has any decoration or design ideas please let me know! The goal with this project is to create a happy and affordable home that focuses on the humane aspect of housing. People need to feel safe and at home in their living situation, so I want it to feel as high quality for as little as possible.
I finally finished my design! After much time working on decals and structural shape and layout, the baseline is finished. The roof is composed of a faux granite slab that adds natural cooling as well as increases stability without being too heavy. It also provides a natural erosion-resistance. The walls are made from 3D Printed concrete, and the wooden materials would all be locally sourced. This house would only cost around $35,000 to make, due to it’s incredibly small size, around 350 sqft. It could be constructed as a disaster relief unit for a small village of houses exactly like it! Those living in it could be trained on the simple equipment to earn their keep, as food and other essentials would be provided. After displaced peoples have moved out, the already existing structures could be used to fight homelessness, help refugees, or even just provide affordable housing to those in need. This is sustaiapod. Modeled entirely on Onshape.
I’ve started on the outside, and focusing on creating multi-functional furniture has really helped the process overall! The table can convert into a stand-alone bench, and the cinderblock circle can hold a kiddie pool, or a fire pit, or can have a separate piece of wood on top to serve as a table! I’m working on a garden as of right now that is watered by graywater from the shower. Sorry to post a second devlog so close, just trying to make more!
I’ve started the rendering process! It’s slow going, but I’m making it work. I have to use a school computer because my laptop is too slow. The only downside is I can’t put Hackatime on it, so hopefully this project gets recognized as taking longer then it says lol. I’ve done a lot of work on the multifunctional furniture, and I incorporated an automatic greywater and rainwater system into the irrigation, so any water outdoors will be stored in the rain barrel to lower the water usage.
Render and model finished! The Solstone is a humane disaster relief model that focuses on being environmentally friendly and cost effective, while making sure that those benefits don’t come at the cost of the people who live inside. A tiny concrete home with a 258.5 ft² footprint, Solstone provides basic human comfort and safety while occupying the least amount of space possible. In a disaster, displaced individuals can be quickly trained in its fast assembly and land maintenance. This lowers labor costs and thrives in a “pod village” setting, which reduces machinery mobilization costs. Once residents transition out, the village can convert into an open-air homeless shelter facility to permanently serve the community. Our design meets the requirements of a sustainable miniature housing unit using a 3D-printed concrete exterior as well as lightweight insulating concrete (LWIC). This additive manufacturing approach optimizes material efficiency, reduces on-site waste, and lowers the carbon footprint. The layered concrete walls provide a high thermal mass to stabilize interior temperatures, lowering the energy needed for climate control. This efficiency is paired with roof-mounted photovoltaic solar panels, a fuse box, and solar batteries to regulate energy consumption and maximize cost-effectiveness. We kept a strict eye on affordability, bringing the total construction cost to an average of around ~$12,500 per unit. A basic, fast-curing slab foundation costs $2,000-$3,000. The printed exterior costs $2,000, utilizing a double-skin contour for natural air insulation. LWIC concrete blocks are made from cement mixed with expanded polystyrene, which gives them the structure and support they need as well as keeping the cost to only around $3,500 for a roof of our size. Framing for the single-entry door and dual sliding ventilation windows costs $2,000. Core plumbing, surface-mounted electrical conduits, and fixtures total $3,000. Finally, the exterior rain barrel setup and solar grid structure add the remaining $2,000. The interior layout is built to serve our sustainable and humanizing goals down to every feature. The bathroom is placed in the center with two doors, allowing visitors to enter from the living room without invading the private bedroom space. Utilities like a tankless water heater supply on-demand hot water without the space and energy waste of a traditional tank. For space savings, interior doors are accordion style, the bathroom features a space-efficient Danish wet-room shower, and the toilet tank has a built-in sink that routes handwashing greywater straight to the toilet tank to eliminate water waste. Every interior feature is carefully thought out to give residents control over their space. Twin beds sit on a track system to slide together for couples or lock apart for roommates. The living room includes built-in shelves, a collapsible coffee table that folds flat into the floor, a deflatable bean bag, and a couch extension with hidden storage that expands into a fold-out bed. The kitchen is fully equipped with a medium fridge, microwave, sink, and oven, separated from the living space by a double-sided shelf wall. Outside, a unique utility loop reduces ongoing costs. Shower and sink drainage collects in a greywater tank connected to a garden hose or sprinkler, while gutters route rainwater into a barrel for backup water security. Outdoor furniture matches this flexibility: the picnic bench converts or folds flat; camping chairs feature plastic storage tubs as bases, and stackable garden beds accommodate deep-root crops. Finally, a ring of cinder blocks can support a plastic kiddie pool, which drains via a side spigot to open the space up as a community fire pit.
All finished! After a bunch of submitting and fixing and submitting and fixing and back and forth for what felt like forever, my full model is complete! This was a ton of fun to make and really helped me flex my creative muscles. In this devlog I just put everything together and printed a scale model in one solid print for the sake of time and my own sanity. Enjoy! Ps. Sorry for the bad picture quality, I dropped my phone and my camera is falling off 😀
Ships:
Everyone is human. And everyone deserves to be treated as such. That’s the message behind our model, “Solstone”. The Solstone is a humane disaster relief model that focuses on being environmentally friendly and cost effective, while making sure that those benefits don’t come at the cost of the people who live inside. A tiny concrete home with a 258.5 ft² footprint, Solstone provides basic human comfort and safety while occupying the least amount of space possible. In a disaster, displaced individuals can be quickly trained in its fast assembly and land maintenance. This lowers labor costs and thrives in a “pod village” setting, which reduces machinery mobilization costs. Once residents transition out, the village can convert into an open-air homeless shelter facility to permanently serve the community. Our design meets the requirements of a sustainable miniature housing unit using a 3D-printed concrete exterior as well as lightweight insulating concrete (LWIC). This additive manufacturing approach optimizes material efficiency, reduces on-site waste, and lowers the carbon footprint. The layered concrete walls provide a high thermal mass to stabilize interior temperatures, lowering the energy needed for climate control. This efficiency is paired with roof-mounted photovoltaic solar panels, a fuse box, and solar batteries to regulate energy consumption and maximize cost-effectiveness. We kept a strict eye on affordability, bringing the total construction cost to an average of around ~$12,500 per unit. A basic, fast-curing slab foundation costs $2,000-$3,000. The printed exterior costs $2,000, utilizing a double-skin contour for natural air insulation. LWIC concrete blocks are made from cement mixed with expanded polystyrene, which gives them the structure and support they need as well as keeping the cost to only around $3,500 for a roof of our size. Framing for the single-entry door and dual sliding ventilation windows costs $2,000. Core plumbing, surface-mounted electrical conduits, and fixtures total $3,000. Finally, the exterior rain barrel setup and solar grid structure add the remaining $2,000. The interior layout is built to serve our sustainable and humanizing goals down to every feature. The bathroom is placed in the center with two doors, allowing visitors to enter from the living room without invading the private bedroom space. Utilities like a tankless water heater supply on-demand hot water without the space and energy waste of a traditional tank. For space savings, interior doors are accordion style, the bathroom features a space-efficient Danish wet-room shower, and the toilet tank has a built-in sink that routes handwashing greywater straight to the toilet tank to eliminate water waste. Every interior feature is carefully thought out to give residents control over their space. Twin beds sit on a track system to slide together for couples or lock apart for roommates. The living room includes built-in shelves, a collapsible coffee table that folds flat into the floor, a deflatable bean bag, and a couch extension with hidden storage that expands into a fold-out bed. The kitchen is fully equipped with a medium fridge, microwave, sink, and oven, separated from the living space by a double-sided shelf wall. Outside, a unique utility loop reduces ongoing costs. Shower and sink drainage collects in a greywater tank connected to a garden hose or sprinkler, while gutters route rainwater into a barrel for backup water security. Outdoor furniture matches this flexibility: the picnic bench converts or folds flat; camping chairs feature plastic storage tubs as bases, and stackable garden beds accommodate deep-root crops. Finally, a ring of cinder blocks can support a plastic kiddie pool, which drains via a side spigot to open the space up as a community fire pit. The model was entirely modeled and rendered in Onshape, by members of our team. The background, textures, and lighting were all provided by Onshape Render Studio....
|
1793706796.9870222
|
1793793196.9870222
|
|
28165
|
Tutoring Website by @Iarush7 | Stardance
|
Iarush7
|
1
|
4.0
|
19
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-12T01:16:56Z", "hours": 4.0, "multiplier": 4.65, "payout": 19, "blessing": "neutral", "text": "Here is a tutoring website that I made that is simple, clean, and easily viewable on multiple platforms for potential customers. The website is simple in the sense that the only functional feature is a button that is hyperlinked to a Google form. The biggest thing I learned with this project is how to use the whole React.js ecosystem. Prior to this, I only made websites using standard HTML. Learning how to set up a React.js project and deploying it was a good opportunity to learn more about web development.", "repo": "https://github.com/Iarush/Iarush-Tutoring", "demo": "https://iarush.github.io/Iarush-Tutoring/"}]...
|
[{"post_id": 45493, "ts": "202 [{"post_id": 45493, "ts": "2026-08-12T00:59:04Z", "hours": 0.4317, "text": "Finally got my website running through GitHub Pages! I used the npm gh-pages package to create a branch with the built files. This branch was later connected to GitHub Pages to launch the website! A few changes were made to the vite.config.js and package.json file to allow GitHub to access the project and launch the website! You can visit the website here: https://iarush.github.io/Iarush-Tutoring/"}, {"post_id": 45450, "ts": "2026-08-11T22:17:57Z", "hours": 0.7364, "text": "Added the actual logo to the site (top left). Also changed the layout of the intro page. Removed the cream-colored column and instead added a faded image that looks cleaner. This was simply done by adding a gradient rectangle on top of the picture using a CSS linear gradient. The overlay was positioned using position: absolute so it does not move other content around. Finally, I added a favicon to the website"}, {"post_id": 45273, "ts": "2026-08-11T16:55:55Z", "hours": 0.6783, "text": "On small devices, the website looked really funky, and the hero headline was nearly invisible. Essentially, the CSS for the columns and the background were coded to different thresholds, which failed to account for small devices. To rectify this, the background and the two columns were coded to the same min width."}, {"post_id": 23903, "ts": "2026-07-07T03:22:31Z", "hours": 1.1569, "text": "My website is gong to be focused on a maroon and cream color which give a more heritage and I guess smart/ ivy look, so I decided to implement that into my website. Additionally, I took inspiration from the website design of: https://www.revolutionprep.com/ . I really liked the layout of their website. With these two modifications needed, I re did the CSS aspects of my project to create a new front end look. Next step, figure out the backend integrations before I can polish the front end (Lowkey was more important ngl)."}, {"post_id": 18701, "ts": "2026-06-29T21:47:21Z", "hours": 0.9817, "text": "Just finished updating my website to React Standards. I previously only new old style static coding so my website pretty much sat inside a single html file. However, learning with Gemini showed that I should move into a React style project. So, I updated my project, downloaded node.js for local hosting and even implemented Tailwind v4 CSS to learn newer web dev skills"}]...
|
Title: Tutoring Website by @Iarush7 | Stardance
D Title: Tutoring Website by @Iarush7 | Stardance
Devlogs:
Just finished updating my website to React Standards. I previously only new old style static coding so my website pretty much sat inside a single html file. However, learning with Gemini showed that I should move into a React style project. So, I updated my project, downloaded node.js for local hosting and even implemented Tailwind v4 CSS to learn newer web dev skills
My website is gong to be focused on a maroon and cream color which give a more heritage and I guess smart/ ivy look, so I decided to implement that into my website. Additionally, I took inspiration from the website design of: https://www.revolutionprep.com/ . I really liked the layout of their website. With these two modifications needed, I re did the CSS aspects of my project to create a new front end look. Next step, figure out the backend integrations before I can polish the front end (Lowkey was more important ngl).
On small devices, the website looked really funky, and the hero headline was nearly invisible. Essentially, the CSS for the columns and the background were coded to different thresholds, which failed to account for small devices. To rectify this, the background and the two columns were coded to the same min width.
Added the actual logo to the site (top left). Also changed the layout of the intro page. Removed the cream-colored column and instead added a faded image that looks cleaner. This was simply done by adding a gradient rectangle on top of the picture using a CSS linear gradient. The overlay was positioned using position: absolute so it does not move other content around. Finally, I added a favicon to the website
Finally got my website running through GitHub Pages! I used the npm gh-pages package to create a branch with the built files. This branch was later connected to GitHub Pages to launch the website! A few changes were made to the vite.config.js and package.json file to allow GitHub to access the project and launch the website! You can visit the website here: https://iarush.github.io/Iarush-Tutoring/
Ships:
Here is a tutoring website that I made that is simple, clean, and easily viewable on multiple platforms for potential customers. The website is simple in the sense that the only functional feature is a button that is hyperlinked to a Google form. The biggest thing I learned with this project is how to use the whole React.js ecosystem. Prior to this, I only made websites using standard HTML. Learning how to set up a React.js project and deploying it was a good opportunity to learn more about web development....
|
1793706795.7565277
|
1793793195.7565277
|
|
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)...
|
1793706794.5286303
|
1793793194.5286303
|
|
33236
|
Chip8Emulator by @renanfartes | Stardance
|
renanfartes
|
1
|
19.0
|
295
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-18T16:40:58Z", "hours": 19.0, "multiplier": 15.53, "payout": 295, "blessing": "neutral", "text": "[EPILEPSY WARNING - Chip8 due to hardware limitation issues, may have some image-flickering that are considered flashing lights. If you have some issue, please skip this project] I published this project with thee goal of learning how a emulator works, and i learned a lot. I coded trying to not use any AI but i used as described on the devlogs and on the tag described bellow. I learned how to handle when nothing works, search on raw google and stack overflow while handling with UI issues and registers, CPU fetch-decode-execute cycle etc. Mobile note: The app works fine on firefox mobile, but in chrome the keyboard may be buggy. In desktop any browser works.", "repo": "https://github.com/Renan-G-projec/Chip8Emulator", "demo": "https://stardance-chip8.netlify.app/"}]...
|
[{"post_id": 30760, "ts": "202 [{"post_id": 30760, "ts": "2026-07-18T16:35:25Z", "hours": 0.4189, "text": "Devlog #015 Deployed!! I deployed the calculator and pushed the README to the repository. Everything is great to work now!"}, {"post_id": 30735, "ts": "2026-07-18T15:47:35Z", "hours": 0.8692, "text": "Devlog #014 [EPILEPSY ALLERT - Chip 8 xor logic flickers the image blazzingly fast so it may cause some visual discomfort] Sound implemented! All the chip8 logic was ready but the sound was missing, so i took some time to think. I searched and found the MDN p[age about the browser audio api. It is complicated, it is like an opengl with pipes but for sound processing. I created Also the classes name does not help I read and found a liiitle solution tha isn’t ideal and wrapped it into a Speakers class. But makes sense. That architecture allows complex audio processing and is useful at all. You create an oscilator node, makes it point to a gain node to change volume and then point the gain’s node output to the computer."}, {"post_id": 30478, "ts": "2026-07-18T02:43:31Z", "hours": 0.6989, "text": "Devlog #013 [EPILEPSY ALERT - The video contains flickering images since CHIP 8 uses XOR sprite rendering] FInnally bug corrected!! I was having a strange bug with the CHIP 8 engine where the pong logic was inverted. I passed almost 40 minutes trying to rewrite the code to the canvas (since the VF register is used to descrive collisions). But the bug had nothing to deal with collisions, was a underflow flag that i inversed the logic without wanting. I pasted some part of the code onto the AI to debug after that and after this it took me only 1 minute to fix it. I’m sad to break the streak of not using AI."}, {"post_id": 29864, "ts": "2026-07-17T00:51:29Z", "hours": 0.9867, "text": "Devlog #012 Streched up the ROM cards and added this little about-me section. I also updated the Page’s title and i drawed this weird icon that someway feels off. I plan to make the final adjustments like: Fix: Pong ROM not loading add: Sound implementation add: Some mobile support (The keys of the keyboard are not capable of handling multiple pressed strokes and that makes undefined behavior as the keyboard forget what key to clear) Hope y’all are finding thiss new style a little better :)"}, {"post_id": 29526, "ts": "2026-07-16T14:44:49Z", "hours": 2.3522, "text": "Devlog #011 Sooo Now the project is getting a liiitle less weird I added this white borders, refactored the file input style, added this ROMs section and all the components necessary to make this whole thing work. I also added a raw coded console-printing of the ROM in base64 at the terminal for uploading this ROMs. Some of them are actually weeird because the console of chip8 wasn’t created actually. Chip8 was never a reaaal console, it is more like an entire programming lang. So i tried my best making the keyboard, but some games were designed in another layouts. I hope this retro-style looks great!!!"}, {"post_id": 29191, "ts": "2026-07-15T22:35:11Z", "hours": 1.3811, "text": "Devlog #010 FINNALLY A PRESENTABLE STYLE It still ugly, but i refactored the fonts, the buttons and speccially the colors. I also added a reactivity-based system that tracks the current rom and display it’s names. I also added the ROM template so the examples will be displayed soon. My next steps is probably to organize some ready-to-use ROMS, a LocalStorage system to allow ROM uploading persistance, the sound system and some historical context of this virtual console"}, {"post_id": 28270, "ts": "2026-07-14T12:53:37Z", "hours": 1.2353, "text": "Devlog #009 [EPILEPSY ALERT - Since Chip 8 uses XOR rendering logic, the images are flickering] Console remade! I added some fonts and forked into this braanch for refactoring the visual components. I moved a lot of components, and it stills ugly. I reaally tryed to make height the same as width but i didn’t find in stack overflow or any website, and i didn’t wanted to use AI. So i changed the screen size, the button, alll the keyboard was re-written and i thiink it will eventually be working fine in mobile screens."}, {"post_id": 28227, "ts": "2026-07-14T11:28:25Z", "hours": 0.8358, "text": "Devlog #008 Speed and bug fix I made the game repond faster by splitting it in 3 timers. I also added a clearInterval feat so the button “InitGame” doesn’t speed the game more and more. I tried optimizing the canvas by only updating the changed pixels. Was a total failure. So i forget about it. I also added keyboard mapping so clicking on the UI layer at the right isn’t needed. I also corrected the bitshifiting bug thsat were buggin all the draw. The game is already playable!! :) But this website is a crap of UI Idk if i try to style it or use vuetify componnt lib."}, {"post_id": 28197, "ts": "2026-07-14T10:23:37Z", "hours": 1.1539, "text": "Devlog #007 FINALLY IT WORKS I had a lot of headache fixing bugs. The first one was a opcode that wasn’t being captured (0xF007, which gives the timer, so the game was being paused becs i wasn’t capturing it) After, i realized none of the sprites were beign rendered correctly (as is seen at my previous devlogs). But debbugging on the browser i saw that the getAsset() function were returning the entire rom, not the sprites. So i fixed it using a simple slice. I don’t why, but everything seens to be rendering by inverse. Probably is some crazy bitshift that i made and need to fix. Also, the game runs at 60 fps, but that’s slow to the time. Only the timers shall run at 60 fps as i saw. XD"}, {"post_id": 27388, "ts": "2026-07-12T22:21:15Z", "hours": 5.1472, "text": "Devlog #006 FINALLUYYSIJKURFHYIUADSHJIUFKLHJNDJLKOFH After 5 hours of pure and incessive headaache,without any clue about why nothing was being rendered, i finally make up to render my first rom in chip8 That took me the most painful experience i’ve saw in my life. Not even kidding, Binary in JS is like harder than assembly. After 2 hours i realized that trhe Mdn docs on my language was also not updated. So my file reader wasn’t even using promises. I realized only when i took the entire html to gemini and asked how i would figure it out without using AI? I also used ai to help me debug because i was 4 hours without seeiing anything on the screen, is just like a blind pinata write a big switch in js But i used AI only at the end, on the past 10 minutes. And none of any other code was written by ai. Every single opcode was weirtten by hand. I used to exactly: know about endianness (why in my machine the bytes were in x-order and in the file api of my btowser was in y order, detect rom loading bugs and for the text fonts. Only) I am so stressed that neither the keyboard was done neither the loading window are styled."}, {"post_id": 26639, "ts": "2026-07-11T15:58:22Z", "hours": 0.6289, "text": "Devlog #005 ROM loading added! I added this raw-styled rom loader so the user can input their own files(none ready-to-use rom added yet). I’ll probably make fetch to a chip8 repo in github for that. Handling with promises is always complicated, but i think the most difficult part is done./ I created a ROM Loader helper class that will Receive a FIle object, load inside it and will have methods stream-like (getByte) etc."}, {"post_id": 26602, "ts": "2026-07-11T15:04:26Z", "hours": 1.4175, "text": "Devlog #004 Added The keyboard functionality! Now the keyboard can listen to user input and only a key is pressed at a time. It does not handle mobile yet, so i’ll need to add this later. I also had to handle with a hard time trying to style this keyboard."}, {"post_id": 26313, "ts": "2026-07-11T01:23:54Z", "hours": 0.5525, "text": "Devlog #003 Canvas class finally added! I spent a lot of time trying to undestand how the canvas API works on JS. So i scaffolded a wrapper class to make the code reusable. I tested and played around and everything seems to work. I added a clear and a render method. Next step is to create the XOR logic that chip 8 have and start working on the Chip8 Engine class."}, {"post_id": 26256, "ts": "2026-07-10T22:53:54Z", "hours": 0.5058, "text": "Devlog #002 FInaalllly i discovered why the canvas div was a little greater than expected. I raw-searched with google and found a rabbit hole but this Reddit post from 3 years ago saved me without recurring for AI. I also added the keyboard. As there’s 16 buttons i didn’t harded coded it, i added a simple function (with on-mounted vue property) that creates and appends the buttons to the keyboard (used toString with radix 16 to display hex). None functionality added yet XD"}, {"post_id": 25615, "ts": "2026-07-10T00:20:31Z", "hours": 0.9206, "text": "Devlog #001 I’ve scaffolded this project! It is supposed to be a simple CHIP8 emulator with ready to play ROMS and custom ROM uploading. So, i set all the vue boilerplate and configured vite. After i started workling on the window and it simply gave me a lot of headache because a margin collapse feature that happened to be on my browser. I added the component in a reusable way and it is just this simple. I added some CSS Variables (to make dark themes after) and media queries so the main window scale propperly. I spent more time that i wanted debuigging."}]...
|
Title: Chip8Emulator by @renanfartes | Stardance
Title: Chip8Emulator by @renanfartes | Stardance
Devlogs:
Devlog #001 I’ve scaffolded this project! It is supposed to be a simple CHIP8 emulator with ready to play ROMS and custom ROM uploading. So, i set all the vue boilerplate and configured vite. After i started workling on the window and it simply gave me a lot of headache because a margin collapse feature that happened to be on my browser. I added the component in a reusable way and it is just this simple. I added some CSS Variables (to make dark themes after) and media queries so the main window scale propperly. I spent more time that i wanted debuigging.
Devlog #002 FInaalllly i discovered why the canvas div was a little greater than expected. I raw-searched with google and found a rabbit hole but this Reddit post from 3 years ago saved me without recurring for AI. I also added the keyboard. As there’s 16 buttons i didn’t harded coded it, i added a simple function (with on-mounted vue property) that creates and appends the buttons to the keyboard (used toString with radix 16 to display hex). None functionality added yet XD
Devlog #003 Canvas class finally added! I spent a lot of time trying to undestand how the canvas API works on JS. So i scaffolded a wrapper class to make the code reusable. I tested and played around and everything seems to work. I added a clear and a render method. Next step is to create the XOR logic that chip 8 have and start working on the Chip8 Engine class.
Devlog #004 Added The keyboard functionality! Now the keyboard can listen to user input and only a key is pressed at a time. It does not handle mobile yet, so i’ll need to add this later. I also had to handle with a hard time trying to style this keyboard.
Devlog #005 ROM loading added! I added this raw-styled rom loader so the user can input their own files(none ready-to-use rom added yet). I’ll probably make fetch to a chip8 repo in github for that. Handling with promises is always complicated, but i think the most difficult part is done./ I created a ROM Loader helper class that will Receive a FIle object, load inside it and will have methods stream-like (getByte) etc.
Devlog #006 FINALLUYYSIJKURFHYIUADSHJIUFKLHJNDJLKOFH After 5 hours of pure and incessive headaache,without any clue about why nothing was being rendered, i finally make up to render my first rom in chip8 That took me the most painful experience i’ve saw in my life. Not even kidding, Binary in JS is like harder than assembly. After 2 hours i realized that trhe Mdn docs on my language was also not updated. So my file reader wasn’t even using promises. I realized only when i took the entire html to gemini and asked how i would figure it out without using AI? I also used ai to help me debug because i was 4 hours without seeiing anything on the screen, is just like a blind pinata write a big switch in js But i used AI only at the end, on the past 10 minutes. And none of any other code was written by ai. Every single opcode was weirtten by hand. I used to exactly: know about endianness (why in my machine the bytes were in x-order and in the file api of my btowser was in y order, detect rom loading bugs and for the text fonts. Only) I am so stressed that neither the keyboard was done neither the loading window are styled.
Devlog #007 FINALLY IT WORKS I had a lot of headache fixing bugs. The first one was a opcode that wasn’t being captured (0xF007, which gives the timer, so the game was being paused becs i wasn’t capturing it) After, i realized none of the sprites were beign rendered correctly (as is seen at my previous devlogs). But debbugging on the browser i saw that the getAsset() function were returning the entire rom, not the sprites. So i fixed it using a simple slice. I don’t why, but everything seens to be rendering by inverse. Probably is some crazy bitshift that i made and need to fix. Also, the game runs at 60 fps, but that’s slow to the time. Only the timers shall run at 60 fps as i saw. XD
Devlog #008 Speed and bug fix I made the game repond faster by splitting it in 3 timers. I also added a clearInterval feat so the button “InitGame” doesn’t speed the game more and more. I tried optimizing the canvas by only updating the changed pixels. Was a total failure. So i forget about it. I also added keyboard mapping so clicking on the UI layer at the right isn’t needed. I also corrected the bitshifiting bug thsat were buggin all the draw. The game is already playable!! :) But this website is a crap of UI Idk if i try to style it or use vuetify componnt lib.
Devlog #009 [EPILEPSY ALERT - Since Chip 8 uses XOR rendering logic, the images are flickering] Console remade! I added some fonts and forked into this braanch for refactoring the visual components. I moved a lot of components, and it stills ugly. I reaally tryed to make height the same as width but i didn’t find in stack overflow or any website, and i didn’t wanted to use AI. So i changed the screen size, the button, alll the keyboard was re-written and i thiink it will eventually be working fine in mobile screens.
Devlog #010 FINNALLY A PRESENTABLE STYLE It still ugly, but i refactored the fonts, the buttons and speccially the colors. I also added a reactivity-based system that tracks the current rom and display it’s names. I also added the ROM template so the examples will be displayed soon. My next steps is probably to organize some ready-to-use ROMS, a LocalStorage system to allow ROM uploading persistance, the sound system and some historical context of this virtual console
Devlog #011 Sooo Now the project is getting a liiitle less weird I added this white borders, refactored the file input style, added this ROMs section and all the components necessary to make this whole thing work. I also added a raw coded console-printing of the ROM in base64 at the terminal for uploading this ROMs. Some of them are actually weeird because the console of chip8 wasn’t created actually. Chip8 was never a reaaal console, it is more like an entire programming lang. So i tried my best making the keyboard, but some games were designed in another layouts. I hope this retro-style looks great!!!
Devlog #012 Streched up the ROM cards and added this little about-me section. I also updated the Page’s title and i drawed this weird icon that someway feels off. I plan to make the final adjustments like: Fix: Pong ROM not loading add: Sound implementation add: Some mobile support (The keys of the keyboard are not capable of handling multiple pressed strokes and that makes undefined behavior as the keyboard forget what key to clear) Hope y’all are finding thiss new style a little better :)
Devlog #013 [EPILEPSY ALERT - The video contains flickering images since CHIP 8 uses XOR sprite rendering] FInnally bug corrected!! I was having a strange bug with the CHIP 8 engine where the pong logic was inverted. I passed almost 40 minutes trying to rewrite the code to the canvas (since the VF register is used to descrive collisions). But the bug had nothing to deal with collisions, was a underflow flag that i inversed the logic without wanting. I pasted some part of the code onto the AI to debug after that and after this it took me only 1 minute to fix it. I’m sad to break the streak of not using AI.
Devlog #014 [EPILEPSY ALLERT - Chip 8 xor logic flickers the image blazzingly fast so it may cause some visual discomfort] Sound implemented! All the chip8 logic was ready but the sound was missing, so i took some time to think. I searched and found the MDN p[age about the browser audio api. It is complicated, it is like an opengl with pipes but for sound processing. I created Also the classes name does not help I read and found a liiitle solution tha isn’t ideal and wrapped it into a Speakers class. But makes sense. That architecture allows complex audio processing and is useful at all. You create an oscilator node, makes it point to a gain node to change volume and then point the gain’s node output to the computer.
Devlog #015 Deployed!! I deployed the calculator and pushed the README to the repository. Everything is great to work now!
Ships:
[EPILEPSY WARNING - Chip8 due to hardware limitation issues, may have some image-flickering that are considered flashing lights. If you have some issue, please skip this project] I published this project with thee goal of learning how a emulator works, and i learned a lot. I coded trying to not use any AI but i used as described on the devlogs and on the tag described bellow. I learned how to handle when nothing works, search on raw google and stack overflow while handling with UI issues and registers, CPU fetch-decode-execute cycle etc. Mobile note: The app works fine on firefox mobile, but in chrome the keyboard may be buggy. In desktop any browser works....
|
1793706793.2704988
|
1793793193.2704988
|
|
1130
|
Anthony Queen's Awesome Website by @Anthony_Qu Anthony Queen's Awesome Website by @Anthony_Queen | Stardance...
|
Anthony_Queen
|
1
|
13.0
|
56
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T22:39:17Z", "hours": 13.0, "multiplier": 4.52, "payout": 56, "blessing": "neutral", "text": "This is my Personal Website, I made it cause I really wanted my tiny space on the internet where I could express myself and my ideas freely", "repo": "https://github.com/Anthony-Queen/PersonalWebsite", "demo": "https://anthony-queen.github.io/PersonalWebsite/"}]...
|
[{"post_id": 21111, "ts": "202 [{"post_id": 21111, "ts": "2026-07-02T22:11:14Z", "hours": 0.6367, "text": "Added Little Blog post about a DnD project I’ll start soon, also reformatted the C page blog cause it was horrible"}, {"post_id": 16132, "ts": "2026-06-26T07:04:41Z", "hours": 2.1894, "text": "Added the procrastination counter which uses and ESP32 to log the number"}, {"post_id": 10698, "ts": "2026-06-17T15:47:27Z", "hours": 9.5283, "text": "Reformat Main Layout, add many linky links, and just write stuff in general"}, {"post_id": 265, "ts": "2026-06-01T13:55:20Z", "hours": 0.6994, "text": "Start working on website main palette (And added an easter egg)"}]...
|
Title: Anthony Queen's Awesome Website by @Ant Title: Anthony Queen's Awesome Website by @Anthony_Queen | Stardance
Devlogs:
Start working on website main palette (And added an easter egg)
Reformat Main Layout, add many linky links, and just write stuff in general
Added the procrastination counter which uses and ESP32 to log the number
Added Little Blog post about a DnD project I’ll start soon, also reformatted the C page blog cause it was horrible
Ships:
This is my Personal Website, I made it cause I really wanted my tiny space on the internet where I could express myself and my ideas freely...
|
1793706792.1073751
|
1793793192.1073751
|
|
28430
|
My cool Portfolio! by @VibeSlayer | Stardance
|
VibeSlayer
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T17:24:19Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My website if finally complete! It was pretty easy for me to build my website because i have made these kind of things before and i have not complicated anything. I hope y’all like it!", "repo": "https://github.com/VibeSlayer-code/my-cool-portfolio", "demo": "https://realvibeslayer.vercel.app/"}]...
|
[{"post_id": 18649, "ts": "202 [{"post_id": 18649, "ts": "2026-06-29T20:43:20Z", "hours": 2.5558, "text": "DevLog 1 — Portfolio Website Begins Today I made the first section of my portfolio website. I wanted it to have a guns.lol-style dark aesthetic , and honestly, I think I kinda won lmao. I added a music player with a lyrics viewer , and the player already has one of my favorite songs. I also designed a custom typography graphic for my username, which makes the page feel way more personal and unique. This is not meant to be a normal boring portfolio. I want it to feel like a cool profile page with music, socials, dark visuals, and personality. Tomorrow Tomorrow I’m going to work on the About section and the Projects section, then polish the overall animations and layout."}]...
|
Title: My cool Portfolio! by @VibeSlayer | Stardan Title: My cool Portfolio! by @VibeSlayer | Stardance
Devlogs:
DevLog 1 — Portfolio Website Begins Today I made the first section of my portfolio website. I wanted it to have a guns.lol-style dark aesthetic , and honestly, I think I kinda won lmao. I added a music player with a lyrics viewer , and the player already has one of my favorite songs. I also designed a custom typography graphic for my username, which makes the page feel way more personal and unique. This is not meant to be a normal boring portfolio. I want it to feel like a cool profile page with music, socials, dark visuals, and personality. Tomorrow Tomorrow I’m going to work on the About section and the Projects section, then polish the overall animations and layout.
Ships:
My website if finally complete! It was pretty easy for me to build my website because i have made these kind of things before and i have not complicated anything. I hope y’all like it!...
|
1793706790.9717922
|
1793793190.9717922
|
|
39924
|
Pulse New Tab by @shravyakr0 | Stardance
|
shravyakr0
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-05T10:08:31Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a custom browser start page called Pulse New Tab . Instead of a blank new tab, it shows a clean dashboard with useful information like the current time, weather, motivational quotes, and quick access links. I focused on creating a simple, responsive UI with custom HTML, CSS, and JavaScript rather than relying on templates or website builders. The project is fully deployed on GitHub Pages and has a public GitHub repository with regular commits documenting my progress. I also wrote two devlogs describing the development process, challenges I faced, and improvements I made along the way. One of the main features of the project is fetching live data through APIs, making the page useful beyond being just a static website. I also added smooth animations and designed the interface from scratch to make it feel polished and enjoyable to use. Live Project: https://shravyakr0.github.io/pulse-tab/ Source Code: https://github.com/shravyakr0/pulse-tab", "repo": "https://github.com/shravyakr0/pulse-tab", "demo": "https://shravyakr0.github.io/pulse-tab/"}]...
|
[{"post_id": 41233, "ts": "202 [{"post_id": 41233, "ts": "2026-08-05T09:47:15Z", "hours": 0.4242, "text": "fixed some bugs"}, {"post_id": 40859, "ts": "2026-08-04T17:30:01Z", "hours": 0.3347, "text": "idk I just changed some colors"}]...
|
Title: Pulse New Tab by @shravyakr0 | Stardance
D Title: Pulse New Tab by @shravyakr0 | Stardance
Devlogs:
idk I just changed some colors
fixed some bugs
Ships:
I built a custom browser start page called Pulse New Tab . Instead of a blank new tab, it shows a clean dashboard with useful information like the current time, weather, motivational quotes, and quick access links. I focused on creating a simple, responsive UI with custom HTML, CSS, and JavaScript rather than relying on templates or website builders. The project is fully deployed on GitHub Pages and has a public GitHub repository with regular commits documenting my progress. I also wrote two devlogs describing the development process, challenges I faced, and improvements I made along the way. One of the main features of the project is fetching live data through APIs, making the page useful beyond being just a static website. I also added smooth animations and designed the interface from scratch to make it feel polished and enjoyable to use. Live Project: https://shravyakr0.github.io/pulse-tab/ Source Code: https://github.com/shravyakr0/pulse-tab...
|
1793706789.8283849
|
1793793189.8283849
|
|
36114
|
MAGI by @vintage | Stardance
|
vintage
|
1
|
1.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T21:05:00Z", "hours": 1.0, "multiplier": 2.88, "payout": 4, "blessing": "neutral", "text": "I made a cool refrece from Neon genisis evangelion because its cool go try it", "repo": "https://github.com/PieSquared/The-Magi-System/", "demo": "https://the-magi-system-yqgsfhv2jn9j4dcnvauhwy.streamlit.app/"}]...
|
[{"post_id": 29756, "ts": "202 [{"post_id": 29756, "ts": "2026-07-16T20:55:57Z", "hours": 0.3742, "text": "Finally done figuring out how to host a demo of the app using stream lit! You can try it out now at https://the-magi-system-yqgsfhv2jn9j4dcnvauhwy.streamlit.app/"}, {"post_id": 29711, "ts": "2026-07-16T20:03:12Z", "hours": 1.0383, "text": "MAGI is something from evangelion idk. Pretty much done the script it was pretty simple, had to use claude cuz i couldnt figure out how to use the gemini api."}]...
|
Title: MAGI by @vintage | Stardance
Devlogs:
MAGI Title: MAGI by @vintage | Stardance
Devlogs:
MAGI is something from evangelion idk. Pretty much done the script it was pretty simple, had to use claude cuz i couldnt figure out how to use the gemini api.
Finally done figuring out how to host a demo of the app using stream lit! You can try it out now at https://the-magi-system-yqgsfhv2jn9j4dcnvauhwy.streamlit.app/
Ships:
I made a cool refrece from Neon genisis evangelion because its cool go try it...
|
1793706788.6286917
|
1793793188.6286917
|
|
9625
|
My first slack bot! by @yellowissuchanoverratedcol My first slack bot! by @yellowissuchanoverratedcolor | Stardance...
|
yellowissuchanoverratedcolor
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T12:18:30Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hey, I recently completed the Slack Bot tutorial. I honestly just wanted to try this to gain some familiarity with the slack api (basically the same as the discord api lol). I added the following commands: help ping count-letters (which counts the individual letters from a to z in the message) thats it bye", "repo": "https://github.com/floopus44/slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BTNC2E7QE"}]...
|
[{"post_id": 3820, "ts": "2026 [{"post_id": 3820, "ts": "2026-06-06T21:33:06Z", "hours": 0.4264, "text": "Got it to work and added two commands yay"}]...
|
Title: My first slack bot! by @yellowissuchanoverr Title: My first slack bot! by @yellowissuchanoverratedcolor | Stardance
Devlogs:
Got it to work and added two commands yay
Ships:
Hey, I recently completed the Slack Bot tutorial. I honestly just wanted to try this to gain some familiarity with the slack api (basically the same as the discord api lol). I added the following commands: help ping count-letters (which counts the individual letters from a to z in the message) thats it bye...
|
1793706787.4867282
|
1793793187.4867282
|
|
33717
|
sporky by @aahil | Stardance
|
aahil
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-12T02:33:10Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "End of project devlog! I really liked the font I chose, looks clean with the nice green colour i chose.", "repo": "https://github.com/aahvl/sporky", "demo": "https://aahvl.github.io/sporky/"}]...
|
[{"post_id": 26897, "ts": "202 [{"post_id": 26897, "ts": "2026-07-11T23:00:28Z", "hours": 0.7361, "text": "DevLog 1 I had to get a “cheatsheet” up to find out what HTML tags do, and I experimented with it! JS was easy as I know how to get the year to change for the footer."}]...
|
Title: sporky by @aahil | Stardance
Devlogs:
DevL Title: sporky by @aahil | Stardance
Devlogs:
DevLog 1 I had to get a “cheatsheet” up to find out what HTML tags do, and I experimented with it! JS was easy as I know how to get the year to change for the footer.
Ships:
End of project devlog! I really liked the font I chose, looks clean with the nice green colour i chose....
|
1793706786.3321147
|
1793793186.3321147
|
|
23919
|
Caveman OS by @colgation | Stardance
|
colgation
|
3
|
19.0
|
110
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T10:17:54Z", "hours": 3.0, "multiplier": 8.67, "payout": 29, "blessing": "neutral", "text": "I made an easter egg hunting game, disguised as a WebOS. A few achievements are easy to get, but some require deep thinking. If you get stuck, don’t worry! I’ve gone through the process of making a Youtube video and detailed instructions in the README on how to get each easter egg. Alongside this, I used three.js to create my very own 3d mammoth. Check it out at https://194500-cpu.github.io/CavemanOS/", "repo": "https://github.com/194500-cpu/CavemanOS", "demo": "https://194500-cpu.github.io/CavemanOS/"}, {"ship_num": 2, "ts": "2026-07-19T09:22:51Z", "hours": 6.0, "multiplier": 14.63, "payout": 81, "blessing": "neutral", "text": "Caveman Web OS is an Easter egg hunting game disguised as a prehistoric computer operating system. At first, it looks like a simple WebOS with draggable windows and applications. However, different buttons, messages and interactions can reveal hidden achievements. Players can use the Easter Egg Tracker to see what they have discovered and receive clues about secrets they have not found yet. In case anyone is struggling, here is a video of me completing all the achievements: https://www.youtube.com/watch?v=Ed1CFRDi-0Q Live Website https://194500-cpu.github.io/CavemanOS/ Features Draggable application windows Desktop-style navigation bar and dock Live date and time display Campfire messaging app Realtime messages using Supabase Easter Egg Tracker Hidden achievements Caveman AI called Bob Random dialogue and hints from Bob Secret phrases and puzzle-based interactions Special ending screens Achievement visuals that change after discovery Custom prehistoric interface and artwork *Sweet Alert 2 for beautiful alerts How It Works The WebOS interface is made from HTML elements styled as movable application windows. Challenges Making Windows Draggable I had to calculate the movement of the mouse and update each window’s position while preventing windows from being dragged completely outside the screen. Window Layering When multiple applications are open, the selected window needs to move in front of the others. I implemented this by increasing each selected window’s z-index. Realtime Campfire Messages I connected the project to Supabase so messages could be saved and displayed to different visitors. I also used Supabase realtime updates so new messages could appear without manually refreshing the page. Designing Easter Eggs The achievements needed to be hidden but still possible to discover. I tried to create clues that gradually lead players toward an answer instead of revealing the solution immediately. Deploying With GitHub Pages I learned how GitHub Pages serves the project from the docs folder. I also encountered Git merge conflicts while moving files and learned how local development can behave differently from a deployed website. What I Learned During this project, I learned more about: JavaScript event listeners DOM manipulation Functions and application state Asynchronous JavaScript Supabase databases Realtime database subscriptions CSS positioning CSS transitions Draggable interfaces z-index and window layering Responsive layouts Git commits Merge conflicts GitHub Pages deployment Debugging differences between local and deployed websites Future Improvements", "repo": "https://github.com/194500-cpu/CavemanOS", "demo": "https://194500-cpu.github.io/CavemanOS/"}, {"ship_num": 3, "ts": "2026-06-26T07:06:38Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a easter egg hunter hidden as a WebOS. It has visible tracker for achievments, a connected “Campfire” app that uses a database to store messages, and included closable and draggable windows. Interested? Check it out!", "repo": "https://github.com/194500-cpu/CavemanOS", "demo": "https://194500-cpu.github.io/CavemanOS/"}]...
|
[{"post_id": 70531, "ts": "202 [{"post_id": 70531, "ts": "2026-09-19T10:15:19Z", "hours": 0.2575, "text": "Final changes, made a video to showcase achievements as well as notes in the README. I also polished some text and spellchecked with a dictionary ;)."}, {"post_id": 68771, "ts": "2026-09-15T18:43:39Z", "hours": 0.2833, "text": "Looking to ship soon, today I fixed some bugs like sweet alert glitching out, made the alert only dissappear if ok is pressed."}, {"post_id": 61888, "ts": "2026-09-05T01:45:25Z", "hours": 0.7886, "text": "New easter egg to make mammoth RGB!"}, {"post_id": 60475, "ts": "2026-09-02T20:27:05Z", "hours": 0.4058, "text": "Each hour, Bob has something different to say. For example if it is 12 ’o clock, he might say: LUNCH TIME Alongside this, I have added a QOL change, so pressing enter key will now send a message in the Campfire App!"}, {"post_id": 60458, "ts": "2026-09-02T19:57:10Z", "hours": 1.0381, "text": "Made a 3d Wireframe Mammoth that tracks your mouse with its head! It took ages to set up Three js and create the shape, so don’t be scared by its simplicity!"}, {"post_id": 31130, "ts": "2026-07-19T09:05:06Z", "hours": 0.3431, "text": "I added SweetAlert 2, meaning all of the alerts on my website will be delivered in stylish fashion!"}, {"post_id": 31124, "ts": "2026-07-19T08:42:15Z", "hours": 0.2725, "text": "WOW git was much more confusing than I thought. I really took me a while to find out how to push my changes, as I was constantly met with an error that my branches were out of sync. I tried all sort of stuff, but it turns out my folder name being wrong was the problem."}, {"post_id": 31106, "ts": "2026-07-19T07:33:16Z", "hours": 1.2628, "text": "Today, I made a secret cutscene for one of my achievements. It can be found through clues given by “Bob” in my AI assistant app (Abysmal Intelligence.) Here’s a preview:"}, {"post_id": 27424, "ts": "2026-07-12T23:52:31Z", "hours": 0.6711, "text": "I would not give him that."}, {"post_id": 27395, "ts": "2026-07-12T22:34:22Z", "hours": 2.9828, "text": "Bug fixing! Lots of easter eggs coming up and a ui revamp! Also lets be civil in the campfire…"}, {"post_id": 16131, "ts": "2026-06-26T07:03:56Z", "hours": 0.6164, "text": "Final improvements!"}, {"post_id": 16103, "ts": "2026-06-26T05:55:20Z", "hours": 1.6675, "text": "Connected my Campfire app to a database, so now it can store stuff. COMMUNICATION!"}, {"post_id": 14946, "ts": "2026-06-24T08:59:52Z", "hours": 0.5161, "text": "Any suggestions on making easter eggs? As always, have a wonderful day :)"}, {"post_id": 14934, "ts": "2026-06-24T08:26:44Z", "hours": 1.0069, "text": "Fixed Z-indexing and cleaned up my code to be more neat"}, {"post_id": 14920, "ts": "2026-06-24T07:00:55Z", "hours": 0.6353, "text": "if (element.offsetLeft + element.offsetWidth - currentX < window.innerWidth && element.offsetLeft - currentX > 0 && element.offsetTop - currentY > 0 && element.offsetTop + element.offsetHeight - currentY < innerHeight) { element.style.top = (element.offsetTop - currentY) + “px”; element.style.left = (element.offsetLeft - currentX) + “px”; } TLDR: The window cannot be moved outside of the screen. (this prevents windows from becoming unclosable)"}, {"post_id": 14822, "ts": "2026-06-24T02:15:36Z", "hours": 0.6667, "text": "Variables are storing text input"}, {"post_id": 14732, "ts": "2026-06-23T22:53:11Z", "hours": 0.2619, "text": "Welcome screen is done! Plan to decorate it, but I think now I can just start making secrets."}, {"post_id": 14719, "ts": "2026-06-23T22:31:53Z", "hours": 0.6644, "text": "Welcome screen (in progress), lots of JS fixes, layout fixes and cool website!"}, {"post_id": 14289, "ts": "2026-06-23T10:51:11Z", "hours": 1.0186, "text": "Some bug fixing needed for hide/show feature, but still very cool to have a closable and draggable window!"}, {"post_id": 14038, "ts": "2026-06-23T00:40:14Z", "hours": 1.8167, "text": "What could this icon be used for? It took me like 10 minutes to make (shoutout vectorpea)."}, {"post_id": 13607, "ts": "2026-06-22T09:40:09Z", "hours": 0.3728, "text": "Added time to my website - First lines of JavaScript!"}, {"post_id": 13596, "ts": "2026-06-22T08:48:41Z", "hours": 0.3236, "text": "I really want someone to give me suggestions, no really any feature you think would be fun to have :) Many thanks and happy coding. Also quick update, the wallpaper has been changed."}, {"post_id": 13588, "ts": "2026-06-22T08:09:18Z", "hours": 0.4236, "text": "Started development!!! (btw is this image copyright xd)"}]...
|
Title: Caveman OS by @colgation | Stardance
Devlo Title: Caveman OS by @colgation | Stardance
Devlogs:
Started development!!! (btw is this image copyright xd)
I really want someone to give me suggestions, no really any feature you think would be fun to have :) Many thanks and happy coding. Also quick update, the wallpaper has been changed.
Added time to my website - First lines of JavaScript!
What could this icon be used for? It took me like 10 minutes to make (shoutout vectorpea).
Some bug fixing needed for hide/show feature, but still very cool to have a closable and draggable window!
Welcome screen (in progress), lots of JS fixes, layout fixes and cool website!
Welcome screen is done! Plan to decorate it, but I think now I can just start making secrets.
Variables are storing text input
if (element.offsetLeft + element.offsetWidth - currentX < window.innerWidth && element.offsetLeft - currentX > 0 && element.offsetTop - currentY > 0 && element.offsetTop + element.offsetHeight - currentY < innerHeight) { element.style.top = (element.offsetTop - currentY) + “px”; element.style.left = (element.offsetLeft - currentX) + “px”; } TLDR: The window cannot be moved outside of the screen. (this prevents windows from becoming unclosable)
Fixed Z-indexing and cleaned up my code to be more neat
Any suggestions on making easter eggs? As always, have a wonderful day :)
Connected my Campfire app to a database, so now it can store stuff. COMMUNICATION!
Final improvements!
Bug fixing! Lots of easter eggs coming up and a ui revamp! Also lets be civil in the campfire…
I would not give him that.
Today, I made a secret cutscene for one of my achievements. It can be found through clues given by “Bob” in my AI assistant app (Abysmal Intelligence.) Here’s a preview:
WOW git was much more confusing than I thought. I really took me a while to find out how to push my changes, as I was constantly met with an error that my branches were out of sync. I tried all sort of stuff, but it turns out my folder name being wrong was the problem.
I added SweetAlert 2, meaning all of the alerts on my website will be delivered in stylish fashion!
Made a 3d Wireframe Mammoth that tracks your mouse with its head! It took ages to set up Three js and create the shape, so don’t be scared by its simplicity!
Each hour, Bob has something different to say. For example if it is 12 ’o clock, he might say: LUNCH TIME Alongside this, I have added a QOL change, so pressing enter key will now send a message in the Campfire App!
New easter egg to make mammoth RGB!
Looking to ship soon, today I fixed some bugs like sweet alert glitching out, made the alert only dissappear if ok is pressed.
Final changes, made a video to showcase achievements as well as notes in the README. I also polished some text and spellchecked with a dictionary ;).
Ships:
I made a easter egg hunter hidden as a WebOS. It has visible tracker for achievments, a connected “Campfire” app that uses a database to store messages, and included closable and draggable windows. Interested? Check it out!
Caveman Web OS is an Easter egg hunting game disguised as a prehistoric computer operating system. At first, it looks like a simple WebOS with draggable windows and applications. However, different buttons, messages and interactions can reveal hidden achievements. Players can use the Easter Egg Tracker to see what they have discovered and receive clues about secrets they have not found yet. In case anyone is struggling, here is a video of me completing all the achievements: https://www.youtube.com/watch?v=Ed1CFRDi-0Q Live Website https://194500-cpu.github.io/CavemanOS/ Features Draggable application windows Desktop-style navigation bar and dock Live date and time display Campfire messaging app Realtime messages using Supabase Easter Egg Tracker Hidden achievements Caveman AI called Bob Random dialogue and hints from Bob Secret phrases and puzzle-based interactions Special ending screens Achievement visuals that change after discovery Custom prehistoric interface and artwork *Sweet Alert 2 for beautiful alerts How It Works The WebOS interface is made from HTML elements styled as movable application windows. Challenges Making Windows Draggable I had to calculate the movement of the mouse and update each window’s position while preventing windows from being dragged completely outside the screen. Window Layering When multiple applications are open, the selected window needs to move in front of the others. I implemented this by increasing each selected window’s z-index. Realtime Campfire Messages I connected the project to Supabase so messages could be saved and displayed to different visitors. I also used Supabase realtime updates so new messages could appear without manually refreshing the page. Designing Easter Eggs The achievements needed to be hidden but still possible to discover. I tried to create clues that gradually lead players toward an answer instead of revealing the solution immediately. Deploying With GitHub Pages I learned how GitHub Pages serves the project from the docs folder. I also encountered Git merge conflicts while moving files and learned how local development can behave differently from a deployed website. What I Learned During this project, I learned more about: JavaScript event listeners DOM manipulation Functions and application state Asynchronous JavaScript Supabase databases Realtime database subscriptions CSS positioning CSS transitions Draggable interfaces z-index and window layering Responsive layouts Git commits Merge conflicts GitHub Pages deployment Debugging differences between local and deployed websites Future Improvements
I made an easter egg hunting game, disguised as a WebOS. A few achievements are easy to get, but some require deep thinking. If you get stuck, don’t worry! I’ve gone through the process of making a Youtube video and detailed instructions in the README on how to get each easter egg. Alongside this, I used three.js to create my very own 3d mammoth. Check it out at https://194500-cpu.github.io/CavemanOS/...
|
1793706785.046548
|
1793793185.046548
|
|
30783
|
my APOD site by @akshajdewan102 | Stardance
|
akshajdewan102
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T22:25:02Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built Astro Tab, my NASA APOD new-tab page, following the “Give Your Website a Pulse” guide from start to ship. I scaffolded a vanilla Vite project, cleaned out the demo files, and wired up a fetch to NASA’s APOD API — send the request, .json() the response, then drop the title, image, and explanation into #app, with the key kept safe in a .env (and .env.example committed) read via import.meta.env. The trickiest bit was media handling, since NASA doesn’t always send an image; some days it’s a video or YouTube embed, so I build the media tag in a variable first ( vs vs ) and set innerHTML exactly once instead of overwriting it and losing the title. On top of the base guide I added a date picker so you can pull up any past APOD (same fetch, just &date= appended), and styled it as a dark space HUD with Orbitron/Space Mono fonts and clip-path: polygon() zigzag strips down the sides using body::before/::after pseudo-elements that hide under 600px via a media query. Deployment was its own lesson: set base in vite.config.js, stored the API key as a GitHub Actions secret, and let the workflow build and push to GitHub Pages on every commit to main. Live at https://downbeatfoil.github.io/nasa-apod-site/ and code at https://github.com/Downbeatfoil/nasa-apod-site .", "repo": "https://github.com/Downbeatfoil/nasa-apod-site", "demo": "https://downbeatfoil.github.io/nasa-apod-site/"}]...
|
[{"post_id": 22448, "ts": "202 [{"post_id": 22448, "ts": "2026-07-04T22:24:02Z", "hours": 0.2644, "text": "Built Astro Tab, my NASA APOD new-tab page, following the “Give Your Website a Pulse” guide from start to ship. I scaffolded a vanilla Vite project, cleaned out the demo files, and wired up a fetch to NASA’s APOD API — send the request, .json() the response, then drop the title, image, and explanation into #app, with the key kept safe in a .env (and .env.example committed) read via import.meta.env. The trickiest bit was media handling, since NASA doesn’t always send an image; some days it’s a video or YouTube embed, so I build the media tag in a variable first ( vs vs ) and set innerHTML exactly once instead of overwriting it and losing the title. On top of the base guide I added a date picker so you can pull up any past APOD (same fetch, just &date= appended), and styled it as a dark space HUD with Orbitron/Space Mono fonts and clip-path: polygon() zigzag strips down the sides using body::before/::after pseudo-elements that hide under 600px via a media query. Deployment was its own lesson: set base in vite.config.js, stored the API key as a GitHub Actions secret, and let the workflow build and push to GitHub Pages on every commit to main. Live at https://downbeatfoil.github.io/nasa-apod-site/ and code at https://github.com/Downbeatfoil/nasa-apod-site ."}]...
|
Title: my APOD site by @akshajdewan102 | Stardance Title: my APOD site by @akshajdewan102 | Stardance
Devlogs:
Built Astro Tab, my NASA APOD new-tab page, following the “Give Your Website a Pulse” guide from start to ship. I scaffolded a vanilla Vite project, cleaned out the demo files, and wired up a fetch to NASA’s APOD API — send the request, .json() the response, then drop the title, image, and explanation into #app, with the key kept safe in a .env (and .env.example committed) read via import.meta.env. The trickiest bit was media handling, since NASA doesn’t always send an image; some days it’s a video or YouTube embed, so I build the media tag in a variable first ( vs vs ) and set innerHTML exactly once instead of overwriting it and losing the title. On top of the base guide I added a date picker so you can pull up any past APOD (same fetch, just &date= appended), and styled it as a dark space HUD with Orbitron/Space Mono fonts and clip-path: polygon() zigzag strips down the sides using body::before/::after pseudo-elements that hide under 600px via a media query. Deployment was its own lesson: set base in vite.config.js, stored the API key as a GitHub Actions secret, and let the workflow build and push to GitHub Pages on every commit to main. Live at https://downbeatfoil.github.io/nasa-apod-site/ and code at https://github.com/Downbeatfoil/nasa-apod-site .
Ships:
Built Astro Tab, my NASA APOD new-tab page, following the “Give Your Website a Pulse” guide from start to ship. I scaffolded a vanilla Vite project, cleaned out the demo files, and wired up a fetch to NASA’s APOD API — send the request, .json() the response, then drop the title, image, and explanation into #app, with the key kept safe in a .env (and .env.example committed) read via import.meta.env. The trickiest bit was media handling, since NASA doesn’t always send an image; some days it’s a video or YouTube embed, so I build the media tag in a variable first ( vs vs ) and set innerHTML exactly once instead of overwriting it and losing the title. On top of the base guide I added a date picker so you can pull up any past APOD (same fetch, just &date= appended), and styled it as a dark space HUD with Orbitron/Space Mono fonts and clip-path: polygon() zigzag strips down the sides using body::before/::after pseudo-elements that hide under 600px via a media query. Deployment was its own lesson: set base in vite.config.js, stored the API key as a GitHub Actions secret, and let the workflow build and push to GitHub Pages on every commit to main. Live at https://downbeatfoil.github.io/nasa-apod-site/ and code at https://github.com/Downbeatfoil/nasa-apod-site ....
|
1793706783.8770068
|
1793793183.8770068
|
|
26238
|
Marten by @tosterabgx | Stardance
|
tosterabgx
|
1
|
23.83
|
359
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T23:13:03Z", "hours": 23.0, "multiplier": 15.53, "payout": 359, "blessing": "neutral", "text": "Marten is ready for its first release! I’ve created a free, open-source reverse tunnel tool for both raw TCP and HTTP traffic, with everything secured using TLS. This is definitely not the final version. There’s still so much more to add, like accounts, tunnel management and statistics. Stay tuned for more updates!", "repo": "https://github.com/tosterabgx/marten", "demo": "https://usemarten.tech"}]...
|
[{"post_id": 31182, "ts": "202 [{"post_id": 31182, "ts": "2026-07-19T11:49:08Z", "hours": 0.83, "text": "Law update I added the Terms of Service page to withdraw any responsibility. I don’t want to go to jail if someone uses marten for some illegal stuff Also, fixed some minor bugs in a client (like incorrect url for tcp connections)"}, {"post_id": 27972, "ts": "2026-07-13T22:36:19Z", "hours": 0.9003, "text": "Website update Made the /status page actually useful, showing the time since the start and the number of active tunnels. btw, this page helped me to detect a memory leak of the http listeners :p Old listeners weren’t closed when their control connection dropped, so they would accumulate and crash the server."}, {"post_id": 27110, "ts": "2026-07-12T11:42:02Z", "hours": 8.1161, "text": "Huge update HTTPS is here! From now on, all http connections are redirected from random subdomains. They are also secured with tls, thanks to cloudflare. Updated website Added /docs/ and /status/ pages on my website."}, {"post_id": 19118, "ts": "2026-06-30T11:06:48Z", "hours": 0.8119, "text": "Small update Updated the README. Now it looks clean and much more informative than it was before"}, {"post_id": 18012, "ts": "2026-06-28T23:51:15Z", "hours": 3.7658, "text": "Now we have a mascot! (and a landing page) Designed a polygonal vector logo that resembles a marten (what a coincidence) What was made Built a minimalistic landing page with the Astro framework. There’s not much here for now, but just the basic info. What’s next? I want to add http support with random address assignment, so websites can be served on port 443 with https."}, {"post_id": 17113, "ts": "2026-06-27T19:44:23Z", "hours": 7.1231, "text": "Yay, it’s working I’ve finally managed to finish the TCP tunnel part. As always, I overengineered at least something. This time, it was the deployment. Now every push to main starts a GitHub Actions workflow that automatically builds and deploys the server. It was fun, but it took a pretty long time to figure out CI/CD for the first time :D"}, {"post_id": 16540, "ts": "2026-06-26T22:01:18Z", "hours": 2.5086, "text": "What is Marten? Marten is a free reverse tunnel (just like ngrok) that I’m building with Go. It’s my first project in Go, so it’s also a good way to learn the language itself :p My TCP design and a first connection Designed the connection process (for tcp only) and build a simple server and a client that can send messages to each other! Big thanks to bore for inspiration on how to do this."}]...
|
Title: Marten by @tosterabgx | Stardance
Devlogs: Title: Marten by @tosterabgx | Stardance
Devlogs:
What is Marten? Marten is a free reverse tunnel (just like ngrok) that I’m building with Go. It’s my first project in Go, so it’s also a good way to learn the language itself :p My TCP design and a first connection Designed the connection process (for tcp only) and build a simple server and a client that can send messages to each other! Big thanks to bore for inspiration on how to do this.
Yay, it’s working I’ve finally managed to finish the TCP tunnel part. As always, I overengineered at least something. This time, it was the deployment. Now every push to main starts a GitHub Actions workflow that automatically builds and deploys the server. It was fun, but it took a pretty long time to figure out CI/CD for the first time :D
Now we have a mascot! (and a landing page) Designed a polygonal vector logo that resembles a marten (what a coincidence) What was made Built a minimalistic landing page with the Astro framework. There’s not much here for now, but just the basic info. What’s next? I want to add http support with random address assignment, so websites can be served on port 443 with https.
Small update Updated the README. Now it looks clean and much more informative than it was before
Huge update HTTPS is here! From now on, all http connections are redirected from random subdomains. They are also secured with tls, thanks to cloudflare. Updated website Added /docs/ and /status/ pages on my website.
Website update Made the /status page actually useful, showing the time since the start and the number of active tunnels. btw, this page helped me to detect a memory leak of the http listeners :p Old listeners weren’t closed when their control connection dropped, so they would accumulate and crash the server.
Law update I added the Terms of Service page to withdraw any responsibility. I don’t want to go to jail if someone uses marten for some illegal stuff Also, fixed some minor bugs in a client (like incorrect url for tcp connections)
Ships:
Marten is ready for its first release! I’ve created a free, open-source reverse tunnel tool for both raw TCP and HTTP traffic, with everything secured using TLS. This is definitely not the final version. There’s still so much more to add, like accounts, tunnel management and statistics. Stay tuned for more updates!...
|
1793706782.711133
|
1793793182.711133
|
|
29379
|
Hack Club Shirts by @Kailey | Stardance
|
Kailey
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T15:44:40Z", "hours": 0.0, "multiplier": 1.01, "payout": 0, "blessing": "neutral", "text": "I made a simple HTML/CSS website of the Hack Club shirts I have. More to be added in the future.", "repo": "https://github.com/KaileyLiou/Hack-Club-Shirts", "demo": "https://kaileyliou.github.io/Hack-Club-Shirts/"}]...
|
[{"post_id": 20052, "ts": "202 [{"post_id": 20052, "ts": "2026-07-01T15:44:06Z", "hours": 0.4103, "text": "Completed website"}]...
|
Title: Hack Club Shirts by @Kailey | Stardance
De Title: Hack Club Shirts by @Kailey | Stardance
Devlogs:
Completed website
Ships:
I made a simple HTML/CSS website of the Hack Club shirts I have. More to be added in the future....
|
1793706781.5633032
|
1793793181.5633032
|
|
55186
|
FingerPaint by @phantom-ascii | Stardance
|
phantom-ascii
|
1
|
2.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T00:52:25Z", "hours": 2.0, "multiplier": 1.39, "payout": 3, "blessing": "neutral", "text": "Pretty proud of this project and it looks DOPE. Anyways REVIEWERS LOOK HERE: for some reason google flags my website but fear not my website is probably the least harmful you will review today so yeah dont worry.(i think its due to the webcam functuality). I have made a website that enables you to paint on the screen using your fingers via the webcam. It uses googles media pipe hand monument model to trace the hand skeleton and then by gestures place traces (strokes) and draw on the screen. This website does need webcam enabled unfortuantly but yh theres that. The tutorial is on the right bottom of the main menu. AI was used to debug and ask questions on how to implement the mediapipe model into the code without .py. All code was written by me. Hope you like it Byeee -phantom", "repo": "https://github.com/phantom-ascii/FingerPaint", "demo": "https://phantom-ascii.github.io/FingerPaint/"}]...
|
[{"post_id": 56290, "ts": "202 [{"post_id": 56290, "ts": "2026-08-28T00:28:30Z", "hours": 0.5925, "text": "I have finished evverything and implemented the mediatek thing tfor the hand monument tracking. then coded the drawing features in js. for some reason my website gets flagged but dw im not evil :)"}, {"post_id": 56244, "ts": "2026-08-27T22:31:47Z", "hours": 0.2878, "text": "quickly added a webcam interface. Surprisingly easy to be fair. One google search was all i needed"}, {"post_id": 56233, "ts": "2026-08-27T22:10:14Z", "hours": 0.3231, "text": "I quickly made some nicer ui and added a particle affect on the opening menu"}, {"post_id": 56213, "ts": "2026-08-27T21:28:48Z", "hours": 0.6411, "text": "Im making a website that tracks your hand and paints on screen. I currently finished the skeleton ui"}]...
|
Title: FingerPaint by @phantom-ascii | Stardance
Title: FingerPaint by @phantom-ascii | Stardance
Devlogs:
Im making a website that tracks your hand and paints on screen. I currently finished the skeleton ui
I quickly made some nicer ui and added a particle affect on the opening menu
quickly added a webcam interface. Surprisingly easy to be fair. One google search was all i needed
I have finished evverything and implemented the mediatek thing tfor the hand monument tracking. then coded the drawing features in js. for some reason my website gets flagged but dw im not evil :)
Ships:
Pretty proud of this project and it looks DOPE. Anyways REVIEWERS LOOK HERE: for some reason google flags my website but fear not my website is probably the least harmful you will review today so yeah dont worry.(i think its due to the webcam functuality). I have made a website that enables you to paint on the screen using your fingers via the webcam. It uses googles media pipe hand monument model to trace the hand skeleton and then by gestures place traces (strokes) and draw on the screen. This website does need webcam enabled unfortuantly but yh theres that. The tutorial is on the right bottom of the main menu. AI was used to debug and ask questions on how to implement the mediapipe model into the code without .py. All code was written by me. Hope you like it Byeee -phantom...
|
1793706780.337645
|
1793793180.337645
|
|
1186
|
AppleMusic-Downloader by @Cret | Stardance
|
Cret
|
2
|
31.0
|
408
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-18T05:44:00Z", "hours": 6.0, "multiplier": 17.21, "payout": 110, "blessing": "neutral", "text": "First, I want to say that this project has surpassed 50,000 users. This year marks the project’s first year, and it has gained widespread popularity on various personal social media platforms and communities in China. My QQ user community has over 1,000 members. By using this downloader, I promise you will like https://amll.cret.uk it is a applemusic-like lryics running in your browser. So try it out; I promise you’ll like it! One thing to note is that my GitHub account was mistakenly suspended. If you need the macOS version and the opencookies.txt plugin, I will put the download links below. macos: https://cdn.hackclub.com/01a0f611-f1e0-79af-b3d1-be9b71d54349/AppleMusicDownloader-macos-arm64.dmg plugin: https://cdn.hackclub.com/01a14d82-54d0-7e29-a5ca-51fd7d0702e1/OpenCookies.txt.crx", "repo": "https://gitlab.com/IHateGitHub/applemusic-downloader", "demo": "https://cdn.hackclub.com/01a0f611-f73e-71f9-a98f-f447038e7ace/AppleMusicDownloader-windows-x64.exe"}, {"ship_num": 2, "ts": "2026-07-09T03:29:12Z", "hours": 25.0, "multiplier": 9.89, "payout": 298, "blessing": "neutral", "text": "The initial phase of this project involved some debugging work. A few days ago, I officially began the refactoring of this project. I removed redundant code and modules, abandoned the cumbersome PyQt, built a standard API backend using FastAPI, and built the web frontend using Next.js. You can run the packaged software now to try it out (don’t forget to install ffmpeg). If you don’t have an Apple Music subscription, DM @Cret on Slack and I’ll provide you with my own cookies.txt file.", "repo": "https://gitlab.com/IHateGitHub/applemusic-downloader", "demo": "https://cdn.hackclub.com/01a0f611-f73e-71f9-a98f-f447038e7ace/AppleMusicDownloader-windows-x64.exe"}]...
|
[{"post_id": 80567, "ts": "202 [{"post_id": 80567, "ts": "2026-10-18T05:29:08Z", "hours": 1.5017, "text": "v2.5.0 just published new feature: TTML lyrics with translate Using asynchronous download scheduling doubles the speed of batch downloads. Accelerate Dolby Atmos format encoding and decoding add “new version” detect feature (This won’t work until my GitHub account is unbanned) amdl cli also optimizedget-lyrics logic and add more and smarter parameter degradation strategies"}, {"post_id": 39266, "ts": "2026-08-02T03:58:06Z", "hours": 4.8944, "text": "I’ve been working on the AppleMusic-Downloader project, primarily debugging a Windows-specific issue where the desktop app would hang during downloads. The root cause turned out to be PyInstaller’s --windowed mode setting sys.stdout and sys.stderr to None , which broke async libraries like httpx and asyncio . The fix was calling AllocConsole() on Windows to allocate a visible console window and properly redirect all three standard streams ( stdin , stdout , stderr ). I also cleaned up unnecessary debug code (log file output, /api/logs endpoint), added step-by-step logging in the download pipeline to help diagnose future issues, fixed a few i18n key mismatches in the frontend, and added a note in both READMEs telling Windows users not to close the console window."}, {"post_id": 25110, "ts": "2026-07-09T03:22:25Z", "hours": 2.2103, "text": "The Dolby format finally downloaded normally. During this stage, copilot helped me debug and test the project.This project is ready to ship"}, {"post_id": 24614, "ts": "2026-07-08T10:15:06Z", "hours": 0.2636, "text": "published to PyPi!"}, {"post_id": 24589, "ts": "2026-07-08T09:21:00Z", "hours": 0.2592, "text": "workflow currently running!!!"}, {"post_id": 24579, "ts": "2026-07-08T08:26:24Z", "hours": 1.0267, "text": "All the rebuild work is complete; it’s time to open the PR."}, {"post_id": 24549, "ts": "2026-07-08T05:54:14Z", "hours": 3.2453, "text": "The interface is ready to use!"}, {"post_id": 23956, "ts": "2026-07-07T05:50:21Z", "hours": 0.6342, "text": "I felt this didn’t quite meet my aesthetic standards for the sidebar, so I decided to use Figma to design the UI."}, {"post_id": 23931, "ts": "2026-07-07T04:17:02Z", "hours": 0.75, "text": "Successful integration of the front-end and back-end."}, {"post_id": 23397, "ts": "2026-07-06T10:19:39Z", "hours": 2.0333, "text": "Remove Windows-specific GUI components and associated files from the project, including CMake configurations, resource files, and source code for the Flutter window implementation. This cleanup streamlines the project structure and eliminates unnecessary dependencies for non-Windows platforms."}, {"post_id": 23317, "ts": "2026-07-06T06:10:04Z", "hours": 1.2036, "text": "I ultimately gave up on using Flutter for frontend development; it was simply too difficult. Instead, I am using Next.js combined with pywebview to build the desktop frontend."}, {"post_id": 22716, "ts": "2026-07-05T09:19:30Z", "hours": 1.66, "text": "I have completed the API construction; in this phase, I encapsulated all of gamdl’s parameters—aligning them with the definitions in core_downloader.py —into a unified API. Next up is learning Flutter for the frontend."}, {"post_id": 22161, "ts": "2026-07-04T14:09:04Z", "hours": 0.845, "text": "Rebuild starting now!!! I’m using flutter for fronted FastAPI for backend"}, {"post_id": 22034, "ts": "2026-07-04T09:04:22Z", "hours": 2.1694, "text": "All preparatory work for the refactoring has been completed. Thanks to DeepSeek for sorting out this “spaghetti code.”"}, {"post_id": 20848, "ts": "2026-07-02T15:47:33Z", "hours": 1.5944, "text": "seems that I can’t fix the atmos download issue : ( but time to rebuild this project, I just made a TODO list"}, {"post_id": 11825, "ts": "2026-06-19T08:16:34Z", "hours": 0.3442, "text": "repair downloader_song_legacy.py"}, {"post_id": 11820, "ts": "2026-06-19T07:33:57Z", "hours": 3.7414, "text": "This conversation tracked the comprehensive refactoring and bug-fixing of the AppleMusic-Downloader project. The work began by diagnosing why CN-region songs failed with a KeyError on extendedAssetUrls — fixed by switching to .get() with a fallback, and adding a webplayback-based stream path for songs without enhancedHls . We then extracted the entire download orchestration from cli.py (a Click-based CLI) into a new core_downloader.py module — a pure Python API with no terminal dependencies — and rewired both cli.py and download_worker.py (the GUI’s QThread) to call it directly, eliminating a class of Windows GUI crashes caused by Click’s stdin / stdout assumptions. We fixed download_worker.py’s variable name bug ( remux_path vs remuxed_path ) that silently dropped song files, normalized Path / str type handling, added CENC stream support (ISO-23001-7 with data:;base64, KIDs) by reconstructing Widevine PSSH boxes and passing real KIDs to mp4decrypt , switched ffmpeg remux from -f ipod to -f mp4 and added automatic fragmentation detection with fallback to aac_at / aac re-encoding for playable output, and added backward-compatible config migration for the renamed codec_song enum. We also fixed the Windows manifest name, updated the PyInstaller .spec with missing hidden imports, and corrected several type annotation issues across models.py, downloader.py, and downloader_song.py. The result is that both standard Widevine songs (e.g., ROSÉ’s toxic till the end ) and CENC-encrypted songs (e.g., Queen’s Under Pressure via the 28:ctrp256 webplayback asset) now download and play correctly across all platforms."}, {"post_id": 8585, "ts": "2026-06-14T08:47:02Z", "hours": 2.8236, "text": "really thanks deepseek help me to rebuild the interface I updated the regular expression to account for Apple changing the location of the index.js file on the Apple Music web interface following WWDC2026. After removing redundant code, I used AI to add cross-platform compatibility support, moving closer to a full project refactor once the holidays are over. I also revamped the UI, implementing a card-stacking layout to make the logs easier to read. Huge thanks to AI—it has made fixing baffling bugs far more efficient."}, {"post_id": 268, "ts": "2026-06-01T14:14:37Z", "hours": 0.3014, "text": "Preparing to add new features and migrate the tech stack for cross-platform builds next month. In this update, I leveraged AI to refine part of the code and manually optimized and removed redundant code."}]...
|
Title: AppleMusic-Downloader by @Cret | Stardance
Title: AppleMusic-Downloader by @Cret | Stardance
Devlogs:
Preparing to add new features and migrate the tech stack for cross-platform builds next month. In this update, I leveraged AI to refine part of the code and manually optimized and removed redundant code.
really thanks deepseek help me to rebuild the interface I updated the regular expression to account for Apple changing the location of the index.js file on the Apple Music web interface following WWDC2026. After removing redundant code, I used AI to add cross-platform compatibility support, moving closer to a full project refactor once the holidays are over. I also revamped the UI, implementing a card-stacking layout to make the logs easier to read. Huge thanks to AI—it has made fixing baffling bugs far more efficient.
This conversation tracked the comprehensive refactoring and bug-fixing of the AppleMusic-Downloader project. The work began by diagnosing why CN-region songs failed with a KeyError on extendedAssetUrls — fixed by switching to .get() with a fallback, and adding a webplayback-based stream path for songs without enhancedHls . We then extracted the entire download orchestration from cli.py (a Click-based CLI) into a new core_downloader.py module — a pure Python API with no terminal dependencies — and rewired both cli.py and download_worker.py (the GUI’s QThread) to call it directly, eliminating a class of Windows GUI crashes caused by Click’s stdin / stdout assumptions. We fixed download_worker.py’s variable name bug ( remux_path vs remuxed_path ) that silently dropped song files, normalized Path / str type handling, added CENC stream support (ISO-23001-7 with data:;base64, KIDs) by reconstructing Widevine PSSH boxes and passing real KIDs to mp4decrypt , switched ffmpeg remux from -f ipod to -f mp4 and added automatic fragmentation detection with fallback to aac_at / aac re-encoding for playable output, and added backward-compatible config migration for the renamed codec_song enum. We also fixed the Windows manifest name, updated the PyInstaller .spec with missing hidden imports, and corrected several type annotation issues across models.py, downloader.py, and downloader_song.py. The result is that both standard Widevine songs (e.g., ROSÉ’s toxic till the end ) and CENC-encrypted songs (e.g., Queen’s Under Pressure via the 28:ctrp256 webplayback asset) now download and play correctly across all platforms.
repair downloader_song_legacy.py
seems that I can’t fix the atmos download issue : ( but time to rebuild this project, I just made a TODO list
All preparatory work for the refactoring has been completed. Thanks to DeepSeek for sorting out this “spaghetti code.”
Rebuild starting now!!! I’m using flutter for fronted FastAPI for backend
I have completed the API construction; in this phase, I encapsulated all of gamdl’s parameters—aligning them with the definitions in core_downloader.py —into a unified API. Next up is learning Flutter for the frontend.
I ultimately gave up on using Flutter for frontend development; it was simply too difficult. Instead, I am using Next.js combined with pywebview to build the desktop frontend.
Remove Windows-specific GUI components and associated files from the project, including CMake configurations, resource files, and source code for the Flutter window implementation. This cleanup streamlines the project structure and eliminates unnecessary dependencies for non-Windows platforms.
Successful integration of the front-end and back-end.
I felt this didn’t quite meet my aesthetic standards for the sidebar, so I decided to use Figma to design the UI.
The interface is ready to use!
All the rebuild work is complete; it’s time to open the PR.
workflow currently running!!!
published to PyPi!
The Dolby format finally downloaded normally. During this stage, copilot helped me debug and test the project.This project is ready to ship
I’ve been working on the AppleMusic-Downloader project, primarily debugging a Windows-specific issue where the desktop app would hang during downloads. The root cause turned out to be PyInstaller’s --windowed mode setting sys.stdout and sys.stderr to None , which broke async libraries like httpx and asyncio . The fix was calling AllocConsole() on Windows to allocate a visible console window and properly redirect all three standard streams ( stdin , stdout , stderr ). I also cleaned up unnecessary debug code (log file output, /api/logs endpoint), added step-by-step logging in the download pipeline to help diagnose future issues, fixed a few i18n key mismatches in the frontend, and added a note in both READMEs telling Windows users not to close the console window.
v2.5.0 just published new feature: TTML lyrics with translate Using asynchronous download scheduling doubles the speed of batch downloads. Accelerate Dolby Atmos format encoding and decoding add “new version” detect feature (This won’t work until my GitHub account is unbanned) amdl cli also optimizedget-lyrics logic and add more and smarter parameter degradation strategies
Ships:
The initial phase of this project involved some debugging work. A few days ago, I officially began the refactoring of this project. I removed redundant code and modules, abandoned the cumbersome PyQt, built a standard API backend using FastAPI, and built the web frontend using Next.js. You can run the packaged software now to try it out (don’t forget to install ffmpeg). If you don’t have an Apple Music subscription, DM @Cret on Slack and I’ll provide you with my own cookies.txt file.
First, I want to say that this project has surpassed 50,000 users. This year marks the project’s first year, and it has gained widespread popularity on various personal social media platforms and communities in China. My QQ user community has over 1,000 members. By using this downloader, I promise you will like https://amll.cret.uk it is a applemusic-like lryics running in your browser. So try it out; I promise you’ll like it! One thing to note is that my GitHub account was mistakenly suspended. If you need the macOS version and the opencookies.txt plugin, I will put the download links below. macos: https://cdn.hackclub.com/01a0f611-f1e0-79af-b3d1-be9b71d54349/AppleMusicDownloader-macos-arm64.dmg plugin: https://cdn.hackclub.com/01a14d82-54d0-7e29-a5ca-51fd7d0702e1/OpenCookies.txt.crx...
|
1793706779.0196857
|
1793793179.0196857
|
|
52685
|
Slack Bot#1 by @thapar_smayan | Stardance
|
thapar_smayan
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T14:57:59Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I made I built Kaazmo (its my gamertag(; ) , a Slack bot that I made with Node.js and Slack Bolt. It has three commands: /kaazmo-ping to check if the bot is online, /kaazmo-help to show the available commands, and /kaazmo-joke to return a random joke. I also deployed it on a Nest server using systemd, so the bot keeps running after I disconnect from the server. What was challenging: The hardest part was getting the Slack tokens and Socket Mode connection working correctly, then setting everything up so the bot could run all the time on the server. I also had to figure out how to update the code through GitHub and deploy the changes to Nest. What I’m proud of I’m proud that I got the whole thing working and I can disconnect from Nest and the bot still responds in Slack. How to test it Open the Slack channel where the bot is installed and try: /kaazmo-ping — checks if the bot is working /kaazmo-help — shows the available commands /kaazmo-joke — gives you a random joke", "repo": "https://github.com/thaparsmayan2011-ctrl/stardance-slack-bot.git", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354"}]...
|
[{"post_id": 52235, "ts": "202 [{"post_id": 52235, "ts": "2026-08-22T10:26:52Z", "hours": 0.8108, "text": "I just set up my Slack bot using Node.js and Slack Bolt. I have added three commands, ping, help and joke. I have tested them in Slack, and published the working code to GitHub. I have also set up the token files. Now I’m going to deploy it on Nest so it can stay online 24/7(:"}]...
|
Title: Slack Bot#1 by @thapar_smayan | Stardance
Title: Slack Bot#1 by @thapar_smayan | Stardance
Devlogs:
I just set up my Slack bot using Node.js and Slack Bolt. I have added three commands, ping, help and joke. I have tested them in Slack, and published the working code to GitHub. I have also set up the token files. Now I’m going to deploy it on Nest so it can stay online 24/7(:
Ships:
What I made I built Kaazmo (its my gamertag(; ) , a Slack bot that I made with Node.js and Slack Bolt. It has three commands: /kaazmo-ping to check if the bot is online, /kaazmo-help to show the available commands, and /kaazmo-joke to return a random joke. I also deployed it on a Nest server using systemd, so the bot keeps running after I disconnect from the server. What was challenging: The hardest part was getting the Slack tokens and Socket Mode connection working correctly, then setting everything up so the bot could run all the time on the server. I also had to figure out how to update the code through GitHub and deploy the changes to Nest. What I’m proud of I’m proud that I got the whole thing working and I can disconnect from Nest and the bot still responds in Slack. How to test it Open the Slack channel where the bot is installed and try: /kaazmo-ping — checks if the bot is working /kaazmo-help — shows the available commands /kaazmo-joke — gives you a random joke...
|
1793706777.8433936
|
1793793177.8433936
|
|
52676
|
Daemonagotchi by @Maxye4655 | Stardance
|
Maxye4655
|
2
|
4.0
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T22:15:01Z", "hours": 1.0, "multiplier": 5.45, "payout": 3, "blessing": "neutral", "text": "This is my final ship for this project.", "repo": "https://github.com/Maxye4655/Daemonagotchi", "demo": "https://github.com/Maxye4655/Daemonagotchi/releases/tag/v1.0"}, {"ship_num": 2, "ts": "2026-08-24T10:14:35Z", "hours": 3.0, "multiplier": 3.61, "payout": 13, "blessing": "neutral", "text": "A terminal-based virtual pet inspired by Tamagotchis whose brain is an LLM. Your pet lives in a persistent simulated world: it thinks, wanders, eats, sleeps, and remembers what happens to it. This will not be my final version, there is a lot I want to add, such as figuring out a way to make the ASCII generation more consistent.", "repo": "https://github.com/Maxye4655/Daemonagotchi", "demo": "https://github.com/Maxye4655/Daemonagotchi/releases/tag/v1.0"}]...
|
[{"post_id": 56287, "ts": "202 [{"post_id": 56287, "ts": "2026-08-28T00:10:31Z", "hours": 0.5228, "text": "Remade the TUI"}, {"post_id": 53661, "ts": "2026-08-24T10:10:34Z", "hours": 0.7711, "text": "I have made the “Final” touches before shipping this project for the first time. I sorta improved the TUI and the ASCII generation, it doesn’t have any errors anymore, but it sometimes generates some funky looking characters (I attached a screenshot of it.)."}, {"post_id": 53600, "ts": "2026-08-24T07:05:42Z", "hours": 0.7328, "text": "Added a TUI and made the first version of the ASCII generation, looks pretty mid right now, so next steps will be to: 1. make TUI better 2. Make ASCII generation better 3. add a ASCII “map” that shows created locations"}, {"post_id": 53588, "ts": "2026-08-24T06:13:29Z", "hours": 0.5319, "text": "Put it into a basic tui, next step will be to add Ascii generation based on the pet’s mood, species etc"}, {"post_id": 53524, "ts": "2026-08-24T03:16:51Z", "hours": 0.2969, "text": "I have switched from using a local Ai model to using a free cloud hosted model through groq. The next steps will be to create a proper TUI and ASCII art for the pet. I want to see if I can get AI to dynamically generate the ASCII based on the Pet’s description, species and current actions"}, {"post_id": 53504, "ts": "2026-08-24T02:30:34Z", "hours": 0.3644, "text": "Added the AI to the tomogatchi game, you can now create parts of the world, and your pet will now act on it’s own when you use the command “step” Next I will add, TUI and memory, as well as pet customisation and eventually ASCII art for the pets, (May be AI generated as well, based on an appearance prompt from the user.)"}, {"post_id": 53485, "ts": "2026-08-24T01:40:31Z", "hours": 0.7744, "text": "Added the super basic functions of a tamagotchi (Feeding, sleeping, hunger, energy etc.) My next steps will be to add AI, yes AI to this."}]...
|
Title: Daemonagotchi by @Maxye4655 | Stardance
De Title: Daemonagotchi by @Maxye4655 | Stardance
Devlogs:
Added the super basic functions of a tamagotchi (Feeding, sleeping, hunger, energy etc.) My next steps will be to add AI, yes AI to this.
Added the AI to the tomogatchi game, you can now create parts of the world, and your pet will now act on it’s own when you use the command “step” Next I will add, TUI and memory, as well as pet customisation and eventually ASCII art for the pets, (May be AI generated as well, based on an appearance prompt from the user.)
I have switched from using a local Ai model to using a free cloud hosted model through groq. The next steps will be to create a proper TUI and ASCII art for the pet. I want to see if I can get AI to dynamically generate the ASCII based on the Pet’s description, species and current actions
Put it into a basic tui, next step will be to add Ascii generation based on the pet’s mood, species etc
Added a TUI and made the first version of the ASCII generation, looks pretty mid right now, so next steps will be to: 1. make TUI better 2. Make ASCII generation better 3. add a ASCII “map” that shows created locations
I have made the “Final” touches before shipping this project for the first time. I sorta improved the TUI and the ASCII generation, it doesn’t have any errors anymore, but it sometimes generates some funky looking characters (I attached a screenshot of it.).
Remade the TUI
Ships:
A terminal-based virtual pet inspired by Tamagotchis whose brain is an LLM. Your pet lives in a persistent simulated world: it thinks, wanders, eats, sleeps, and remembers what happens to it. This will not be my final version, there is a lot I want to add, such as figuring out a way to make the ASCII generation more consistent.
This is my final ship for this project....
|
1793706776.6323433
|
1793793176.6323433
|
|
28553
|
Laphorse by @kan411 | Stardance
|
kan411
|
1
|
17.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T22:26:37Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A while back I made an laptop with desktop components, but at that time I had almost no CAD skills, and had a really bad 3d printer so I made it out of wood. I decided to recreate it but with fully 3d printed case nad it turned out to be better in every possible way. It got way stiffer, a bit smaller, and looks way more professional. Taking all the measurments was pretty hard, but finally i got everything right.", "repo": "https://github.com/kanal411/laphorse", "demo": ""}]...
|
[{"post_id": 29220, "ts": "202 [{"post_id": 29220, "ts": "2026-07-15T23:55:11Z", "hours": 3.6442, "text": "Devlog #6 - Whole case is basiclly finished, I only have to fix few small things."}, {"post_id": 23728, "ts": "2026-07-06T20:55:11Z", "hours": 1.8531, "text": "Devlog #6 - I printed bottom of the case, it has a few flaws but I’m probably not going to print new one because it takes over 300g of filament so I’m gonna just improvise."}, {"post_id": 22534, "ts": "2026-07-05T01:52:06Z", "hours": 3.4714, "text": "Devlog #5 - I designed upper part of the case and started working on the lid."}, {"post_id": 21505, "ts": "2026-07-03T14:31:59Z", "hours": 2.0669, "text": "Devlog #4 - I think I finally finished bottom part of the case, also I started working on the keyboard part."}, {"post_id": 20832, "ts": "2026-07-02T15:16:50Z", "hours": 2.7353, "text": "Devlog #3 - I started working on bottom part of the case, I printed only “small” parts of it to save filament. I need to add only few small things and I can move on to upper part and screen. Also I added wifi card slot."}, {"post_id": 19427, "ts": "2026-06-30T19:05:26Z", "hours": 0.75, "text": "Devlog #2 - Today I designed custom cooling mounting bracket, so I can attach an old GPU cooler to an AM4 motherboard. I printed it in ABS so it can withstand higher temps and finally got the whole thing running cinebench under 75 degrees with the only fan being pretty far away."}, {"post_id": 19244, "ts": "2026-06-30T14:38:58Z", "hours": 2.165, "text": "Devlog #1 – A few years ago, I decided to build a laptop-desktop hybrid (desktop components in a laptop form). I managed to make it work, but at the time my only 3D printer was an Ender 3 V2 with a bent Y-axis rod, so I built the case out of wood instead.The project had a lot of issues: it was huge, screws were sticking out everywhere, it looked pretty bad, and it ran really hot. Because of that, I decided to remake it with a 3D-printed case so I could learn CAD in the process."}]...
|
Title: Laphorse by @kan411 | Stardance
Devlogs:
D Title: Laphorse by @kan411 | Stardance
Devlogs:
Devlog #1 – A few years ago, I decided to build a laptop-desktop hybrid (desktop components in a laptop form). I managed to make it work, but at the time my only 3D printer was an Ender 3 V2 with a bent Y-axis rod, so I built the case out of wood instead.The project had a lot of issues: it was huge, screws were sticking out everywhere, it looked pretty bad, and it ran really hot. Because of that, I decided to remake it with a 3D-printed case so I could learn CAD in the process.
Devlog #2 - Today I designed custom cooling mounting bracket, so I can attach an old GPU cooler to an AM4 motherboard. I printed it in ABS so it can withstand higher temps and finally got the whole thing running cinebench under 75 degrees with the only fan being pretty far away.
Devlog #3 - I started working on bottom part of the case, I printed only “small” parts of it to save filament. I need to add only few small things and I can move on to upper part and screen. Also I added wifi card slot.
Devlog #4 - I think I finally finished bottom part of the case, also I started working on the keyboard part.
Devlog #5 - I designed upper part of the case and started working on the lid.
Devlog #6 - I printed bottom of the case, it has a few flaws but I’m probably not going to print new one because it takes over 300g of filament so I’m gonna just improvise.
Devlog #6 - Whole case is basiclly finished, I only have to fix few small things.
Ships:
A while back I made an laptop with desktop components, but at that time I had almost no CAD skills, and had a really bad 3d printer so I made it out of wood. I decided to recreate it but with fully 3d printed case nad it turned out to be better in every possible way. It got way stiffer, a bit smaller, and looks way more professional. Taking all the measurments was pretty hard, but finally i got everything right....
|
1793706775.419882
|
1793793175.419882
|
|
2179
|
TeleReader by @zsobix | Stardance
|
zsobix
|
1
|
35.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-14T22:33:48Z", "hours": 35.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hey, this is TeleReader! A desktop teletext reader! The main inspiration for this project was me watching retro tv documentaries, the Stardance emails, and my last project: “Lidl Plus on desktop” (a desktop implementation of the Lidl Plus loyalty app) I wrote this project in Python, and the GUI with GTK and libadwaita. I tested this on a VM, with a live install of Manjaro linux. The most challenging thing was actually implementing the different teletext services and working around their (sometimes existing) apis. I’m proud of how it turned out, I made some improvements with the UI at the end, so I’m anxious to find out what you think about it!", "repo": "https://github.com/zsobix/teletext", "demo": "https://github.com/zsobix/teletext/releases/latest"}]...
|
[{"post_id": 28578, "ts": "202 [{"post_id": 28578, "ts": "2026-07-14T22:21:06Z", "hours": 2.9003, "text": "Day 14 Today I made some pretty good progress! New features: finally finished the favorites tab bugfixes easter egg……. Everything was pretty easy to implement, maybe the favorites tab was harder than I imagined (I had to let go of the popup message when you add a favorite ) There were ALOT of bugs to fix, like code snippets appearing multiple times, and straight up not functioning code. I also added an easter egg…. try out my app to find out! This is the last devlog before shipping, I tested everything on a live install of manjaro… so there shouldn’t be any issues. (im tiredddd) Changelog feat: add favorites page, bugfixes, and ??? ( 31409b6 ) fix: typo in action ( 6d8d395 ) fix: update action ( 511da3b ) thanks for coming to my final ted talk before the ship! -zsobix"}, {"post_id": 27976, "ts": "2026-07-13T22:46:54Z", "hours": 2.0728, "text": "Day 13!! Wow, i didn’t expect to make this much progress today!!!!! New features: HRT Teletekst (croatian public broadcaster) support Favorites tab (not finished) bug fixes The hardest thing to implement wasn’t even the HRT Teletext support, it was the (still broken) favorites tab! Atleast the favorites tab looks nice (i think) Implementing the teletext service was easy because (you know it) there is an actual api!!!!!!!!!!!!!!!!!!!!!!!!!!!! I didn’t get to ship today because I didn’t get to add all the features I wanted to add. (i want to sleeeeeeeep ) So, features before shipping: more teletext services bugfixes despagettifying my code (almost typed coke) finishing the favorites page thanks for coming to my ted talk -zsobix"}, {"post_id": 27394, "ts": "2026-07-12T22:33:50Z", "hours": 1.7044, "text": "Day 12 Today was better in terms of progress, but I hadn’t had enough freetime… New features: NOS Teletekst (dutch public broadcaster) support info button bugfixes Implementing NOS Teletekst was VERY HARD, because they give the teletext pages in html, so I have to basically copy the german teletext implementation, but not fully because the api response only has partial html, without any styling, so I have to copy the styling from the official website, then combine it with the api response. Other than that, everything went pretty well, even the info page, and yknow why? I read the f**king docs!!!!!!!! (it’s currently midnight as of writing this and my brain isn’t functioning.) I’ll probably ship tomorrow, because I gave up on waiting, and also I hit 30 hours!!!! So, the last minute features I want to implement: add favorites page bugfixes add some more teletext services Changelog chore: update readme ( f85a191 ) feat: add nos teletekst support + about button ( 11fdea9 ) thanks for coming to my ted talk -zsobix"}, {"post_id": 26778, "ts": "2026-07-11T19:27:05Z", "hours": 1.5383, "text": "Day 11 Today also I couldn’t do much so this devlog will be short. New features: TVP Teletext (polish public broadcaster) support BHRT Teletext (bosnian public broadcaster) support bugfixes The most annoying thing I had to do was implementing the bosnian teletext, mostly because, there wasn’t a normal api!!!! So getting the number of subpages, and the next/previous page was pretty hard! Other then that, implementing the polish teletext was actually, well not pretty easy, but not that hard, because you know why…. there was an actual normal working api!!!!!! Well the not easy part was that, the api was just a json file, and a not very good one at that, so implementing the next/previous page functions were not trivial. New features I still want to add: moaar teletext services support bugfixes I gave up on waiting for the weekly shipping stickers, so I’ll probably ship when I get home. (birbs are chirping around me as of writing this ) thanks for coming to my ted talk -zsobix"}, {"post_id": 26172, "ts": "2026-07-10T20:25:44Z", "hours": 0.9139, "text": "Day 10! Today was VERY slow, because I’m currently on a trip and don’t have much time. So, new features: RBB teletext (german regional broadcaster) support MDR teletext (german regional broadcaster) support Teletexto TVE (spanish public broadcaster) support bugfixes The first two teletext services were easy to implement, because I already implemented their API! Teletexto TVE support was also easy to implement mostly because, their html files were readable! (they didn’t even have an api) So yeah, I don’t have much things to say. I still want to add: moar teletext services support (like for poland, netherlands, portugal) bugfixes Changelog my stardance extension broke anyways, thanks for coming to my ted talk -zsobix"}, {"post_id": 25586, "ts": "2026-07-09T22:43:42Z", "hours": 3.0439, "text": "Day 9!! Today I made waaay better progress then the last two days! So recap (new features): KiKa Teletext (german childrens channel) support DR Tekst-TV (Danish public broadcaster) support Arte Teletext (german/french public broadcaster) support ARD Text (german public broadcasting group) support some ui changes in the sidebar bug fixes (there are always some) The most major issue I had was that the DR teletext page doesn’t give the amount of subpages! So I had to rework the SAT.1 system for it to work. Also, because I put all stations in the sidebar, I had to (by hand) name every button, add station switching logic and also make the sidebar scrollable. This weekend, progress will be slower because I will be away from home and I also need suggestions to what to do next…. (I will not be shipping until there is no shipping sticker!!!) I will probably add: an info button (just because) more teletext services easter eggs (mmm eggs) not in the first ship, but I was thinking about implementing an ACTUAL teletext simulator Changelog feat: add dr, kika, ard, and arte support + ui changes ( d3acca6 ) thanks for coming to my ted talk -zsobix"}, {"post_id": 24967, "ts": "2026-07-08T21:09:42Z", "hours": 2.0847, "text": "Day 8!!!!! Today was also a slower day, because I had less time and less ideas, but I have some ideas now! New features: ProSiebenSAT.1 Teletext (german broadcaster) support umm bug fixes Working with the SAT.1 teletext was actually pretty easy, before I realized I had to get the number of subpages on each page! I spent an hour figuring it out, in the end I have to interate over all the next subpages to get the max number of subpages. Anyways I have some new ideas!! So before shipping, I will add: KiKa Teletext (german childrens channel) support (why does a children’s channel have teletext????? especially in 2026???) DR Tekst-TV (Danish public broadcaster) support Arte Teletext (german/french public broadcaster) support ARD(1) Text (german public broadcasting group) support Put all countries/stations in the sidebar with a Gtk.ScrolledWindow (shown in picture) moar bugfixes Changelog feat: add prosiebensat.1 teletext support ( 4226ff0 ) thanks for coming to my ted talk -zsobix"}, {"post_id": 24355, "ts": "2026-07-07T21:18:14Z", "hours": 2.5864, "text": "Day 7! First week complete! Today was a slower day, with not much progress, but I added yle Teksti-TV support. New features: YLE Teksti-TV (Finnish national public broadcaster) support BUG FIXES (there were alot) some UI tweaks testing the biggest problem I faced was, that the yle teletext api was hidden, and I had to search for it. I thought that all the data was on the frontfacing page itself but I was wrong. I don’t have much to say because everything went pretty well. (sidenote: the hungarian public broadcaster is undergoing MAJOR changes, and I don’t think the teletext service will survive the next 3 months ) Changelog feat: add yle finland teletext support ( b290c1c ) thanks for coming to my ted talk -zsobix"}, {"post_id": 23721, "ts": "2026-07-06T20:41:59Z", "hours": 3.9725, "text": "Day 6! Finally added packaging support, also added 3 other teletext services! I could add THREE more teletext services, because they had functional apis!!!! New features: ČT Text (Czech public broadcaster) support SRF Text (Swiss public broadcaster) support SVT Text (Swedish public broadcaster) support Some UI fixes more bugfixes the biggest problem I faced was that the ČT teletext subpages are marked with LETTERS instead of NUMBERS, which makes things (very) HARD. Other than that, everything went pretty well, even the packaging went well, because I (basically) just copied the packaging structure from my older project Lidl Plus on desktop . I made huge progress today, and either tomorrow or when I can get stickers, I will probably ship! Remaining features: despagettifying my code adding more teletext providers some more UI fixes and bugfixes Changelog fix: forgor to add a dot 💀 ( f919029 ) feat: added packaging support, and 3 other teletext services ( 6278dc6 ) thanks for coming to my ted talk -zsobix"}, {"post_id": 23113, "ts": "2026-07-05T21:22:48Z", "hours": 3.61, "text": "Another day, another devlog!! Finally added Rai Televideo support… I did NOT enjoy this, mostly because Rai’s servers are 1 millenium old Sun workstations, and they take a bajillion years to load, and also there is no next page anything, so I have to iterate over all next pages to find the next page. New features: Rai Televideo (Italian public broadcaster) support Rai Televideo regions support Bug fixes My first problem with Rai Televideo was, as I mentioned, the waiting times are UNBEARABLE, so if more than 2 people connect to their servers, they crawl down to a halt. Other problem is that there are REGIONS of Televideo, meaning I had to add a dropdown to select between the regions, which seems pretty easy, right? To be fair, it was pretty easy but I had so many bugs with it, and combined with the wait times, it was a pain. Only good thing about Televideo, is that the teletext pages are images, so I don’t need a browser to render them. (also there are ADS on the non-existing pages so finding real pages is a pain) The things I still want to add is: More Teletext providers support UI Improvements despagettifying my code preparing it to package and also there are alot of unnoticed bugs I need to fix Changelog 5bf2423 thanks for coming to my ted talk -zsobix"}, {"post_id": 22422, "ts": "2026-07-04T21:39:23Z", "hours": 4.1544, "text": "4th Devlog!!! Another long day complete, today’s coding session was 4 hours, which is great! New features: ZDF Text (german public broadcaster) support Sidebar to switch between countries Bottom button bar to switch between stations Fixed some bugs Figuring out ZDF Text was VERY painful, and I WOULD NOT RECOMMEND any sane person to work with that garbage. Working with MTVA Text and their 2012 website was easier than this. Me finally finding the libadwaita docs, and reading through them, I found the geniusly called AdwNavigationSplitView (the sidebar). The main problem with ZDF Text was, that, the teletext pages were in HTML!! which are NOT IMAGES, so I had to use WebKitGTK to render the HTML pages, which makes the whole thing WAAYYYY slower. Changelog 82a66ba thanks for coming to my ted talk -zsobix"}, {"post_id": 21775, "ts": "2026-07-03T21:36:07Z", "hours": 2.7944, "text": "Third devlog!!!!! It’s late at night currently so I can’t write much, but this is what I worked on. ORF (Austrian public broadcaster) Text support MTVA Text (Hungarian public broadcaster) colored buttons support (a bit borked still) Working with websites that don’t have actual api, is, tiring, but i still got it. The only things I want to still work on is: more public broadcaster support (like for Italy and Germany) better looking interface Also, I found the adwaita documentation! (I did not know this existed) Changelog 92a449b thanks for coming to my ted talk -zsobix"}, {"post_id": 20977, "ts": "2026-07-02T18:32:03Z", "hours": 2.0036, "text": "First (normal) devlog, actually second Hey there! I have been working on some things. Firstly, I added basic functionality, like actually viewing teletext pages and navigation. The readme, is, bad. That is something I have to fix. To actually get the teletext pages, i have to scrape this archaic website, which doesn’t even have an api, i had to get the first (DOT HTM!!!!) page then with BeautifulSoup4 get the hidden input tags that had the next and the previous page ids (????), which is peak 2012 development. I still have to make it look prettier and add other teletext services, because now, it still looks barren. Changelog 74da49f thanks for coming to my ted talk -zsobix"}, {"post_id": 20059, "ts": "2026-07-01T15:50:09Z", "hours": 1.6142, "text": "I cannot press enter, so I can’t use markdown very much. Anyways, this is my random project, Teletext on Desktop. It’s literally in the name, it’s (going to be) the Hungarian teletext service (like Ceefax was in the UK) on desktop! I’m currently working on the basics, like deciphering this 2012 website to get the teletext pages, and making a GTK window."}]...
|
Title: TeleReader by @zsobix | Stardance
Devlogs: Title: TeleReader by @zsobix | Stardance
Devlogs:
I cannot press enter, so I can’t use markdown very much. Anyways, this is my random project, Teletext on Desktop. It’s literally in the name, it’s (going to be) the Hungarian teletext service (like Ceefax was in the UK) on desktop! I’m currently working on the basics, like deciphering this 2012 website to get the teletext pages, and making a GTK window.
First (normal) devlog, actually second Hey there! I have been working on some things. Firstly, I added basic functionality, like actually viewing teletext pages and navigation. The readme, is, bad. That is something I have to fix. To actually get the teletext pages, i have to scrape this archaic website, which doesn’t even have an api, i had to get the first (DOT HTM!!!!) page then with BeautifulSoup4 get the hidden input tags that had the next and the previous page ids (????), which is peak 2012 development. I still have to make it look prettier and add other teletext services, because now, it still looks barren. Changelog 74da49f thanks for coming to my ted talk -zsobix
Third devlog!!!!! It’s late at night currently so I can’t write much, but this is what I worked on. ORF (Austrian public broadcaster) Text support MTVA Text (Hungarian public broadcaster) colored buttons support (a bit borked still) Working with websites that don’t have actual api, is, tiring, but i still got it. The only things I want to still work on is: more public broadcaster support (like for Italy and Germany) better looking interface Also, I found the adwaita documentation! (I did not know this existed) Changelog 92a449b thanks for coming to my ted talk -zsobix
4th Devlog!!! Another long day complete, today’s coding session was 4 hours, which is great! New features: ZDF Text (german public broadcaster) support Sidebar to switch between countries Bottom button bar to switch between stations Fixed some bugs Figuring out ZDF Text was VERY painful, and I WOULD NOT RECOMMEND any sane person to work with that garbage. Working with MTVA Text and their 2012 website was easier than this. Me finally finding the libadwaita docs, and reading through them, I found the geniusly called AdwNavigationSplitView (the sidebar). The main problem with ZDF Text was, that, the teletext pages were in HTML!! which are NOT IMAGES, so I had to use WebKitGTK to render the HTML pages, which makes the whole thing WAAYYYY slower. Changelog 82a66ba thanks for coming to my ted talk -zsobix
Another day, another devlog!! Finally added Rai Televideo support… I did NOT enjoy this, mostly because Rai’s servers are 1 millenium old Sun workstations, and they take a bajillion years to load, and also there is no next page anything, so I have to iterate over all next pages to find the next page. New features: Rai Televideo (Italian public broadcaster) support Rai Televideo regions support Bug fixes My first problem with Rai Televideo was, as I mentioned, the waiting times are UNBEARABLE, so if more than 2 people connect to their servers, they crawl down to a halt. Other problem is that there are REGIONS of Televideo, meaning I had to add a dropdown to select between the regions, which seems pretty easy, right? To be fair, it was pretty easy but I had so many bugs with it, and combined with the wait times, it was a pain. Only good thing about Televideo, is that the teletext pages are images, so I don’t need a browser to render them. (also there are ADS on the non-existing pages so finding real pages is a pain) The things I still want to add is: More Teletext providers support UI Improvements despagettifying my code preparing it to package and also there are alot of unnoticed bugs I need to fix Changelog 5bf2423 thanks for coming to my ted talk -zsobix
Day 6! Finally added packaging support, also added 3 other teletext services! I could add THREE more teletext services, because they had functional apis!!!! New features: ČT Text (Czech public broadcaster) support SRF Text (Swiss public broadcaster) support SVT Text (Swedish public broadcaster) support Some UI fixes more bugfixes the biggest problem I faced was that the ČT teletext subpages are marked with LETTERS instead of NUMBERS, which makes things (very) HARD. Other than that, everything went pretty well, even the packaging went well, because I (basically) just copied the packaging structure from my older project Lidl Plus on desktop . I made huge progress today, and either tomorrow or when I can get stickers, I will probably ship! Remaining features: despagettifying my code adding more teletext providers some more UI fixes and bugfixes Changelog fix: forgor to add a dot 💀 ( f919029 ) feat: added packaging support, and 3 other teletext services ( 6278dc6 ) thanks for coming to my ted talk -zsobix
Day 7! First week complete! Today was a slower day, with not much progress, but I added yle Teksti-TV support. New features: YLE Teksti-TV (Finnish national public broadcaster) support BUG FIXES (there were alot) some UI tweaks testing the biggest problem I faced was, that the yle teletext api was hidden, and I had to search for it. I thought that all the data was on the frontfacing page itself but I was wrong. I don’t have much to say because everything went pretty well. (sidenote: the hungarian public broadcaster is undergoing MAJOR changes, and I don’t think the teletext service will survive the next 3 months ) Changelog feat: add yle finland teletext support ( b290c1c ) thanks for coming to my ted talk -zsobix
Day 8!!!!! Today was also a slower day, because I had less time and less ideas, but I have some ideas now! New features: ProSiebenSAT.1 Teletext (german broadcaster) support umm bug fixes Working with the SAT.1 teletext was actually pretty easy, before I realized I had to get the number of subpages on each page! I spent an hour figuring it out, in the end I have to interate over all the next subpages to get the max number of subpages. Anyways I have some new ideas!! So before shipping, I will add: KiKa Teletext (german childrens channel) support (why does a children’s channel have teletext????? especially in 2026???) DR Tekst-TV (Danish public broadcaster) support Arte Teletext (german/french public broadcaster) support ARD(1) Text (german public broadcasting group) support Put all countries/stations in the sidebar with a Gtk.ScrolledWindow (shown in picture) moar bugfixes Changelog feat: add prosiebensat.1 teletext support ( 4226ff0 ) thanks for coming to my ted talk -zsobix
Day 9!! Today I made waaay better progress then the last two days! So recap (new features): KiKa Teletext (german childrens channel) support DR Tekst-TV (Danish public broadcaster) support Arte Teletext (german/french public broadcaster) support ARD Text (german public broadcasting group) support some ui changes in the sidebar bug fixes (there are always some) The most major issue I had was that the DR teletext page doesn’t give the amount of subpages! So I had to rework the SAT.1 system for it to work. Also, because I put all stations in the sidebar, I had to (by hand) name every button, add station switching logic and also make the sidebar scrollable. This weekend, progress will be slower because I will be away from home and I also need suggestions to what to do next…. (I will not be shipping until there is no shipping sticker!!!) I will probably add: an info button (just because) more teletext services easter eggs (mmm eggs) not in the first ship, but I was thinking about implementing an ACTUAL teletext simulator Changelog feat: add dr, kika, ard, and arte support + ui changes ( d3acca6 ) thanks for coming to my ted talk -zsobix
Day 10! Today was VERY slow, because I’m currently on a trip and don’t have much time. So, new features: RBB teletext (german regional broadcaster) support MDR teletext (german regional broadcaster) support Teletexto TVE (spanish public broadcaster) support bugfixes The first two teletext services were easy to implement, because I already implemented their API! Teletexto TVE support was also easy to implement mostly because, their html files were readable! (they didn’t even have an api) So yeah, I don’t have much things to say. I still want to add: moar teletext services support (like for poland, netherlands, portugal) bugfixes Changelog my stardance extension broke anyways, thanks for coming to my ted talk -zsobix
Day 11 Today also I couldn’t do much so this devlog will be short. New features: TVP Teletext (polish public broadcaster) support BHRT Teletext (bosnian public broadcaster) support bugfixes The most annoying thing I had to do was implementing the bosnian teletext, mostly because, there wasn’t a normal api!!!! So getting the number of subpages, and the next/previous page was pretty hard! Other then that, implementing the polish teletext was actually, well not pretty easy, but not that hard, because you know why…. there was an actual normal working api!!!!!! Well the not easy part was that, the api was just a json file, and a not very good one at that, so implementing the next/previous page functions were not trivial. New features I still want to add: moaar teletext services support bugfixes I gave up on waiting for the weekly shipping stickers, so I’ll probably ship when I get home. (birbs are chirping around me as of writing this ) thanks for coming to my ted talk -zsobix
Day 12 Today was better in terms of progress, but I hadn’t had enough freetime… New features: NOS Teletekst (dutch public broadcaster) support info button bugfixes Implementing NOS Teletekst was VERY HARD, because they give the teletext pages in html, so I have to basically copy the german teletext implementation, but not fully because the api response only has partial html, without any styling, so I have to copy the styling from the official website, then combine it with the api response. Other than that, everything went pretty well, even the info page, and yknow why? I read the f**king docs!!!!!!!! (it’s currently midnight as of writing this and my brain isn’t functioning.) I’ll probably ship tomorrow, because I gave up on waiting, and also I hit 30 hours!!!! So, the last minute features I want to implement: add favorites page bugfixes add some more teletext services Changelog chore: update readme ( f85a191 ) feat: add nos teletekst support + about button ( 11fdea9 ) thanks for coming to my ted talk -zsobix
Day 13!! Wow, i didn’t expect to make this much progress today!!!!! New features: HRT Teletekst (croatian public broadcaster) support Favorites tab (not finished) bug fixes The hardest thing to implement wasn’t even the HRT Teletext support, it was the (still broken) favorites tab! Atleast the favorites tab looks nice (i think) Implementing the teletext service was easy because (you know it) there is an actual api!!!!!!!!!!!!!!!!!!!!!!!!!!!! I didn’t get to ship today because I didn’t get to add all the features I wanted to add. (i want to sleeeeeeeep ) So, features before shipping: more teletext services bugfixes despagettifying my code (almost typed coke) finishing the favorites page thanks for coming to my ted talk -zsobix
Day 14 Today I made some pretty good progress! New features: finally finished the favorites tab bugfixes easter egg……. Everything was pretty easy to implement, maybe the favorites tab was harder than I imagined (I had to let go of the popup message when you add a favorite ) There were ALOT of bugs to fix, like code snippets appearing multiple times, and straight up not functioning code. I also added an easter egg…. try out my app to find out! This is the last devlog before shipping, I tested everything on a live install of manjaro… so there shouldn’t be any issues. (im tiredddd) Changelog feat: add favorites page, bugfixes, and ??? ( 31409b6 ) fix: typo in action ( 6d8d395 ) fix: update action ( 511da3b ) thanks for coming to my final ted talk before the ship! -zsobix
Ships:
Hey, this is TeleReader! A desktop teletext reader! The main inspiration for this project was me watching retro tv documentaries, the Stardance emails, and my last project: “Lidl Plus on desktop” (a desktop implementation of the Lidl Plus loyalty app) I wrote this project in Python, and the GUI with GTK and libadwaita. I tested this on a VM, with a live install of Manjaro linux. The most challenging thing was actually implementing the different teletext services and working around their (sometimes existing) apis. I’m proud of how it turned out, I made some improvements with the UI at the end, so I’m anxious to find out what you think about it!...
|
1793706774.207851
|
1793793174.207851
|
|
46706
|
Travel by @Siddhant08 | Stardance
|
Siddhant08
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T12:51:42Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a travel website the challenge were the js code i had made many mistake on js code and i am proud of my webite the special thing about my website is the picture and text coming animation", "repo": "https://github.com/siddhant08-lol/travel", "demo": "https://siddhant08-lol.github.io/travel/"}]...
|
[{"post_id": 51638, "ts": "202 [{"post_id": 51638, "ts": "2026-08-21T12:47:00Z", "hours": 6.0561, "text": "i made this project before standance was started so there isnt devlog in macondo so it is the final result"}]...
|
Title: Travel by @Siddhant08 | Stardance
Devlogs: Title: Travel by @Siddhant08 | Stardance
Devlogs:
i made this project before standance was started so there isnt devlog in macondo so it is the final result
Ships:
i made a travel website the challenge were the js code i had made many mistake on js code and i am proud of my webite the special thing about my website is the picture and text coming animation...
|
1793706773.2819026
|
1793793173.2819026
|
|
41341
|
Frictionless by @senn_raesen | Stardance
|
senn_raesen
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-13T23:28:22Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "CTF Workbench Built a lightweight, zero-dependency dashboard designed specifically for TryHackMe (THM), Hack The Box (HTB) players, and pen-testers to keep an entire machine grind completely organized in one place. What’s inside: Room & Target Management: Room name/URL tracking, target IP status badges (online/offline states), and attacker VPN IP tracking. Interactive Open Ports Tracker: Clickable service grid (FTP, SSH, HTTP, SMB, WinRM, RDP, etc.) to immediately highlight your attack surface. Dynamic Reverse Shell Generator: Instantly generate ready-to-use payloads for Bash, Python3 PTY, Netcat, PowerShell, PHP, and Perl with dynamic LPORT/LHOST swapping. Encoder, Decoder & Hash Identifier: Quick base64, URL, and hex-to-ASCII tools. Cheat Sheet Quick Modals: Built-in pop-up cheat sheets for network scanning, web enumeration, credential cracking, and privilege escalation with one-click copy. Terminal Command Log Widget: A dedicated mini-terminal log to track, view, and bulk-copy executed commands. 10-Step Methodology Checklist & Flags: Built-in progress tracker from passive recon to final documentation, plus dedicated User and Root flag input fields with completion badges. Machine Timer & Notes: A 2-hour countdown timer (with pause/sync controls), dedicated credentials notepad, recon output area, and custom scripts section. Markdown Report Exporter: One-click export that bundles your entire workflow, flags, port states, notes, and command logs into a clean, ready-to-submit write-up markdown file. Everything persists locally via localStorage so you never lose your progress mid-box. Give it a spin! 🎯", "repo": "https://github.com/sraesen/ctf-workbench", "demo": "https://sraesen.github.io/ctf-workbench/index.html"}]...
|
[{"post_id": 46597, "ts": "202 [{"post_id": 46597, "ts": "2026-08-13T22:56:50Z", "hours": 1.8306, "text": "short devlog here as the project is as good as done What I’ve added since previous devlog: -🎯 Top room banner & target tracking -🛡️ Base64 AV-bypass reverse shell generator -🔌 Interactive port surface tracker 🤖 Custom robots.txt easter eggs big updates and making this project was amazing and i learned a lot"}, {"post_id": 45447, "ts": "2026-08-11T22:05:27Z", "hours": 1.2828, "text": "Devlog #2: JS Timer & Command Modals Major updates to CTF Workbench! Shifted to a full 3-file setup and wrote my first lines of working JavaScript. Updates: -Clean Code Architecture: Separated project into index.html, style.css, and script.js. -Working Machine Timer: Added a 2-hour JS countdown timer with a +60 min room extension button. -Interactive Command Modals: Built pop-up category menus for scanning, web enum, credential cracking, and PrivEsc. -1-Click Copy: Clicking any tool command inside a modal auto-copies it to the clipboard. -Console Debugging: Used browser DevTools (F12) to catch and fix DOM null errors. Next up: Local storage auto-save so notes and target IPs stay saved on refresh!"}, {"post_id": 44831, "ts": "2026-08-10T21:07:28Z", "hours": 0.3419, "text": "Devlog #1: Starting my CTF Workbench dashboard I started building CTF Workbench today! It’s a personal project I’m making so I can keep my TryHackMe CTFs way more organized, planned out, and stop losing track of machine timers while grinding rooms. I don’t really have coding experience, so I decided to write everything line-by-line in VS Code instead of using templates so I can actually learn what I’m doing. What I got done: -Set up VS Code and Live Server so I can see my site update live. -Built the core index.html file structure from scratch. -Wrote the HTML elements for the 2-hour timer display and buttons."}]...
|
Title: Frictionless by @senn_raesen | Stardance
D Title: Frictionless by @senn_raesen | Stardance
Devlogs:
Devlog #1: Starting my CTF Workbench dashboard I started building CTF Workbench today! It’s a personal project I’m making so I can keep my TryHackMe CTFs way more organized, planned out, and stop losing track of machine timers while grinding rooms. I don’t really have coding experience, so I decided to write everything line-by-line in VS Code instead of using templates so I can actually learn what I’m doing. What I got done: -Set up VS Code and Live Server so I can see my site update live. -Built the core index.html file structure from scratch. -Wrote the HTML elements for the 2-hour timer display and buttons.
Devlog #2: JS Timer & Command Modals Major updates to CTF Workbench! Shifted to a full 3-file setup and wrote my first lines of working JavaScript. Updates: -Clean Code Architecture: Separated project into index.html, style.css, and script.js. -Working Machine Timer: Added a 2-hour JS countdown timer with a +60 min room extension button. -Interactive Command Modals: Built pop-up category menus for scanning, web enum, credential cracking, and PrivEsc. -1-Click Copy: Clicking any tool command inside a modal auto-copies it to the clipboard. -Console Debugging: Used browser DevTools (F12) to catch and fix DOM null errors. Next up: Local storage auto-save so notes and target IPs stay saved on refresh!
short devlog here as the project is as good as done What I’ve added since previous devlog: -🎯 Top room banner & target tracking -🛡️ Base64 AV-bypass reverse shell generator -🔌 Interactive port surface tracker 🤖 Custom robots.txt easter eggs big updates and making this project was amazing and i learned a lot
Ships:
CTF Workbench Built a lightweight, zero-dependency dashboard designed specifically for TryHackMe (THM), Hack The Box (HTB) players, and pen-testers to keep an entire machine grind completely organized in one place. What’s inside: Room & Target Management: Room name/URL tracking, target IP status badges (online/offline states), and attacker VPN IP tracking. Interactive Open Ports Tracker: Clickable service grid (FTP, SSH, HTTP, SMB, WinRM, RDP, etc.) to immediately highlight your attack surface. Dynamic Reverse Shell Generator: Instantly generate ready-to-use payloads for Bash, Python3 PTY, Netcat, PowerShell, PHP, and Perl with dynamic LPORT/LHOST swapping. Encoder, Decoder & Hash Identifier: Quick base64, URL, and hex-to-ASCII tools. Cheat Sheet Quick Modals: Built-in pop-up cheat sheets for network scanning, web enumeration, credential cracking, and privilege escalation with one-click copy. Terminal Command Log Widget: A dedicated mini-terminal log to track, view, and bulk-copy executed commands. 10-Step Methodology Checklist & Flags: Built-in progress tracker from passive recon to final documentation, plus dedicated User and Root flag input fields with completion badges. Machine Timer & Notes: A 2-hour countdown timer (with pause/sync controls), dedicated credentials notepad, recon output area, and custom scripts section. Markdown Report Exporter: One-click export that bundles your entire workflow, flags, port states, notes, and command logs into a clean, ready-to-submit write-up markdown file. Everything persists locally via localStorage so you never lose your progress mid-box. Give it a spin! 🎯...
|
1793706772.0910718
|
1793793172.0910718
|
|
23015
|
Personal Website ('-') by @Mad_Magnetar | Personal Website ('-') by @Mad_Magnetar | Stardance...
|
Mad_Magnetar
|
1
|
6.0
|
9
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T11:57:51Z", "hours": 6.0, "multiplier": 1.47, "payout": 9, "blessing": "neutral", "text": "So i made a website about myself that features my personality my playlist and my achievements,ts was my first ever project so i used gemini.", "repo": "https://github.com/silly-supernova/MY_PORTFOLIO/tree/main", "demo": "https://stardance-drab.vercel.app"}]...
|
[{"post_id": 22106, "ts": "202 [{"post_id": 22106, "ts": "2026-07-04T11:51:47Z", "hours": 1.0289, "text": "devlog no. 2!!!!!!. so finally i added spotify and it was lowkey easy than i thought yayayayaya!! i was thinking of adding smth else like a sat tracker or a star tracker but ig its good as it is."}, {"post_id": 17998, "ts": "2026-06-28T23:26:17Z", "hours": 4.8486, "text": "first devlog yayayayayyaya!!!!!!! so this is me first time making something on my own (ofc with gemini)so basically ts was not smth i was planning to build but since i wanted the sticker so bad i decided to build a personal portfolio because ik it takes less time. So i only have to add spotify add smth cool and then i will just smash ship.PROBLEMS: 1)Since my laptop is damn cooked i cant use vs code so i use github codespace and when i wanted to add images i tried many ways but it didnt work at the end i hosted them online and used the direct link 2) choosing right bg colour i tried many combinations then i setteled with ts after my hg told me to just use ts one and sybau.P.S. since ts was my first project please give me some suggestions. THANKS FOR READING!!!!!!"}]...
|
Title: Personal Website ('-') by @Mad_Magn Title: Personal Website ('-') by @Mad_Magnetar | Stardance
Devlogs:
first devlog yayayayayyaya!!!!!!! so this is me first time making something on my own (ofc with gemini)so basically ts was not smth i was planning to build but since i wanted the sticker so bad i decided to build a personal portfolio because ik it takes less time. So i only have to add spotify add smth cool and then i will just smash ship.PROBLEMS: 1)Since my laptop is damn cooked i cant use vs code so i use github codespace and when i wanted to add images i tried many ways but it didnt work at the end i hosted them online and used the direct link 2) choosing right bg colour i tried many combinations then i setteled with ts after my hg told me to just use ts one and sybau.P.S. since ts was my first project please give me some suggestions. THANKS FOR READING!!!!!!
devlog no. 2!!!!!!. so finally i added spotify and it was lowkey easy than i thought yayayayaya!! i was thinking of adding smth else like a sat tracker or a star tracker but ig its good as it is.
Ships:
So i made a website about myself that features my personality my playlist and my achievements,ts was my first ever project so i used gemini....
|
1793706768.0390134
|
1793793168.0390134
|
|
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)...
|
1793706766.8721597
|
1793793166.8721597
|
|
38273
|
Live ISS Tracker-WebOS by @AshishPatel | Stardance
|
AshishPatel
|
1
|
1.39
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-22T14:53:52Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built ISS Mission Control — a real-time tracking dashboard for the International Space Station, integrated as a draggable window in my WebOS. It displays live telemetry data including latitude, longitude, altitude, speed, distance travelled, and the current crew in orbit. The map follows the ISS smoothly with a dashed path trail showing its journey since the page loaded.", "repo": "https://github.com/ashish030810/iss-mission-control", "demo": "https://coruscating-queijadas-dbc90f.netlify.app/"}]...
|
[{"post_id": 35600, "ts": "202 [{"post_id": 35600, "ts": "2026-07-27T04:11:00Z", "hours": 0.385, "text": "Devlog 4: “Final Polish & Ship Ready”Completed final polishing and testing of the ISS Mission Control WebOS app. Added the About view with project info, tech stack, and feature list. Implemented smooth fade animations between views, keyboard shortcuts (Ctrl+1-5), and proper error handling for all API calls.The app is now feature-complete with:Live ISS tracking with interactive map and path trailReal-time telemetry dashboardAstronaut roster with spacecraft badgesLive telecast with NASA/SpaceX streamsWebOS-style desktop with glass-morphism UIFull responsive designKeyboard shortcuts for power usersEverything is tested and ready to ship! 🚀"}, {"post_id": 32993, "ts": "2026-07-22T14:51:55Z", "hours": 0.7, "text": "📄 Devlog 3: Final Polish, UI Refinements, and WebOS IntegrationDate: 22 July 2026Project: Live ISS Tracker-WebOSFocus: Final UI polish, WebOS integration, and preparing for submission🧠 What I Built TodayFinalized the dark mission control theme across all windowsIntegrated the ISS tracker as a fully functional draggable window in my WebOSAdded a live UTC clock and status indicatorPolished the About tab with NASA facts, crew roster, and FAQsEnsured smooth performance across desktop and mobile🎨 UI & Design ImprovementsElementWhat I ChangedColor schemeDeep space dark theme with cyan and amber accentsTelemetry cardsClean layout with live data — lat/lon, altitude, speed, distance, crewMapDark map tiles, no attribution clutter, mission control cornersFollow buttonToggle auto-follow on/offLive indicatorGreen pulse when data is fresh, amber when retrying🔧 Final Code ChangesAdded smooth animation for ISS movement using requestAnimationFrameImplemented API fallbacks so the tracker works even if one source failsCleaned up code and added comments for maintainabilityMade the entire project responsive for mobile and desktop✅ What’s WorkingISS marker moves smoothly across the mapTelemetry updates every 2 secondsPath line traces the orbit since session startCrew count and roster are liveAbout tab with NASA facts and FAQsWebOS integration — draggable, closable, resizable📸 — Ashish Patel17 • CEH • ADG Verified • Building the future"}, {"post_id": 32960, "ts": "2026-07-22T13:29:19Z", "hours": 0.2667, "text": "📄 Devlog 2: Adding the ISS Tracker as a WebOS WindowDate: 22 July 2026Project: Live ISS Tracker-WebOSFocus: Integrating the live ISS tracker into my WebOS as a fully functional draggable window🧠 What I Built TodayAdded the ISS Mission Control dashboard as a draggable window inside my WebOSIntegrated Leaflet.js for the interactive mapConnected to wheretheiss.at API for live position, altitude, and velocityConnected to open-notify API for astronaut count and crew rosterBuilt telemetry cards showing:Latitude / LongitudeAltitudeSpeed (km/h)Distance travelledCrew count🔧 How It WorksFeatureHow It’s DoneLive positionFetches from wheretheiss.at every 2 secondsSmooth movementUses requestAnimationFrame to glide the markerPath trailDashed line tracks the ISS orbit since session startCrew dataFetches from open-notify every 60 secondsFallbackIf one API fails, it switches to another🚧 ChallengesMaking the map resize correctly inside a draggable windowHandling API fallbacks so the tracker keeps working even if one source failsSmoothing the ISS movement so it doesn’t jump across the map✅ What’s WorkingISS marker moves smoothly across the mapTelemetry updates in real-timePath line traces the orbitCrew count and roster are liveDark mission control theme fits the WebOS vibe"}, {"post_id": 32932, "ts": "2026-07-22T12:31:49Z", "hours": 0.3422, "text": "📄 Devlog 1: ISS Mission Control — Starting the BuildDate: 22 July 2026Project: ISS Mission Control DashboardGoal: Build a real-time tracking dashboard for the International Space Station with live telemetry, path tracing, and crew data.🧠 What I Built TodaySet up the project structure: index.html, style.css, script.jsIntegrated Leaflet.js for the interactive mapAdded a dark, space-themed UI with a mission control vibeWired up the live clock (UTC) and status indicator🔧 Tech StackToolPurposeLeaflet.jsInteractive map renderingwheretheiss.at APILive ISS position, altitude, velocityopen-notify APIAstronaut count and rosterVanilla JSAll logic, animations, and UI updates🚧 ChallengesGetting the map to look clean without attribution clutterSmoothing the ISS movement between updates (used requestAnimationFrame for glide)Handling API fallbacks in case one source fails✅ What’s WorkingISS marker moves smoothly across the mapPath line traces the orbit since session startTelemetry updates every 2 secondsLive/Stale status indicator📌 Next StepsAdd more telemetry data (altitude, velocity)Build the About tab with NASA facts and crew rosterPolish UI for mobile responsiveness🕊️ Final ThoughtThis project is shaping up to be a full mission control dashboard — not just a tracker. The goal is to make it feel like a real operations screen. — Ashish Patel17 • CEH • ADG Verified • Building the future"}]...
|
Title: Live ISS Tracker-WebOS by @AshishPatel | St Title: Live ISS Tracker-WebOS by @AshishPatel | Stardance
Devlogs:
📄 Devlog 1: ISS Mission Control — Starting the BuildDate: 22 July 2026Project: ISS Mission Control DashboardGoal: Build a real-time tracking dashboard for the International Space Station with live telemetry, path tracing, and crew data.🧠 What I Built TodaySet up the project structure: index.html, style.css, script.jsIntegrated Leaflet.js for the interactive mapAdded a dark, space-themed UI with a mission control vibeWired up the live clock (UTC) and status indicator🔧 Tech StackToolPurposeLeaflet.jsInteractive map renderingwheretheiss.at APILive ISS position, altitude, velocityopen-notify APIAstronaut count and rosterVanilla JSAll logic, animations, and UI updates🚧 ChallengesGetting the map to look clean without attribution clutterSmoothing the ISS movement between updates (used requestAnimationFrame for glide)Handling API fallbacks in case one source fails✅ What’s WorkingISS marker moves smoothly across the mapPath line traces the orbit since session startTelemetry updates every 2 secondsLive/Stale status indicator📌 Next StepsAdd more telemetry data (altitude, velocity)Build the About tab with NASA facts and crew rosterPolish UI for mobile responsiveness🕊️ Final ThoughtThis project is shaping up to be a full mission control dashboard — not just a tracker. The goal is to make it feel like a real operations screen. — Ashish Patel17 • CEH • ADG Verified • Building the future
📄 Devlog 2: Adding the ISS Tracker as a WebOS WindowDate: 22 July 2026Project: Live ISS Tracker-WebOSFocus: Integrating the live ISS tracker into my WebOS as a fully functional draggable window🧠 What I Built TodayAdded the ISS Mission Control dashboard as a draggable window inside my WebOSIntegrated Leaflet.js for the interactive mapConnected to wheretheiss.at API for live position, altitude, and velocityConnected to open-notify API for astronaut count and crew rosterBuilt telemetry cards showing:Latitude / LongitudeAltitudeSpeed (km/h)Distance travelledCrew count🔧 How It WorksFeatureHow It’s DoneLive positionFetches from wheretheiss.at every 2 secondsSmooth movementUses requestAnimationFrame to glide the markerPath trailDashed line tracks the ISS orbit since session startCrew dataFetches from open-notify every 60 secondsFallbackIf one API fails, it switches to another🚧 ChallengesMaking the map resize correctly inside a draggable windowHandling API fallbacks so the tracker keeps working even if one source failsSmoothing the ISS movement so it doesn’t jump across the map✅ What’s WorkingISS marker moves smoothly across the mapTelemetry updates in real-timePath line traces the orbitCrew count and roster are liveDark mission control theme fits the WebOS vibe
📄 Devlog 3: Final Polish, UI Refinements, and WebOS IntegrationDate: 22 July 2026Project: Live ISS Tracker-WebOSFocus: Final UI polish, WebOS integration, and preparing for submission🧠 What I Built TodayFinalized the dark mission control theme across all windowsIntegrated the ISS tracker as a fully functional draggable window in my WebOSAdded a live UTC clock and status indicatorPolished the About tab with NASA facts, crew roster, and FAQsEnsured smooth performance across desktop and mobile🎨 UI & Design ImprovementsElementWhat I ChangedColor schemeDeep space dark theme with cyan and amber accentsTelemetry cardsClean layout with live data — lat/lon, altitude, speed, distance, crewMapDark map tiles, no attribution clutter, mission control cornersFollow buttonToggle auto-follow on/offLive indicatorGreen pulse when data is fresh, amber when retrying🔧 Final Code ChangesAdded smooth animation for ISS movement using requestAnimationFrameImplemented API fallbacks so the tracker works even if one source failsCleaned up code and added comments for maintainabilityMade the entire project responsive for mobile and desktop✅ What’s WorkingISS marker moves smoothly across the mapTelemetry updates every 2 secondsPath line traces the orbit since session startCrew count and roster are liveAbout tab with NASA facts and FAQsWebOS integration — draggable, closable, resizable📸 — Ashish Patel17 • CEH • ADG Verified • Building the future
Devlog 4: “Final Polish & Ship Ready”Completed final polishing and testing of the ISS Mission Control WebOS app. Added the About view with project info, tech stack, and feature list. Implemented smooth fade animations between views, keyboard shortcuts (Ctrl+1-5), and proper error handling for all API calls.The app is now feature-complete with:Live ISS tracking with interactive map and path trailReal-time telemetry dashboardAstronaut roster with spacecraft badgesLive telecast with NASA/SpaceX streamsWebOS-style desktop with glass-morphism UIFull responsive designKeyboard shortcuts for power usersEverything is tested and ready to ship! 🚀
Ships:
I built ISS Mission Control — a real-time tracking dashboard for the International Space Station, integrated as a draggable window in my WebOS. It displays live telemetry data including latitude, longitude, altitude, speed, distance travelled, and the current crew in orbit. The map follows the ISS smoothly with a dashed path trail showing its journey since the page loaded....
|
1793706765.9936671
|
1794570765.9936671
|
|
26121
|
GameWare Malfunction by @JustCoding8790 | Stardanc GameWare Malfunction by @JustCoding8790 | Stardance...
|
JustCoding8790
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-10T05:32:55Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WarioWare-like game, consisting of 3 simple microgames. I’ve added a few extra nice touches such as animated text/banners. Most of my main challenges were related to coding, such as triggering animations after certain events and figuring out how to teleport an object to another location. I’m proud of how I managed to create an actual working demo in Godot (compared to how other projects went before Stardance). This game is intended to be played by people who play video games occasionally. Keep in mind this demo is really short.", "repo": "https://github.com/JustCoding8790/GameWare-Malfunction", "demo": "https://justcoding8790.itch.io/gameware-malfunction"}]...
|
[{"post_id": 25607, "ts": "202 [{"post_id": 25607, "ts": "2026-07-09T23:51:37Z", "hours": 2.9761, "text": "Devlog #2: Demo Release + Level Screen Additions + New Base Microgame While finishing the demo, I managed to do the following: Create a third working microgame Add some small instructions for microgames Update the README 3 hours for all of these changes. Not too bad. GameWare Malfunction is on itch.io now, but there’s only 3 microgames at the moment. Every once in a while, I’ll come back to this project to work on it a bit more, but for now, I have decided on Universal Existence to be my main top priority for Stardance. Game link: https://justcoding8790.itch.io/gameware-malfunction"}, {"post_id": 19343, "ts": "2026-06-30T16:56:43Z", "hours": 7.1819, "text": "Devlog #1: Menus, Microgames, and Modification Madness For a first devlog, it may seem like I barely got as much done. However, I decided to go a bit beyond the guide by applying some minor changes, such as improving the UI, adding extra animations, etc. As you can see in the video below, I’ve added some small details that I think could help make the game feel nicer. In the next 4-5 hours, I want to try and do the following: Create another microgame Create harder versions of each microgame for when the player progresses past a certain point. Fix some minor problems (like how the timer sometimes glitches out). Create a boss stage when the player reaches microgame #10. CC0 Assets Used in this Game: https://kenney.nl/assets/new-platformer-pack"}]...
|
Title: GameWare Malfunction by @JustCoding8790 | S Title: GameWare Malfunction by @JustCoding8790 | Stardance
Devlogs:
Devlog #1: Menus, Microgames, and Modification Madness For a first devlog, it may seem like I barely got as much done. However, I decided to go a bit beyond the guide by applying some minor changes, such as improving the UI, adding extra animations, etc. As you can see in the video below, I’ve added some small details that I think could help make the game feel nicer. In the next 4-5 hours, I want to try and do the following: Create another microgame Create harder versions of each microgame for when the player progresses past a certain point. Fix some minor problems (like how the timer sometimes glitches out). Create a boss stage when the player reaches microgame #10. CC0 Assets Used in this Game: https://kenney.nl/assets/new-platformer-pack
Devlog #2: Demo Release + Level Screen Additions + New Base Microgame While finishing the demo, I managed to do the following: Create a third working microgame Add some small instructions for microgames Update the README 3 hours for all of these changes. Not too bad. GameWare Malfunction is on itch.io now, but there’s only 3 microgames at the moment. Every once in a while, I’ll come back to this project to work on it a bit more, but for now, I have decided on Universal Existence to be my main top priority for Stardance. Game link: https://justcoding8790.itch.io/gameware-malfunction
Ships:
I made a WarioWare-like game, consisting of 3 simple microgames. I’ve added a few extra nice touches such as animated text/banners. Most of my main challenges were related to coding, such as triggering animations after certain events and figuring out how to teleport an object to another location. I’m proud of how I managed to create an actual working demo in Godot (compared to how other projects went before Stardance). This game is intended to be played by people who play video games occasionally. Keep in mind this demo is really short....
|
1793706764.7501225
|
1793793164.7501225
|
|
22470
|
DomainOS by @adityanavale | Stardance
|
adityanavale
|
1
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T20:54:03Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a minimalistic web based operating system that increases productivity and is easy to use. A huge challenge was learning how to write Javascript code alongside with HTML which I had never done before. I am proud of the fact that I learned a lot more HTML and JS and know how to deploy my projects with live demo links(through Vercel). People should know that the app interfaces and some debugging were built/done using AI but most was done by me.", "repo": "https://github.com/adityanavale-tech/DomianOS", "demo": "https://domian-os-new.vercel.app/"}]...
|
[{"post_id": 46784, "ts": "202 [{"post_id": 46784, "ts": "2026-08-14T09:12:10Z", "hours": 1.0669, "text": "New Search App! With the help of AI I’ve build a web based browser in DomainOS -Online web searching using google -Background Customization -Draggable Icon -Refresh & site forward and back buttons"}, {"post_id": 44804, "ts": "2026-08-10T20:31:55Z", "hours": 0.9819, "text": "To-Do App finished Task creations Calendar view Add priority, location, people and more to tasks User friendly (Done with the help of AI, has been declared)"}, {"post_id": 13947, "ts": "2026-06-22T21:54:51Z", "hours": 1.9639, "text": "DomainOS app coming soon! the to-do app is coming soon to domainOS what you can do: -track different projects -add tasks to projects -draggable window + resizable(new)"}, {"post_id": 13272, "ts": "2026-06-21T18:51:01Z", "hours": 3.2242, "text": "DomainOS’s first app! new features: no more bugs(fixed all + added some safety) -app icon -draggable app -auto welcome window closure -new to-do list app(in the works) goals: properly link github -create user-friendly app interface -create an “app dock” + new apps -make functions????!!"}, {"post_id": 12715, "ts": "2026-06-20T19:30:05Z", "hours": 4.1514, "text": "Started DomainOS! Begineer features Welcome window Dragable window Open & Close buttons Goals: Style the screens properly Make it look good Add apps Bottom Bar … I also want to do another project that is a web based browser powered by a search engine!"}]...
|
Title: DomainOS by @adityanavale | Stardance
Devl Title: DomainOS by @adityanavale | Stardance
Devlogs:
Started DomainOS! Begineer features Welcome window Dragable window Open & Close buttons Goals: Style the screens properly Make it look good Add apps Bottom Bar … I also want to do another project that is a web based browser powered by a search engine!
DomainOS’s first app! new features: no more bugs(fixed all + added some safety) -app icon -draggable app -auto welcome window closure -new to-do list app(in the works) goals: properly link github -create user-friendly app interface -create an “app dock” + new apps -make functions????!!
DomainOS app coming soon! the to-do app is coming soon to domainOS what you can do: -track different projects -add tasks to projects -draggable window + resizable(new)
To-Do App finished Task creations Calendar view Add priority, location, people and more to tasks User friendly (Done with the help of AI, has been declared)
New Search App! With the help of AI I’ve build a web based browser in DomainOS -Online web searching using google -Background Customization -Draggable Icon -Refresh & site forward and back buttons
Ships:
I made a minimalistic web based operating system that increases productivity and is easy to use. A huge challenge was learning how to write Javascript code alongside with HTML which I had never done before. I am proud of the fact that I learned a lot more HTML and JS and know how to deploy my projects with live demo links(through Vercel). People should know that the app interfaces and some debugging were built/done using AI but most was done by me....
|
1793706763.5898504
|
1793793163.5898504
|
|
30608
|
My own site! by @urora | Stardance
|
urora
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T23:51:58Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a presonal portfolio website to showcase my skills and my coding journey", "repo": "https://github.com/lisedo123/Portfolio-26", "demo": "https://lisedo123.github.io/Portfolio-26/"}]...
|
[{"post_id": 22085, "ts": "202 [{"post_id": 22085, "ts": "2026-07-04T10:37:07Z", "hours": 1.64, "text": "Finished whole website ;)"}]...
|
Title: My own site! by @urora | Stardance
Devlogs Title: My own site! by @urora | Stardance
Devlogs:
Finished whole website ;)
Ships:
I made a presonal portfolio website to showcase my skills and my coding journey...
|
1793706762.3810472
|
1793793162.3810472
|
|
28899
|
Alien Arrow Shooter Game by @secretx | Stardance
|
secretx
|
1
|
12.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-10T15:44:05Z", "hours": 12.0, "multiplier": 2.24, "payout": 12, "blessing": "neutral", "text": "i made a project that the player move with the arrows with it and adw attack the aliens with z for left attack and x for the right one its aplay the gamepad mode so you can play it any where the left joystick for move and ay for the attacks in the nintendo switch mode the most thing im proud about that no one can win it", "repo": "https://github.com/noorsalman-dev/roblox", "demo": "https://aliensgame.netlify.app/"}]...
|
[{"post_id": 44735, "ts": "202 [{"post_id": 44735, "ts": "2026-08-10T17:56:09Z", "hours": 0.0, "text": "added many monster"}, {"post_id": 44611, "ts": "2026-08-10T14:28:57Z", "hours": 12.2953, "text": "i made a game that a player like a knight shoot the aliens with his arrows and there 6 level winning with level 6 is an immposiple i made it to make sure that no one will win the game after that you win level 5 you will see a win screen press on the portal and play level 6"}]...
|
Title: Alien Arrow Shooter Game by @secretx | Star Title: Alien Arrow Shooter Game by @secretx | Stardance
Devlogs:
i made a game that a player like a knight shoot the aliens with his arrows and there 6 level winning with level 6 is an immposiple i made it to make sure that no one will win the game after that you win level 5 you will see a win screen press on the portal and play level 6
added many monster
Ships:
i made a project that the player move with the arrows with it and adw attack the aliens with z for left attack and x for the right one its aplay the gamepad mode so you can play it any where the left joystick for move and ay for the attacks in the nintendo switch mode the most thing im proud about that no one can win it...
|
1793706761.2703485
|
1793793161.2703485
|
|
34257
|
Club Website by @Blake_Mango | Stardance
|
Blake_Mango
|
1
|
20.79
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T21:34:33Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website for the school engineering club that im going to start soon. it looks pretty good in my opinion. other than i cant do the text that is scrolling at an angle super well if you know how let me know please. also the contact page is supposed to be blank. Hope you like this website.", "repo": "https://github.com/Blake-Mango/ClubSite", "demo": "https://blake-mango.github.io/ClubSite/"}]...
|
[{"post_id": 55361, "ts": "202 [{"post_id": 55361, "ts": "2026-08-27T04:25:16Z", "hours": 3.8811, "text": "finished up the contact page and made some minor changes around the site. now just a tiny bit more css."}, {"post_id": 49816, "ts": "2026-08-18T19:19:20Z", "hours": 3.9058, "text": "i got the scrolling words to work on any screen size i just had to do some math (scary i know). i then started to work on the contact section where you could contact anyone on the team."}, {"post_id": 47175, "ts": "2026-08-14T21:28:21Z", "hours": 1.3736, "text": "i replaced all of the filler text that was on the home page and also added text to the bottom footer"}, {"post_id": 46740, "ts": "2026-08-14T06:33:25Z", "hours": 2.2631, "text": "i made these super cool looking word scrollers and made a something to link the sign-up. one setback though i cant get the text to scroll super well on a consistent angle of the color gradient. the words and images so far arnt final just needed things to test with."}, {"post_id": 45573, "ts": "2026-08-12T04:57:00Z", "hours": 1.0642, "text": "I made most of the home page. which looks pretty darn good. the word at the end of “a place for” gets typed and retyped with different words. i saw it on a different website and thought i could probably figure out how it worked and do it."}, {"post_id": 44995, "ts": "2026-08-11T04:01:19Z", "hours": 5.2022, "text": "I was working on the About us and the Projects page for the engineering club. still a few bugs in these sections i need to figure out like on the about us the image stays to the side when it should go under the text. comment any ideas of what would be cool for me to add."}, {"post_id": 36446, "ts": "2026-07-28T16:02:34Z", "hours": 3.1122, "text": "I started to do some css and make the top navbar and the footer so that the site actually looks nice."}, {"post_id": 28420, "ts": "2026-07-14T17:33:38Z", "hours": 0.3186, "text": "Started to make all of the pages for the club website and started trying some basic css."}]...
|
Title: Club Website by @Blake_Mango | Stardance
D Title: Club Website by @Blake_Mango | Stardance
Devlogs:
Started to make all of the pages for the club website and started trying some basic css.
I started to do some css and make the top navbar and the footer so that the site actually looks nice.
I was working on the About us and the Projects page for the engineering club. still a few bugs in these sections i need to figure out like on the about us the image stays to the side when it should go under the text. comment any ideas of what would be cool for me to add.
I made most of the home page. which looks pretty darn good. the word at the end of “a place for” gets typed and retyped with different words. i saw it on a different website and thought i could probably figure out how it worked and do it.
i made these super cool looking word scrollers and made a something to link the sign-up. one setback though i cant get the text to scroll super well on a consistent angle of the color gradient. the words and images so far arnt final just needed things to test with.
i replaced all of the filler text that was on the home page and also added text to the bottom footer
i got the scrolling words to work on any screen size i just had to do some math (scary i know). i then started to work on the contact section where you could contact anyone on the team.
finished up the contact page and made some minor changes around the site. now just a tiny bit more css.
Ships:
I made a website for the school engineering club that im going to start soon. it looks pretty good in my opinion. other than i cant do the text that is scrolling at an angle super well if you know how let me know please. also the contact page is supposed to be blank. Hope you like this website....
|
1793706760.0819747
|
1793793160.0819747
|
|
692
|
Pinball by @jms | Stardance
|
jms
|
1
|
10.46
|
19
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T03:36:43Z", "hours": 10.0, "multiplier": 1.99, "payout": 19, "blessing": "neutral", "text": "This is a game of pinball. Some problems with this game are the button at the start may not load quickly so you may need to wait a few seconds and with everything with collision there may be some bugs in relation to collision", "repo": "https://github.com/Chickenhatter/pinball", "demo": "https://chickenhatter.itch.io/pinball"}]...
|
[{"post_id": 7939, "ts": "2026 [{"post_id": 7939, "ts": "2026-06-13T07:48:14Z", "hours": 0.4619, "text": "Fixed something about conrol nodes stealing clicks and added a smacker in start scene"}, {"post_id": 7852, "ts": "2026-06-13T02:56:28Z", "hours": 1.0372, "text": "Game Finished with also start scene"}, {"post_id": 7809, "ts": "2026-06-13T01:06:14Z", "hours": 0.7289, "text": "Making main scene ready to be shipped"}, {"post_id": 7389, "ts": "2026-06-12T09:58:24Z", "hours": 0.5383, "text": "Ball loop now works"}, {"post_id": 6783, "ts": "2026-06-11T11:12:08Z", "hours": 0.5767, "text": "Coded the second ball"}, {"post_id": 6135, "ts": "2026-06-10T10:07:12Z", "hours": 0.5706, "text": "I added a second ball and the path works"}, {"post_id": 5510, "ts": "2026-06-09T09:50:16Z", "hours": 0.5864, "text": "Added images"}, {"post_id": 4829, "ts": "2026-06-08T10:45:15Z", "hours": 0.6136, "text": "First few sprites being done"}, {"post_id": 4093, "ts": "2026-06-07T09:03:19Z", "hours": 0.61, "text": "Code for all boosters and path"}, {"post_id": 3439, "ts": "2026-06-06T11:41:27Z", "hours": 0.5353, "text": "Added boosters and added an area that makes the ramp physical"}, {"post_id": 2708, "ts": "2026-06-05T12:48:53Z", "hours": 0.6819, "text": "Mapshape starting to look like a normal one"}, {"post_id": 2673, "ts": "2026-06-05T10:56:11Z", "hours": 0.5731, "text": "better map shape"}, {"post_id": 2057, "ts": "2026-06-04T11:14:28Z", "hours": 0.6503, "text": "added shoot and finally made the hooks work when flat"}, {"post_id": 1342, "ts": "2026-06-03T09:09:05Z", "hours": 0.6597, "text": "I started working on the plunger/some extra code"}, {"post_id": 672, "ts": "2026-06-02T06:55:12Z", "hours": 0.6336, "text": "I have now added the hooks(whatever the swinging parts are called)"}, {"post_id": 190, "ts": "2026-06-01T07:00:27Z", "hours": 0.5636, "text": "I have made the pinball drop and collide so my next goal will be to have it have different collisions with specific objects"}]...
|
Title: Pinball by @jms | Stardance
Devlogs:
I hav Title: Pinball by @jms | Stardance
Devlogs:
I have made the pinball drop and collide so my next goal will be to have it have different collisions with specific objects
I have now added the hooks(whatever the swinging parts are called)
I started working on the plunger/some extra code
added shoot and finally made the hooks work when flat
better map shape
Mapshape starting to look like a normal one
Added boosters and added an area that makes the ramp physical
Code for all boosters and path
First few sprites being done
Added images
I added a second ball and the path works
Coded the second ball
Ball loop now works
Making main scene ready to be shipped
Game Finished with also start scene
Fixed something about conrol nodes stealing clicks and added a smacker in start scene
Ships:
This is a game of pinball. Some problems with this game are the button at the start may not load quickly so you may need to wait a few seconds and with everything with collision there may be some bugs in relation to collision...
|
1793706758.8799546
|
1793793158.8799546
|
|
27177
|
Four In A Row by @averagestardancefan | Stardance
|
averagestardancefan
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-14T16:53:01Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my third silly little Java game. This is definitely not Connect Four, for sure not. Please play, it’s cool. Try with code: https://codehs.com/sandbox/garrettellis/new-sandbox-program-3 Without code: https://codehs.com/sandbox/garrettellis/new-sandbox-program-3/run You can use these links to play it or go into the github thingy and download the .java file and open it in VS Code or use the .zip file and run the program from the file. Easiest way is just to click on the browser versions from above. Basically this just lets you take turns placing your tile in one of the seven columns and puts it on top of the last one. The only actually complicated code is the code that checks all of the win cases because there are a lot of ways to have four in a row. Play it, it’s cool I promise.", "repo": "https://github.com/garetelis/Four-In-A-Row", "demo": "https://github.com/garetelis/Four-In-A-Row/releases/tag/1.0.0"}]...
|
[{"post_id": 21238, "ts": "202 [{"post_id": 21238, "ts": "2026-07-03T02:17:11Z", "hours": 1.8883, "text": "Well I kind of never made a devlog for this but it’s because this game was super easy compared to the others. So… here you go."}]...
|
Title: Four In A Row by @averagestardancefan | Sta Title: Four In A Row by @averagestardancefan | Stardance
Devlogs:
Well I kind of never made a devlog for this but it’s because this game was super easy compared to the others. So… here you go.
Ships:
This is my third silly little Java game. This is definitely not Connect Four, for sure not. Please play, it’s cool. Try with code: https://codehs.com/sandbox/garrettellis/new-sandbox-program-3 Without code: https://codehs.com/sandbox/garrettellis/new-sandbox-program-3/run You can use these links to play it or go into the github thingy and download the .java file and open it in VS Code or use the .zip file and run the program from the file. Easiest way is just to click on the browser versions from above. Basically this just lets you take turns placing your tile in one of the seven columns and puts it on top of the last one. The only actually complicated code is the code that checks all of the win cases because there are a lot of ways to have four in a row. Play it, it’s cool I promise....
|
1793706757.7461867
|
1793793157.7461867
|
|
33470
|
Anime Ability Frontlines by @hoshiko | Stardance
|
hoshiko
|
1
|
42.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-05T06:11:02Z", "hours": 42.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is a Roblox Game, its a fighting simulator with superpowers from all different Animes, it includes cool animations and interactiveness, a system to get more gear and a level up system. I made this game because i wanted to make a roblox game from a long time and i LOVEE watching anime, so i took this stardance as an opportunity to finally work on it when i saw so many people working on their own projects. Do check this game out and let me now! :D", "repo": "https://github.com/PranavDhiman07/Roblox-Game", "demo": "https://www.roblox.com/games/139669234021761/Anime-Ability-Frontlines"}]...
|
[{"post_id": 41161, "ts": "202 [{"post_id": 41161, "ts": "2026-08-05T06:03:46Z", "hours": 5.7219, "text": "Finally released and shipped my game to the roblox library, check it out on my profile @BACK_W0LF"}, {"post_id": 31069, "ts": "2026-07-19T05:11:20Z", "hours": 3.6867, "text": "Added so many abilities to my game, each with a custom Icon, and animations"}, {"post_id": 28404, "ts": "2026-07-14T17:18:40Z", "hours": 2.2111, "text": "I added, a shop UI finally, all the items and the coin systems work now There is a daily rewards and Time rewards section now There is a 2x experience powerup now which works perfectly."}, {"post_id": 26111, "ts": "2026-07-10T18:16:10Z", "hours": 30.4544, "text": "HELLOWWW Im working on this superpowered fightin game in roblox (haven’t thought for the perfect name yet, bear with me), SOOO I really like anime and roblox both so i decided to make this project. Right now i added QUITE MANY, Abilities and made a map, a trading system where players can trade abilities, and also a combat detection system for the pvp zone, and many more, A safezone and a treasuere chest which spawns every 5 mins. A Leveling system which increases the max health every level, A coin system and a shop to purchase abilities. I worked for it too much and forgot to devlog, and now only 10hrs out of it will count 💀 ANYWAYSS I will add more features now and finish this game Thanks for reading :DD"}]...
|
Title: Anime Ability Frontlines by @hoshiko | Star Title: Anime Ability Frontlines by @hoshiko | Stardance
Devlogs:
HELLOWWW Im working on this superpowered fightin game in roblox (haven’t thought for the perfect name yet, bear with me), SOOO I really like anime and roblox both so i decided to make this project. Right now i added QUITE MANY, Abilities and made a map, a trading system where players can trade abilities, and also a combat detection system for the pvp zone, and many more, A safezone and a treasuere chest which spawns every 5 mins. A Leveling system which increases the max health every level, A coin system and a shop to purchase abilities. I worked for it too much and forgot to devlog, and now only 10hrs out of it will count 💀 ANYWAYSS I will add more features now and finish this game Thanks for reading :DD
I added, a shop UI finally, all the items and the coin systems work now There is a daily rewards and Time rewards section now There is a 2x experience powerup now which works perfectly.
Added so many abilities to my game, each with a custom Icon, and animations
Finally released and shipped my game to the roblox library, check it out on my profile @BACK_W0LF
Ships:
This is a Roblox Game, its a fighting simulator with superpowers from all different Animes, it includes cool animations and interactiveness, a system to get more gear and a level up system. I made this game because i wanted to make a roblox game from a long time and i LOVEE watching anime, so i took this stardance as an opportunity to finally work on it when i saw so many people working on their own projects. Do check this game out and let me now! :D...
|
1793706756.5868576
|
1793793156.5868576
|
|
33561
|
Speech Converter by @Sadiya | Stardance
|
Sadiya
|
2
|
6.0
|
3
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T01:48:56Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I didn’t even realize that this project was not shipped until I saw an email but this project simple reads text out loud when typed in the box and the second half the background changes color by the click of a button.", "repo": "https://github.com/sadiyameem/speech-converter", "demo": "https://sadiyameem.github.io/speech-converter/"}, {"ship_num": 2, "ts": "2026-07-11T20:34:20Z", "hours": 2.0, "multiplier": 2.01, "payout": 3, "blessing": "neutral", "text": "I made a speech converter where users can type text and have it read out to them with different voices and or use their microphone to turn their words into written text.", "repo": "https://github.com/sadiyameem/speech-converter", "demo": "https://sadiyameem.github.io/speech-converter/"}]...
|
[{"post_id": 61217, "ts": "202 [{"post_id": 61217, "ts": "2026-09-04T01:24:29Z", "hours": 0.4433, "text": "I just added the JS and I added a button that changes the background on the other half of the screen. And don’t mind the background noise."}, {"post_id": 61199, "ts": "2026-09-04T00:40:39Z", "hours": 0.2789, "text": "I have restarted this project and I have already did the html and css"}, {"post_id": 61191, "ts": "2026-09-04T00:23:06Z", "hours": 0.6078, "text": "It has been a while since I made a project here and the main reason was that I was making projects in Macondo but since that is over I can finally put all my attention to Stardance. So for this project I am going to start all over cause I don’t remember what I did with this project but I do remember I had an ongoing issue with the speech that I plan on fixing. So I have already started over on this project. Here it is just the outline."}, {"post_id": 39582, "ts": "2026-08-02T17:18:06Z", "hours": 1.0486, "text": "Okay so I didn’t realize I have an hour logged and I total forgot about this project but I am taking a different approach and making a different project but still uses speech."}, {"post_id": 30909, "ts": "2026-07-18T21:45:15Z", "hours": 1.4531, "text": "After solving my issues, I can say that this is working and I did take out some of the features I added before which were the stop button and listen button but I added a new feature which is a dark mode button or color changer button that changes the background."}, {"post_id": 27255, "ts": "2026-07-12T17:27:30Z", "hours": 0.3369, "text": "Based on the feedback I got I tried to fix the speak and stop buttons so hopefully it works for others"}, {"post_id": 26764, "ts": "2026-07-11T19:06:57Z", "hours": 0.7017, "text": "I added two more buttons"}, {"post_id": 26726, "ts": "2026-07-11T18:06:08Z", "hours": 0.355, "text": "I am done with the JS and I figured out why the voices weren’t showing up and now I am in the process of adding more features. I know it looks cut off but this will due until I’m done adding the features"}, {"post_id": 26653, "ts": "2026-07-11T16:19:59Z", "hours": 0.5822, "text": "I am done with the HTML and CSS of this project. I have added the title, textbox, listen button, voices selector and now I will start the JS and add the voices for the selector."}]...
|
Title: Speech Converter by @Sadiya | Stardance
De Title: Speech Converter by @Sadiya | Stardance
Devlogs:
I am done with the HTML and CSS of this project. I have added the title, textbox, listen button, voices selector and now I will start the JS and add the voices for the selector.
I am done with the JS and I figured out why the voices weren’t showing up and now I am in the process of adding more features. I know it looks cut off but this will due until I’m done adding the features
I added two more buttons
Based on the feedback I got I tried to fix the speak and stop buttons so hopefully it works for others
After solving my issues, I can say that this is working and I did take out some of the features I added before which were the stop button and listen button but I added a new feature which is a dark mode button or color changer button that changes the background.
Okay so I didn’t realize I have an hour logged and I total forgot about this project but I am taking a different approach and making a different project but still uses speech.
It has been a while since I made a project here and the main reason was that I was making projects in Macondo but since that is over I can finally put all my attention to Stardance. So for this project I am going to start all over cause I don’t remember what I did with this project but I do remember I had an ongoing issue with the speech that I plan on fixing. So I have already started over on this project. Here it is just the outline.
I have restarted this project and I have already did the html and css
I just added the JS and I added a button that changes the background on the other half of the screen. And don’t mind the background noise.
Ships:
I made a speech converter where users can type text and have it read out to them with different voices and or use their microphone to turn their words into written text.
I didn’t even realize that this project was not shipped until I saw an email but this project simple reads text out loud when typed in the box and the second half the background changes color by the click of a button....
|
1793706755.3334272
|
1793793155.3334272
|
|
37757
|
Doodle Arcade by @ruter | Stardance
|
ruter
|
2
|
24.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T18:25:34Z", "hours": 19.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "WE FINISHED!!! The game is complete, and it came out pretty well. There were a lot of bugs in the way, but we’ve overcame them and build one of the best games ever created by us. We are really excited to show you our game Doodle Arcade, which features 3 minigames. I don’t want to spoil the game too much, just try it yourself! https://rutra8002.itch.io/doodle-arcade", "repo": "https://github.com/Saniccxx/gmtk-jam", "demo": "https://rutra8002.itch.io/doodle-arcade"}, {"ship_num": 2, "ts": "2026-07-20T20:24:52Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Features Added: Parkour Minigame: Added procedural platform generation, lava hazards, and distance tracking. Space Masher Minigame: Created a second microgame requiring 10 spacebar presses in 5 seconds. Hub Map: Configured the main map to select and load minigames randomly. Win/Loss Screens: Integrated original Victory and Defeat screens. This is very early build of the project, gonna improve it in the future!", "repo": "https://github.com/Saniccxx/gmtk-jam", "demo": "https://rutra8002.itch.io/doodle-arcade"}]...
|
[{"post_id": 35364, "ts": "202 [{"post_id": 35364, "ts": "2026-07-26T18:24:18Z", "hours": 5.1983, "text": "WE FINISHED!!! The game is complete, and it came out pretty well. There were a lot of bugs in the way, but we’ve overcame them and build one of the best games ever created by us. We are really excited to show you our game Doodle Arcade, which features 3 minigames. I don’t want to spoil the game too much, just try it yourself! https://rutra8002.itch.io/doodle-arcade"}, {"post_id": 35048, "ts": "2026-07-26T06:55:44Z", "hours": 8.0947, "text": "Hey! We have changed the art style a lot, added some music and added a lot more screens which I can’t show here as I can only include one screenshot, progress is going great and we plan on finishing today"}, {"post_id": 33381, "ts": "2026-07-23T08:33:44Z", "hours": 6.1472, "text": "Hey, been working 4 some time, had fan with shaders, tried to add some type of hud, and more architectural and algorithmic changes like make sure player is actually able to get onto ramp etc"}, {"post_id": 31939, "ts": "2026-07-20T19:06:10Z", "hours": 5.1511, "text": "Features Added: Parkour Minigame: Added procedural platform generation, lava hazards, and distance tracking. Space Masher Minigame: Created a second microgame requiring 10 spacebar presses in 5 seconds. Hub Map: Configured the main map to select and load minigames randomly. Win/Loss Screens: Integrated original Victory and Defeat screens."}]...
|
Title: Doodle Arcade by @ruter | Stardance
Devlog Title: Doodle Arcade by @ruter | Stardance
Devlogs:
Features Added: Parkour Minigame: Added procedural platform generation, lava hazards, and distance tracking. Space Masher Minigame: Created a second microgame requiring 10 spacebar presses in 5 seconds. Hub Map: Configured the main map to select and load minigames randomly. Win/Loss Screens: Integrated original Victory and Defeat screens.
Hey, been working 4 some time, had fan with shaders, tried to add some type of hud, and more architectural and algorithmic changes like make sure player is actually able to get onto ramp etc
Hey! We have changed the art style a lot, added some music and added a lot more screens which I can’t show here as I can only include one screenshot, progress is going great and we plan on finishing today
WE FINISHED!!! The game is complete, and it came out pretty well. There were a lot of bugs in the way, but we’ve overcame them and build one of the best games ever created by us. We are really excited to show you our game Doodle Arcade, which features 3 minigames. I don’t want to spoil the game too much, just try it yourself! https://rutra8002.itch.io/doodle-arcade
Ships:
Features Added: Parkour Minigame: Added procedural platform generation, lava hazards, and distance tracking. Space Masher Minigame: Created a second microgame requiring 10 spacebar presses in 5 seconds. Hub Map: Configured the main map to select and load minigames randomly. Win/Loss Screens: Integrated original Victory and Defeat screens. This is very early build of the project, gonna improve it in the future!
WE FINISHED!!! The game is complete, and it came out pretty well. There were a lot of bugs in the way, but we’ve overcame them and build one of the best games ever created by us. We are really excited to show you our game Doodle Arcade, which features 3 minigames. I don’t want to spoil the game too much, just try it yourself! https://rutra8002.itch.io/doodle-arcade...
|
1793706754.1471899
|
1793793154.1471899
|
|
48842
|
My own site! by @StarLight9 | Stardance
|
StarLight9
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T14:04:30Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my very own personal website dedicated to me! The most challenging part was probably to learn to deploy the project properly and also linking the CSS editor to the HTML editor. i really enjoyed making the project and want people to just sit back and enjoy a newbie struggle while making their very first website.", "repo": "https://github.com/ashmitkundu2011-collab/project1-website", "demo": "https://ashmitkundu2011-collab.github.io/project1-website"}]...
|
[{"post_id": 49581, "ts": "202 [{"post_id": 49581, "ts": "2026-08-18T13:53:13Z", "hours": 3.1381, "text": "#devlog1 i’m working on editing and finalizing the css code"}]...
|
Title: My own site! by @StarLight9 | Stardance
De Title: My own site! by @StarLight9 | Stardance
Devlogs:
#devlog1 i’m working on editing and finalizing the css code
Ships:
I made my very own personal website dedicated to me! The most challenging part was probably to learn to deploy the project properly and also linking the CSS editor to the HTML editor. i really enjoyed making the project and want people to just sit back and enjoy a newbie struggle while making their very first website....
|
1793706753.0123787
|
1793793153.0123787
|
|
48837
|
FunTab by @Finity | Stardance
|
Finity
|
2
|
6.0
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T04:30:15Z", "hours": 3.0, "multiplier": 11.53, "payout": 30, "blessing": "neutral", "text": "FunTab is finally done, a new tab page themed around dad jokes. I initially had the idea of a page that would tell jokes randomly, and what began as my first JS project just kind of grew and grew! Now it has a clock with time based greetings, music, a focus timer, quick notes, and a customizable color scheme and cursor. It’s been fun figuring things out, and I hope yall like it.", "repo": "https://github.com/Finity16/fun-tab", "demo": "https://finity16.github.io/fun-tab/"}, {"ship_num": 2, "ts": "2026-08-17T03:49:20Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a fun little new tab page was a “tab-ulous” twist, it tells you a dad joke every load! I themed the website around humor, I guess, with a circus background and “Entry of the Gladiators” playing in the background. It has a working clock and date, some handy shortcuts, and customizable colors!", "repo": "https://github.com/Finity16/fun-tab", "demo": "https://finity16.github.io/fun-tab/"}]...
|
[{"post_id": 63362, "ts": "202 [{"post_id": 63362, "ts": "2026-09-07T04:24:38Z", "hours": 1.0014, "text": "Added a time-based greeting that questions your sleep schedule, and polished everything up overall. Searching anything with special symbols broke the google URL. Ended up wrapping the query in encodeURIComponent so special characters get escaped properly."}, {"post_id": 60630, "ts": "2026-09-03T03:13:24Z", "hours": 1.0494, "text": "Added a focus timer and a customizable cursor. Focus timer can be paused and time can be added in increments of 5, and cursor can be replaced with any image on your device."}, {"post_id": 56313, "ts": "2026-08-28T01:30:40Z", "hours": 0.5128, "text": "Added a quick notes section and buttons that enlarge on hover. You can also now click the joke box to get a new joke without having to refresh like before."}, {"post_id": 48636, "ts": "2026-08-17T03:32:51Z", "hours": 1.0728, "text": "Polished everything up and made it all look nice. Struggled a bit with getting the icons on the shortcuts to work. The three main colors used can also be customized at the bottom. Wrapping up and preparing to ship!!"}, {"post_id": 48589, "ts": "2026-08-17T01:28:08Z", "hours": 0.6672, "text": "Added a date, four shortcuts, and circus music that can be toggled on and off. There is also a list of 30 dad jokes, one will be randomly chosen every time the website is opened. Ready to polish things up and make everything look nice with CSS."}, {"post_id": 48458, "ts": "2026-08-16T20:12:26Z", "hours": 0.8397, "text": "Added a clock feature and a search bar that can be triggered by both the button and enter key."}]...
|
Title: FunTab by @Finity | Stardance
Devlogs:
Add Title: FunTab by @Finity | Stardance
Devlogs:
Added a clock feature and a search bar that can be triggered by both the button and enter key.
Added a date, four shortcuts, and circus music that can be toggled on and off. There is also a list of 30 dad jokes, one will be randomly chosen every time the website is opened. Ready to polish things up and make everything look nice with CSS.
Polished everything up and made it all look nice. Struggled a bit with getting the icons on the shortcuts to work. The three main colors used can also be customized at the bottom. Wrapping up and preparing to ship!!
Added a quick notes section and buttons that enlarge on hover. You can also now click the joke box to get a new joke without having to refresh like before.
Added a focus timer and a customizable cursor. Focus timer can be paused and time can be added in increments of 5, and cursor can be replaced with any image on your device.
Added a time-based greeting that questions your sleep schedule, and polished everything up overall. Searching anything with special symbols broke the google URL. Ended up wrapping the query in encodeURIComponent so special characters get escaped properly.
Ships:
I made a fun little new tab page was a “tab-ulous” twist, it tells you a dad joke every load! I themed the website around humor, I guess, with a circus background and “Entry of the Gladiators” playing in the background. It has a working clock and date, some handy shortcuts, and customizable colors!
FunTab is finally done, a new tab page themed around dad jokes. I initially had the idea of a page that would tell jokes randomly, and what began as my first JS project just kind of grew and grew! Now it has a clock with time based greetings, music, a focus timer, quick notes, and a customizable color scheme and cursor. It’s been fun figuring things out, and I hope yall like it....
|
1793706751.8357456
|
1793793151.8357456
|