|
24887
|
Shelfy by @dr1ft | Stardance
|
dr1ft
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Shelfy by @dr1ft | Stardance
|
1793346530.5760174
|
1793951330.5760174
|
|
55715
|
My own site! by @PatrickBadmash | Stardance
|
PatrickBadmash
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @PatrickBadmash | Stardance
|
1793346531.481953
|
1793951331.481953
|
|
50256
|
Mihera F1 RC car by @Alcaraz9219 | Stardance
|
Alcaraz9219
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T17:40:10Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a F1 radio control car that works with Arduino and electronic components. The entire car and the remote control was build from scratch and with a 3D printer. This proyect teach me that they don’t always turn out the way we want them to the first time round, and I made a lot of mistakes that I had to solve them designing and printing again, or using the tools that I have, but I have learnt a lot in this proyect and , although I couldn’t compleately at all and I know that is not the best radio control car, I am so proud of it.", "repo": "https://github.com/Alcaraz9219/F1-RC-car", "demo": ""}]...
|
[{"post_id": 70694, "ts": "202 [{"post_id": 70694, "ts": "2026-09-19T16:29:33Z", "hours": 3.1525, "text": "To wrap up the project a bit, I’ve designed and printed the front nose and I’ve also printed the front wing. The car’s electronics are now complete after I replaced the transmitter and receiver modules with two NRF24L01 PA+LNA units with antennas, which work much better and have a much greater range. And although the F1 bodywork and the DRS are still missing, I’ll leave it as finished for the time being because I don’t have time to work on it any further and also because the Stardance deadline is approaching. So that’s it for now, and I hope people have enjoyed the project."}, {"post_id": 62812, "ts": "2026-09-06T10:29:26Z", "hours": 6.2022, "text": "After a few problems with the printer, I’ve finally finished making the control unit and fitting all the components inside; I can say that the car is now working. But there’s another problem: to connect the car’s Arduino R4 to the R3 – which I ended up having to use due to technical issues with the ESP32 – I’ve used a 433 MHz RF transmitter and receiver module that has a very short range, and as I want to fit it inside the casing on both the car and the remote control, the distance is practically zero. So I’ve already bought an NRF24L01 PA+LNA, which is another bidirectional transmitter with a much greater range and comes with an antenna; the next step will be to fit it and carry out the final test before installing the DRS and the casing."}, {"post_id": 52967, "ts": "2026-08-23T10:49:03Z", "hours": 1.7503, "text": "In this section, I have designed the casing for the controller, which I have decided should be shaped like an F1 steering wheel. The controller will use a Steamaker ESP32 Plus board; a joystick will be used to control the car’s steering, and there will be two buttons to control the motors so that the car can move forwards and backwards. Also, to make it look more like a real F1 car, the steering wheel will feature a display showing information about the controller and the car, such as battery level, speed and the status of the DRS – which is the opening of the rear wing to reduce aerodynamic drag, something that’s very helpful in real cars. The next step will be to create the 3D model of the hollow steering wheel and add the mounts for the components. If anyone can think of any extras to add to the car or the controller, please let me know; if it’s a good idea, I’ll take it into account and add it."}, {"post_id": 50886, "ts": "2026-08-20T10:58:06Z", "hours": 3.8042, "text": "On 2 June, I started a project. The idea was to build a radio-controlled car in the shape and style of a Formula 1 car, but I wanted to build the whole thing myself from scratch. The car is being built solely from my own designs, which are being 3D-printed. This project is divided into two parts: the car, which contains electronic components such as an Arduino R4 Wi-Fi, a servomotor for the steering, another for the DRS system, an L298N controller and two motors, as well as a battery holder with its own switch; and the remote control, which communicates with the car via a transmitter module in the remote and a receiver in the car. The remote control features components such as a Steemakers ESP32 Plus, a joystick for the motors, two buttons for steering, another to activate the DRS, and a display to show information. This is the plan for the project, which is not yet finished. Unfortunately, when I started this project I wasn’t familiar with Stardance, so I haven’t recorded all the hours spent doing calculations, looking through all the files and their dates, photos and videos – it could easily have been around 45 hours of unrecorded work. Anyway, what I’ve done so far has been to design the chassis and the mounts for the components, fit everything into the car, and build the steering system – which has undoubtedly been the most difficult part and caused me the most headaches, but which eventually ended up working. Since I started on Stardance, I’ve been designing the front wing, assembling the whole car to check that it works, and finally fitting just the remote control components to check that they work before designing the remote control itself. This isn’t proving to be an easy project – there are lots of errors cropping up – but you learn a lot from them. The next step will be to design the remote control in 3D and then print it."}]...
|
Title: Mihera F1 RC car by @Alcaraz9219 | Stardanc Title: Mihera F1 RC car by @Alcaraz9219 | Stardance
Devlogs:
On 2 June, I started a project. The idea was to build a radio-controlled car in the shape and style of a Formula 1 car, but I wanted to build the whole thing myself from scratch. The car is being built solely from my own designs, which are being 3D-printed. This project is divided into two parts: the car, which contains electronic components such as an Arduino R4 Wi-Fi, a servomotor for the steering, another for the DRS system, an L298N controller and two motors, as well as a battery holder with its own switch; and the remote control, which communicates with the car via a transmitter module in the remote and a receiver in the car. The remote control features components such as a Steemakers ESP32 Plus, a joystick for the motors, two buttons for steering, another to activate the DRS, and a display to show information. This is the plan for the project, which is not yet finished. Unfortunately, when I started this project I wasn’t familiar with Stardance, so I haven’t recorded all the hours spent doing calculations, looking through all the files and their dates, photos and videos – it could easily have been around 45 hours of unrecorded work. Anyway, what I’ve done so far has been to design the chassis and the mounts for the components, fit everything into the car, and build the steering system – which has undoubtedly been the most difficult part and caused me the most headaches, but which eventually ended up working. Since I started on Stardance, I’ve been designing the front wing, assembling the whole car to check that it works, and finally fitting just the remote control components to check that they work before designing the remote control itself. This isn’t proving to be an easy project – there are lots of errors cropping up – but you learn a lot from them. The next step will be to design the remote control in 3D and then print it.
In this section, I have designed the casing for the controller, which I have decided should be shaped like an F1 steering wheel. The controller will use a Steamaker ESP32 Plus board; a joystick will be used to control the car’s steering, and there will be two buttons to control the motors so that the car can move forwards and backwards. Also, to make it look more like a real F1 car, the steering wheel will feature a display showing information about the controller and the car, such as battery level, speed and the status of the DRS – which is the opening of the rear wing to reduce aerodynamic drag, something that’s very helpful in real cars. The next step will be to create the 3D model of the hollow steering wheel and add the mounts for the components. If anyone can think of any extras to add to the car or the controller, please let me know; if it’s a good idea, I’ll take it into account and add it.
After a few problems with the printer, I’ve finally finished making the control unit and fitting all the components inside; I can say that the car is now working. But there’s another problem: to connect the car’s Arduino R4 to the R3 – which I ended up having to use due to technical issues with the ESP32 – I’ve used a 433 MHz RF transmitter and receiver module that has a very short range, and as I want to fit it inside the casing on both the car and the remote control, the distance is practically zero. So I’ve already bought an NRF24L01 PA+LNA, which is another bidirectional transmitter with a much greater range and comes with an antenna; the next step will be to fit it and carry out the final test before installing the DRS and the casing.
To wrap up the project a bit, I’ve designed and printed the front nose and I’ve also printed the front wing. The car’s electronics are now complete after I replaced the transmitter and receiver modules with two NRF24L01 PA+LNA units with antennas, which work much better and have a much greater range. And although the F1 bodywork and the DRS are still missing, I’ll leave it as finished for the time being because I don’t have time to work on it any further and also because the Stardance deadline is approaching. So that’s it for now, and I hope people have enjoyed the project.
Ships:
I made a F1 radio control car that works with Arduino and electronic components. The entire car and the remote control was build from scratch and with a 3D printer. This proyect teach me that they don’t always turn out the way we want them to the first time round, and I made a lot of mistakes that I had to solve them designing and printing again, or using the tools that I have, but I have learnt a lot in this proyect and , although I couldn’t compleately at all and I know that is not the best radio control car, I am so proud of it....
|
1793346532.4059057
|
1793432932.4059057
|
|
17567
|
TylerOS by @Jtylerneering | Stardance
|
Jtylerneering
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: TylerOS by @Jtylerneering | Stardance
|
1793346533.6275635
|
1793951333.6275635
|
|
55716
|
MomClock by @yadavtejas1947 | Stardance
|
yadavtejas1947
|
0
|
1.31
|
0
|
[]
|
[{"post_id": 57208, "ts": "202 [{"post_id": 57208, "ts": "2026-08-29T09:58:08Z", "hours": 1.3144, "text": "Day-01 (29/08/2026) Today was the first day of building my own alarm clock (MomClock) , as the name suggests this clock is dedicated to my Mom , because she always wakes me up in the morning for school ….. Designing the schematics and PCB wasn’t very difficult , I have started getting familiar with KiCad. Today’s Progress - Schematics and PCB [Done] Please like and comment if you have any suggestions….."}]...
|
Title: MomClock by @yadavtejas1947 | Stardance
De Title: MomClock by @yadavtejas1947 | Stardance
Devlogs:
Day-01 (29/08/2026) Today was the first day of building my own alarm clock (MomClock) , as the name suggests this clock is dedicated to my Mom , because she always wakes me up in the morning for school ….. Designing the schematics and PCB wasn’t very difficult , I have started getting familiar with KiCad. Today’s Progress - Schematics and PCB [Done] Please like and comment if you have any suggestions….....
|
1793346534.5625043
|
1793951334.5625043
|
|
2986
|
Test by @Bai | Stardance
|
Bai
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Test by @Bai | Stardance
|
1793346535.5217342
|
1793951335.5217342
|
|
50283
|
AEGIS by @sudarsh | Stardance
|
sudarsh
|
1
|
8.93
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T20:00:07Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "AEGIS (Advanced Earth Guard & Intelligence System) is a real-time planetary │ defense mission control dashboard that monitors near-Earth asteroids, solar │ weather events, and ISS orbital telemetry. Built with React, Three.js, Express, │ and SQLite, it visualizes an interactive 3D Solar System with custom GLSL │ planetary shaders while actively streaming live data from NASA NeoWs, NASA DONKI, │ NOAA SWPC, and WhereTheISS.at.", "repo": "https://github.com/sudarshandev-llm/aegis-star", "demo": "https://beastsudarsh09.hackclub.app"}]...
|
[{"post_id": 79052, "ts": "202 [{"post_id": 79052, "ts": "2026-10-12T14:34:27Z", "hours": 1.9278, "text": "AEGIS got returned, and that’s fair The Shipwrights returned AEGIS. Their feedback was that it reads as AI-generated end to end, without enough of my own input. I used AI heavily to build the first version, so I can’t really argue with that. So I’m going to remake it properly. This time: I’ll redesign the UI myself, with my own layout, colors and panel designs I’ll go through the code until I can explain how each part works (the NASA polling, the DEFCON logic, the ISS tracker, the Earth shader) I’ll make smaller, more frequent commits so the progress is visible I’ll add an “AI usage” section to the README that says honestly what was AI-assisted and what I wrote Will post updates as I go. To be continued…"}, {"post_id": 75705, "ts": "2026-09-30T19:58:52Z", "hours": 1.3342, "text": "Finally AEGIS is live check out 🎊🎊🎊🎊"}, {"post_id": 72251, "ts": "2026-09-22T15:08:34Z", "hours": 0.4294, "text": "I know I haven’t posted a devlog for a while — and there’s a reason. While working on AEGIS, I ran into an unexpected issue that broke the entire simulation tab and its mappings. A lot of the work had to be rebuilt and remapped from scratch, which completely disrupted the development timeline. Instead of rushing out an update, I decided to fix the foundation properly. Now I’m back on track, rebuilding the simulation system and continuing AEGIS toward its bigger goal: real-time space data, simulations, research tools, and eventually more advanced systems for exploring space technology."}, {"post_id": 71334, "ts": "2026-09-20T17:21:39Z", "hours": 0.3914, "text": "🚀 AEGIS — Development Update Just pushed another major update to AEGIS. I’ve now integrated NASA’s space-data APIs to bring live/near-real-time space data directly into the AEGIS interface — including: ☀️ Solar Activity & CME data ☄️ Near-Earth Object tracking 🛰️ ISS orbital-position data The goal isn’t to simply display numbers on a screen. AEGIS is being built as a foundation for exploring and researching space systems. I’m now focusing on taking it further — turning these real-time data streams into tools that can help us analyze space environments, study orbital behavior, monitor celestial events, and eventually support the design of more advanced devices for space research. This is still an early stage, but the direction is becoming much clearer: From data → to analysis → to research → to real space technology."}, {"post_id": 70682, "ts": "2026-09-19T16:12:29Z", "hours": 0.4678, "text": "I have just made an simulation for Aegis(Advanced Earth-orbit & Geospatial Intelligence System) I have made this 3D space visualization and simulation interface as part of AEGIS. It provides an interactive view of Earth, planetary bodies, orbital paths, asteroids, and space objects in a dynamic environment. Users can track objects, zoom through space, control simulation speed, enable real-time rotation, and switch between different simulation states. The interface is designed like a mission-control environment, combining scientific visualization with a clean futuristic HUD. My focus was on making complex orbital and space data visually understandable while keeping the experience interactive and immersive. This is one of the core visualization components I built for AEGIS."}, {"post_id": 70191, "ts": "2026-09-18T17:40:50Z", "hours": 4.2275, "text": "Designing the AEGIS Frontend 🚀"}]...
|
Title: AEGIS by @sudarsh | Stardance
Devlogs:
Des Title: AEGIS by @sudarsh | Stardance
Devlogs:
Designing the AEGIS Frontend 🚀
I have just made an simulation for Aegis(Advanced Earth-orbit & Geospatial Intelligence System) I have made this 3D space visualization and simulation interface as part of AEGIS. It provides an interactive view of Earth, planetary bodies, orbital paths, asteroids, and space objects in a dynamic environment. Users can track objects, zoom through space, control simulation speed, enable real-time rotation, and switch between different simulation states. The interface is designed like a mission-control environment, combining scientific visualization with a clean futuristic HUD. My focus was on making complex orbital and space data visually understandable while keeping the experience interactive and immersive. This is one of the core visualization components I built for AEGIS.
🚀 AEGIS — Development Update Just pushed another major update to AEGIS. I’ve now integrated NASA’s space-data APIs to bring live/near-real-time space data directly into the AEGIS interface — including: ☀️ Solar Activity & CME data ☄️ Near-Earth Object tracking 🛰️ ISS orbital-position data The goal isn’t to simply display numbers on a screen. AEGIS is being built as a foundation for exploring and researching space systems. I’m now focusing on taking it further — turning these real-time data streams into tools that can help us analyze space environments, study orbital behavior, monitor celestial events, and eventually support the design of more advanced devices for space research. This is still an early stage, but the direction is becoming much clearer: From data → to analysis → to research → to real space technology.
I know I haven’t posted a devlog for a while — and there’s a reason. While working on AEGIS, I ran into an unexpected issue that broke the entire simulation tab and its mappings. A lot of the work had to be rebuilt and remapped from scratch, which completely disrupted the development timeline. Instead of rushing out an update, I decided to fix the foundation properly. Now I’m back on track, rebuilding the simulation system and continuing AEGIS toward its bigger goal: real-time space data, simulations, research tools, and eventually more advanced systems for exploring space technology.
Finally AEGIS is live check out 🎊🎊🎊🎊
AEGIS got returned, and that’s fair The Shipwrights returned AEGIS. Their feedback was that it reads as AI-generated end to end, without enough of my own input. I used AI heavily to build the first version, so I can’t really argue with that. So I’m going to remake it properly. This time: I’ll redesign the UI myself, with my own layout, colors and panel designs I’ll go through the code until I can explain how each part works (the NASA polling, the DEFCON logic, the ISS tracker, the Earth shader) I’ll make smaller, more frequent commits so the progress is visible I’ll add an “AI usage” section to the README that says honestly what was AI-assisted and what I wrote Will post updates as I go. To be continued…
Ships:
AEGIS (Advanced Earth Guard & Intelligence System) is a real-time planetary │ defense mission control dashboard that monitors near-Earth asteroids, solar │ weather events, and ISS orbital telemetry. Built with React, Three.js, Express, │ and SQLite, it visualizes an interactive 3D Solar System with custom GLSL │ planetary shaders while actively streaming live data from NASA NeoWs, NASA DONKI, │ NOAA SWPC, and WhereTheISS.at....
|
1793346536.4417143
|
1793432936.4417143
|
|
55717
|
My first slack bot! by @Anmolgotskills | Stardance
|
Anmolgotskills
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Anmolgotskills | St Title: My first slack bot! by @Anmolgotskills | Stardance...
|
1793346537.7086267
|
1793951337.7086267
|
|
28261
|
My own site! by @amritnag2005 | Stardance
|
amritnag2005
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @amritnag2005 | Stardance
|
1793346538.6471002
|
1793951338.6471002
|
|
28931
|
ploot by @yay | Stardance
|
yay
|
1
|
21.0
|
257
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T04:44:39Z", "hours": 21.0, "multiplier": 12.18, "payout": 257, "blessing": "neutral", "text": "this is ploot, an ai powered planner that helps you allocate time to your tasks. you drag your availability on the calendar, write down your tasks in the rich text editor, then it gives you an editable calendar that you can export to a real calendar app(.ics format)! this was my first time making an app like this, so i used a bit of ai in the debugging process, especially for small things that i didn’t notice. there were a lot of challenges, but some of the especially annoying ones were the models returning errors, having signup errors, and timezone mismatches. what i really like about this is that its actually usable in my daily life :D its not something i make and then leave to rot, and is really useful for my indecisiveness. things to note beforehand: its passwordless and uses magic link login, is very slow in loading events(so pls be patient), and the generated schedules are not saved into a database or anything so once you refresh the page they’re gone. also (this probably wont happen) but you might get ratelimited", "repo": "https://github.com/nxzeh727/ploot", "demo": "https://ploot1.vercel.app"}]...
|
[{"post_id": 74296, "ts": "202 [{"post_id": 74296, "ts": "2026-09-27T04:18:39Z", "hours": 4.8806, "text": "ploot devlog #3 :D i added a modifications section so that you can modify your schedule to how you would want it to be. i also changed the ai models so that it would be better and cleaned up remaining bugs. its almost ready to ship! :D"}, {"post_id": 62279, "ts": "2026-09-05T15:58:02Z", "hours": 6.3167, "text": "devlog #2 :D i fixed the ui :D and also got rid of a bunch of bugs related to scheduling and signup/login i also added a dashboard but theres nothing in it so far there are still some problems though, since the ai doesn’t generate schedules half the time. after this, i mostly plan on adding a modification part for the schedule, a place to save the calendar and check it, and some stuff in the dashboard. :D I’m also planning on upgrading the text place into a proper todo-list thanks for reading :D"}, {"post_id": 42754, "ts": "2026-08-07T17:03:52Z", "hours": 9.8656, "text": "ploot devlog #1: so far, I’ve added a lot of things: the basic funciton(a calendar where you select the times available, a somewhat formatted editor where you can put what you need to do for that day, and an AI schedule generated from these pieces of information). i also created authentication(using maigc link only). initially, i stored the events and resulting schedule in a json, but i changed the inputs and put them into a database, and then converted the resulting schedule into .ics format so you can download it. as of right now, its a bit ugly, but that will be fixed in the future!"}]...
|
Title: ploot by @yay | Stardance
Devlogs:
ploot d Title: ploot by @yay | Stardance
Devlogs:
ploot devlog #1: so far, I’ve added a lot of things: the basic funciton(a calendar where you select the times available, a somewhat formatted editor where you can put what you need to do for that day, and an AI schedule generated from these pieces of information). i also created authentication(using maigc link only). initially, i stored the events and resulting schedule in a json, but i changed the inputs and put them into a database, and then converted the resulting schedule into .ics format so you can download it. as of right now, its a bit ugly, but that will be fixed in the future!
devlog #2 :D i fixed the ui :D and also got rid of a bunch of bugs related to scheduling and signup/login i also added a dashboard but theres nothing in it so far there are still some problems though, since the ai doesn’t generate schedules half the time. after this, i mostly plan on adding a modification part for the schedule, a place to save the calendar and check it, and some stuff in the dashboard. :D I’m also planning on upgrading the text place into a proper todo-list thanks for reading :D
ploot devlog #3 :D i added a modifications section so that you can modify your schedule to how you would want it to be. i also changed the ai models so that it would be better and cleaned up remaining bugs. its almost ready to ship! :D
Ships:
this is ploot, an ai powered planner that helps you allocate time to your tasks. you drag your availability on the calendar, write down your tasks in the rich text editor, then it gives you an editable calendar that you can export to a real calendar app(.ics format)! this was my first time making an app like this, so i used a bit of ai in the debugging process, especially for small things that i didn’t notice. there were a lot of challenges, but some of the especially annoying ones were the models returning errors, having signup errors, and timezone mismatches. what i really like about this is that its actually usable in my daily life :D its not something i make and then leave to rot, and is really useful for my indecisiveness. things to note beforehand: its passwordless and uses magic link login, is very slow in loading events(so pls be patient), and the generated schedules are not saved into a database or anything so once you refresh the page they’re gone. also (this probably wont happen) but you might get ratelimited...
|
1793346539.5513885
|
1793432939.5513885
|
|
55719
|
Trixel by @rushabh69 | Stardance
|
rushabh69
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Trixel by @rushabh69 | Stardance
|
1793346540.7882166
|
1793951340.7882166
|
|
6874
|
Untitled by @Fatima1 | Stardance
|
Fatima1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Fatima1 | Stardance
|
1793346541.6951814
|
1793951341.6951814
|
|
55720
|
My very own WebOS by @egehan | Stardance
|
egehan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @egehan | Stardance
|
1793346542.6184406
|
1793951342.6184406
|
|
3077
|
Calculator by @Michel_angelo | Stardance
|
Michel_angelo
|
0
|
0.31
|
0
|
[]
|
[{"post_id": 5420, "ts": "2026 [{"post_id": 5420, "ts": "2026-06-09T05:42:05Z", "hours": 0.3089, "text": "A basic calculator that will get me my stickers for this program"}]...
|
Title: Calculator by @Michel_angelo | Stardance
D Title: Calculator by @Michel_angelo | Stardance
Devlogs:
A basic calculator that will get me my stickers for this program...
|
1793346543.610549
|
1793951343.610549
|
|
30836
|
calc82: Web Scientific Calculator by @rigel | Star calc82: Web Scientific Calculator by @rigel | Stardance...
|
rigel
|
1
|
120.0
|
2248
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T04:20:09Z", "hours": 120.0, "multiplier": 19.41, "payout": 2248, "blessing": "neutral", "text": "What did you make? calc82: A calculator web-app inspired by the Casio fx-82 series of scientific calculators. These calculators are common in high schools in my country. My project simulates the behaviour of the Casio calculator, while maintaining a good user experience on both desktop and mobile. What was challenging? Creating reliable algebraic (non-linear) input parsing was the most difficult part of the project. This was because it required some difficult array traversal to avoid invalid states - even one mistake would break the whole input. It took a lot of iterations to get to a working input system that passed all my tests. Close contenders for most challenging were the sheer volume of functions I needed to implement, as well as all possible states the calculator can be in. However, the challenge for this was finding time to get around to everything, rather than technical challenge. What are you proud of? I’m most proud of my implementation of the input-to-result pipeline. I was able to incorporate new-to-me concepts such as tokenisers and abstract syntax trees, yet the resulting code is arguably the cleanest part of the program. I’m also proud of the responsive layout, which supports desktop and mobile well, and that the user experience is similar enough to the Casio that my muscle memory carries over. Finally, I’m proud that I managed to finish the project, as it’s the largest software project I’ve ever managed to complete. Demo: https://rigelseven.github.io/calc82/ Source: https://github.com/rigelseven/calc82/", "repo": "https://github.com/rigelseven/calc82", "demo": "https://rigelseven.github.io/calc82/"}]...
|
[{"post_id": 64600, "ts": "202 [{"post_id": 64600, "ts": "2026-09-09T03:36:33Z", "hours": 1.0264, "text": "calc82: Devlog #14 9/09/2026 calc82: because calculators are for everyone Final devlog. It’s done!! This last stretch was writing the readme and publishing everything to Github pages. You can now access it at https://rigelseven.github.io/calc82/ Now for a short reflection calc82 is the largest personal software project I have ever completed. This project taught me a lot about input parsing - specifically, tokenisers and syntax trees - and the importance of keeping a large codebase tidy . Overall, the structure of the project is well laid out. However, there are architectural decisions I made early on that I came to regret later (such as the fact that input is represented as a string, whereas it should probably be a tree). Developing calc82 also showed me that I am capable of putting together such an app from scratch. I’m pleased to have participated in Stardance and be given this opportunity."}, {"post_id": 64551, "ts": "2026-09-09T01:44:48Z", "hours": 8.6039, "text": "calc82: Devlog #13 9/09/2026 calc82: because calculators are for everyone This devlog follows the addition of help and about menus to my calculator, as well as bundling into one js file. 🌟 New functionality summary Help menu Lookup function by calculator button (reuses key bind selector logic) Q&A About page About the calculator Contribute Legal License All JS files are bundled into one file Service worker makes app available offline 📦 Bundling and service worker I chose to use esbuild for bundling. This allows the many JS files to be condensed down into one file, reducing the number of requests that need to be made. This build system is much simpler than other options such as node.js. I also added a simple service worker that caches all requests locally. This makes the calculator available offline. ⚖️ Licensing & Legal I chose GPLv3 for this project as it is an end-user product. Essentially, this means others are free to modify and distribute the project as long as they make the source available. I also added legal disclaimers to the about page of the calculator. 📈 Next steps Write the readme, publicise the repo, and host! Thanks for reading :)"}, {"post_id": 63421, "ts": "2026-09-07T07:56:19Z", "hours": 9.6403, "text": "calc82: Devlog #12 7/09/2026 calc82: because calculators are for everyone This devlog follows the addition of customisable and accessible keyboard bindings to my calculator. 🌟 New functionality summary Settings menu Switches between sidebar and popup dependent on screen width Key rebinding Flow of choosing button, then pressing key to rebind Stores in local storage Help hotkey Shows all currently bound keys. Key hint consideration The default keyboard map has been implemented as a const dictionary for a while now, allowing lookup of buttons from keyboard keys. This was extended with a user dictionary that can be dynamically updated. However, generating the help hotkey hints needed to go in the opposite direction of the dictionary. The naive approach of iterating through values to find a key for each would perform poorly with O(n^2). Instead, we precalculate a reversed dictionary to lookup keyboard keys from each button. This precalculation is O(n), and setting the keys is also O(n), resulting in O(n) time overall. 📈 Next steps Development Brief manual for each calculator function (considering reusing the on click functionality from key mapper) ) Info menubar button with author & project information, and disclaimers Fullscreen button for mobile devices Preparation for shipping Webpack, choose a license, write readme, publicise repo, host. Thanks for reading :)"}, {"post_id": 62611, "ts": "2026-09-06T02:35:54Z", "hours": 8.5919, "text": "calc82: Devlog #11 6/09/2026 calc82: because calculators are for everyone This devlog follows the addition of a few final features to my calculator, and then my worst nightmare, frontend UI 😧 🌟 New functionality summary Prime factorisation using Pollard’s rho algorithm Engineering notation button Degree/minute/second output button CSS styling!! + menu bar buttons Fixed some input quirks Dark and light mode (based on system default) with manual toggle 🐚 Pollards rho algorithm for prime factorisation Prime factorisation or integer factorisation is the decomposition of a positive integer into a product of integers. The simplest way to implement this is trial division , which is straightforward but has O(√n) time complexity. I thought this would be too slow, so I decided to implement Pollard’s rho algorithm. This has a nicer complexity of O(√p) where p is the smallest prime factor of the number. However, further observation showed that that the Casio calculator probably doesn’t do this - for numbers without easy factors, it just doesn’t bother. Despite this, I’ve already implemented the algorithm, so I’m not going to remove functionality for the sake of exactly replicating the calculator’s behaviour. 🎨 CSS and styling My goal with the styling was to make the calculator as similar across browsers as possible. I bundled the Inter font (best font) into the program and removed browser-specific button styling. Implementing the CSS styling was mostly painless. I opted for a simple design with a menubar that adapts to horizontal or vertical depending on the window’s aspect ratio for the web app functionality. Additionally the css uses the system theme to automatically choose light or dark mode. 📈 Next steps This project is nearly finished - should only be one or two devlogs left until I ship. Here’s what I have left to do: Development Keybind show and edit Brief manual for each calculator function Info menubar button with author & project information, and disclaimers: that I am not affiliated with casio that the calculator is in a beta state and not guaranteed to be correct for all inputs Fullscreen button for mobile devices Preparation for shipping Webpack or similar Choose a license and publicise repo Write a readme Host on github pages (?) Hope that I did enough to not receive legal action from casio 🙃 Thanks for reading :)"}, {"post_id": 60028, "ts": "2026-09-02T04:16:18Z", "hours": 9.8953, "text": "calc82: Devlog #10 2/09/2026 calc82: because calculators are for everyone This devlog follows the addition of a lot of small features to my calculator that were last on my to-do list, as well as a slight shift in scope. 🌟 New functionality summary Colon operator for multiple operations Saving variables and settings to LocalStorage Clearing this memory Polar and rectangular coordinates (finally!) Forward delete key (keyboard only) Scrolling screen with a nicer cursor! Colon operator This is an operator I’ve never used on my calculator, but its quite powerful. you can type Ans+1:Ans*2:Ans^2 and it will calculate the first expression, then the second, and so on until it loops back to the start. ➡️ Forward delete Although this functionality is not part of the original calculator, it makes it much more pleasant to use on a computer keyboard. This was implemented as a hidden button. Scrolling Scrolling was surprisingly easy to implement! The browser handles all of the hard work, and all I had to do was set the right CSS tags. Granted, with my CSS experience, this was still difficult, but I made it work in the end. 📈 Next steps I have decided to shift the current scope of the project (before shipping) to just be implementing the main compute mode . This means I will not need to do STAT, VERIFY or LINEIO mode. This is for three reasons: With my semester starting, I will not have as much time to work on this project before the deadline I have very little experience with using these other modes I want to focus my time on the user experience. With this shift in scope, the calculator part of the project is all but done - I only have three buttons remaining. (I had to push this devlog out before 10 hours, which is why they’re not done). Then, I can focus on adding the surrounding UI and UX, which should make it actually possible for other people to use my project. Thanks for reading :)"}, {"post_id": 58608, "ts": "2026-08-31T02:44:52Z", "hours": 8.6944, "text": "calc82: Devlog #9 31/08/2026 calc82: because calculators are for everyone This devlog follows the addition of menus and the status bar to my calculator. 🌟 New functionality summary Extensible menu system that allows for easy creation of paginated and nested menus Status bar with indicators that change based on the current calculator state M+ and M- special variables Mixed fraction display 📋 Menu system The menu system uses a dictionary to encode the menu pages and their entries, making it easy to add new menus. However, I couldn’t find a way to easily encode functions and arguments in this structure, so the actual actions are handled by a big switch statement. When the menu is active, most buttons have no action and the input/output display is hidden. 🧀 Status bar The status bar consists of a row of elements with adjustable opacity (to represent their active state). It is handled by a class which allows items to be toggled with a single method call, meaning it can retroactively be integrated into other components. The original calculator has some menu elements that can never be activated - for example, there is a complex mode indicator, but the calculator cannot show complex numbers. I omitted these on calc82, as they took up unnecessary space. 📈 Next steps The project is almost nearing completion :) I made complete list of every feature missing from the calculator (too long to post here). It should should get shorter every devlog from now! Hopefully I can finally ship this project in the next couple of weeks. Thanks for reading :)"}, {"post_id": 45453, "ts": "2026-08-11T22:22:45Z", "hours": 10.3792, "text": "calc82: Devlog #8 12/08/2026 calc82: because calculators are for everyone Sorry its been a while since the last devlog, I’ve had this one sitting for a while and not had the chance to finish and post it. This devlog follows the improvement of the user interface to my calculator, as well as the addition of variables . 🌟 New functionality summary Add keyboard mappings for buttons Variables - assign and recall Navigate through history Recall history and edit it. 🦋 Modifier keys It was difficult porting the modifier (shift/alpha) keys to keyboard because Shift is used to type symbols such as + and *, and there is also a Shift key on the calculator… My solution was making tapping shift without any other input to toggle the calculator shift modifier, and combining it with another key to not toggle it. 🗒️ Notes Use of the calculator I’ve actually started using the calculator in class, and it’s been faithful to the original so far (for implemented functionality). I still don’t really trust it though and want to run it through some formalised tests before shipping. Keyboard mappings So far, I have been hardcoding keyboard mappings based on what feels natural to me. However, it would probably be better to have user-editable mappings for other people to customise. 📈 Next steps Immediate: M+ and M- special variable Variable and history persistence in the browser Implement polar/rectangualr conversion Medium: Add menu system and settings Add other modes (STAT, VERIFY) Create a test suite to ensure there is no unwanted behaviour Long-term: Tidy up visuals Ship :)"}, {"post_id": 32188, "ts": "2026-07-21T05:53:53Z", "hours": 9.9386, "text": "calc82: Devlog #7 21/07/2026 calc82: because calculators are for everyone This devlog follows the introduction of an actual user interface to my calculator. 🌟 New functionality summary Grid of calculator buttons Different button output when modifiers pressed Navigation buttons work Calculator resembles a real calculator 👇 Button handling The calculator needed buttons resembling that of the Casio to fulfil my purpose. Buttons are dynamically built from an array, which defines their labels and actions. This allows easy changes. For most buttons, the area surrounding the button also acts as a clickable area for better touch input. However, I didn’t find an easy way to do this for the navigation buttons (which are positioned off the grid). 🎨 CSS CSS Grid allows a 2D layout system based on rows and columns. It has been supported by all major browsers since October 2017. CSS Grid was used, as it allows consistent positioning across browsers. In addition, relative units were used to prevent resizing the calculator from affecting it. This should make it easier to make dynamic sizing in the future. 🗒️ Notes Accessibility <button> s are preferred over clickable <div> s because they work with screen readers and legacy browsers . However, I also made the surrounding elements clickable for a better touch experience. Also, keyboard input will make use significantly easier for computer users. Aesthetics The CSS applied so far is purely functional. In the future, I will improve the aesthetics of the calculator through CSS - but for now, this barebones look makes development easier and more focused. 📈 Next steps The todo list was getting too empty, so it has been updated with new tasks Immediate: Add remaining functions Add keyboard shortcuts Medium: Add menu system and settings Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion Add other modes (STAT, VERIFY) Add Long-term: Create a test suite to ensure there is no unwanted behaviour Ship :)"}, {"post_id": 30511, "ts": "2026-07-18T04:36:43Z", "hours": 9.605, "text": "calc82: Devlog #6 18/07/2026 calc82: because calculators are for everyone This devlog follows the further development of algebraic I/O to my calculator, including turning this into an actual result. 🌟 New functionality summary Input and output formatting through KaTeX Square root, arbitrary root, mixed fraction, and absolute values Tokeniser now directly reads input tokens Errors now move the cursor to the position where it occurred 🌊 New program flow inputHandler -> [input tokens] -> tokeniser -> [calculator tokens] -> parser -> AST -> evaluator -> result This: improves speed (compared to parsing text) allows cursor to be moved to error location since we never flatten to text You might notice I have two sets of tokens. They are similar, but input tokens deal with digits and combined symbols ( sin( ), and calculator tokens are whole numbers and separated symbols. 🗒️ Notes Avoiding the lazy route My first approach was turning the input tokens into a string, which my tokeniser already knew how to deal with. However, this added much processing overhead and made it harder to find out the position at which errors occurred. Spending the time to implement the token conversion made this step much easier Misplaced math errors When implementing error handling, I passed down the original position of each token in the input token array down to each step of the calculation process. However, because my evaluator is recursive, it would constantly update the error position to the latest token, meaning the errors were always placed at the end. This was an easy fix in the end - but hard to spot! 📈 Next steps Immediate: Buttons input Add remaining functions (once buttons are added can be done) Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)"}, {"post_id": 29405, "ts": "2026-07-16T10:32:06Z", "hours": 9.6708, "text": "calc82: Devlog #5 16/07/2026 calc82: because calculators are for everyone This devlog mainly follows the addition of algebraic I/O to my calculator. This is just a check-in since I was getting close to 10 hours since the last devlog - I still have some work to do on this aspect before I move on. 🌟 New functionality summary Input and output formatting through KaTeX Fractions and powers formatted correctly in the input Ability to intuitively traverse the input with arrow keys ⚖️ Algebraic IO with KaTeX I decided on KaTeX because it is both fast (no reflow!) and does not rely on dependencies . KaTeX is a math formatting library that uses LaTeX commands to create beautiful equations from code. For example, \\frac{2^{\\frac{3}{4}}}{4\\sin(30)}\\times 2\\pi turns into the attached image. Input is currently captured directly from the keyboard to build a 1D array of tokens. The tokens are then converted into KaTeX formatting for algebraic display. In the future, there will also be buttons onscreen as an alternative. Fractions and powers Fractions and powers cannot be represented as a single token. Rather, fractions have a beginning, middle and end, and powers have a beginning and end. The program traverses the array to decide where to put them (and take them out for deletion). 🗒️ Notes The cursor It is surprisingly difficult to make a vertical bar to act as a cursor in KaTeX, without affecting the spacing of the rest of the expression. For now, I am using a \\clap{\\rule{0.1em}{0.5em}} for the cursor, but I am looking to replace this with custom CSS in the future. Replicating exact behaviour? The fx-82 has some interesting behaviour wherein an empty power is not allowed to exist directly after another power. I am unsure whether I should replicate this - but for now, I am leaving it out. Dealing with broken LaTeX I have been able to get the display pretty bulletproof when it comes to not producing broken LaTeX. However, I’m sure there’s something I haven’t run into in debugging! I want to have this be dealt with gracefully rather than blowing up in the user’s face. 📈 Next steps Immediate: Implement mixed fractions, roots, and Abs to algebraic display Make the input token array able to be parsed into the AST to be calculated Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)"}, {"post_id": 27701, "ts": "2026-07-13T14:20:52Z", "hours": 7.1211, "text": "calc82: Devlog #4 14/07/2026 calc82: because calculators are for everyone This devlog mainly follows the addition of fractional I/O to my calculator. 🌟 New functionality summary Fractional input, including fractions Computation of fractions - add/sub,div/mult,power,root other operations convert the fraction to a decimal Fractional output (temporary UI) LCM/GCD separate execute and fraction/decimal converting buttons 🔢 fractional io :) I defined a separate fraction data type: it’s like a decimal, but with a numerator and denominator, and optionally a whole component: for example, 1 and 1/3, or 4/3. Using fractions means that numbers can be represented more naturally and precisely. I.e. 1/7 instead of 0.142857143 🧮 Fractional calculation Additionally calculations can be made more precise. For example (1/7) * (2/3) can be directly computed by multiplying the numerators and denominators. My implementation attempts to convert user input and the products of divisions into fractions wherever possible in order to chase this precision. 🗒️ Notes Web design is not my thing I realised the importance of UI and UX (user experience) by looking at other projects on Stardance. As of the current iteration, this project lacks this a bit.. But I will give it a shot My next developments will begin to focus more on this - starting with the algebraic input, and eventually moving onto the CSS and design aspects. I am also considering whether I should use a Javascript framework. 📈 Next steps Immediate: Create algebraic display functionality Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)"}, {"post_id": 25807, "ts": "2026-07-10T08:35:45Z", "hours": 6.5419, "text": "calc82: Devlog #3 10/07/2026 calc82: because calculators are for everyone Oh dear, looks like I lost 4 hours of counted time in the last devlog… let’s try to make this one a bit shorter! This devlog follows the implementation of the other inline functions of the calculator: 🌟 New functionality summary inverse and hyperbolic trig arbitrary roots absolute value percent random numbers: Ran and RanInt scientific notation: *10^x / E combinatorics: nPr and nCr variables (not yet adjustable) 📋 Implementation details Implementing most of this functionality followed the same general steps: identify implement test. As I undertook this process. other dependent requirements popped up - such as the implementation of multivariable functions , which in turn required the expansion of the tokeniser and parser. Also, I implemented degrees, radians, and gradians modes into the calculator, and the associated functions (as postfix expressions - e.g. sin(30d) for degrees) . 🗄️ decimal.js changes Finally, I applied some further changes to decimal.js.: Rounding now depends on the closeness of the output to a known value, rather than the input, reducing unnecessary rounding Near-decimal values close to 0, 0.25, 0.5, 0.75 and 1 are now caught. 🗒️ Notes: Remembering that Javascript is weird NaN === NaN is FALSE! Spent a good 10 minutes figuring this one out. The solution was to use isNaN() . Fixing negative-base powers: (-8)^(1/3) should equal 2 but returns NaN Fixed by taking the denominator from the output of a decimal.js toFraction() function, which attempts to create a rational fraction. This overcomes the tiny precision loss and evaluates the function correctly 📈 Next steps Immediate: Add fractional I/O Implement polar/rectangualr conversion Medium: Create algebraic display functionality Multi-line calculation (Ans) and setting variables Long-term: Build UI Ship :) This has been a bit of a shorter devlog. But I’m still proud of what I achieved! Thanks so much for reading. If you have any suggestions, please leave me a comment. Take care"}, {"post_id": 25217, "ts": "2026-07-09T10:31:56Z", "hours": 14.0967, "text": "calc82: Devlog #2 08/07/2026 calc82: because calculators are for everyone This devlog follows the handling of nasty floating point errors in my web calculator - inspired by and designed to work with Casio’s fx-82au. I realised that relying purely on the Javascript math system was unsuitable for a scientific calculator that works with decimal numbers. This is due to binary floating point not translating well to decimal. 0.1+0.2=0.30000000000000004 >:( I researched and considered a few approaches. 🥧 Symbolic simplifier? The idea behind this is to perform algebra and avoid evaluating constants and functions to values until strictly necessary. However, the scope of this seemed massive, and I did not observe this behaviour in the Casio. 🔟 Decimal arithmetic Instead, I stumbled upon the fact that decimal arithmetic can be implemented in a computer. While IEEE floats use binary representation, there is no reason we cannot use decimals internally, avoiding errors that arise from conversion. Decimal floats can be stored by: Sign: +/- Mantissa: the number itself, in my case an array of digits Exponent: what power of 10 the number should be multiplied by. I started implementation, made decent progress, but found out that I was re-doing work that was already done by other people. 🗄️ Decimal.js I found the decimal.js library after researching how to handle decimal addition. Implementing this quickly fixed my floating point errors, but did not fix trig approximation. 👀 Observing the calculator I observed some of the behaviour of the real calculator to work out how it functions. Handles small-angle approximation based on a threshold Drops precision as the trig function argument value increases Appears to use a 15-digit mantissa Refuses to evaluate trig functions with argument above a certain limit I tried my best to implement the behaviour I observed, some of which required editing the code of the decimal.js library. 📝 Editing decimal.js The decimal.js library uses more than the set precision for some internal calculations. However, arithmetic with pi is otherwise only the set precision, causing drift. My fix for this was to adjust the internal pi value to match the mantissa size of the real calculator. Troubles with the library When given a less accurate value for pi (in line with that of the real calculator) sine quadrant is incorrectly calculated. I found that the isOdd function is flawed! function isOdd(n) { return n.d[n.d.length - 1] & 1; } I replaced it with one that works for my use case (if less efficient): function isOdd(n) { return n.mod(2).eq(1); } I need to see if this is just due to my low precision pi, or an actual problem in the library, in the future. But for now my issue is fixed. I also found an error in the cosine function: if (x.isZero()) return x needed to be changed to if (x.isZero()) return new Ctor(1) . Again, I’m going to have to look into this more before submitting a pr or anything, since decimal.js is not made for such an imprecise pi. 🗒️ Notes Deviations There are still small deviations between my calculator and the real one at really, really large trig angles. One idea to reduce error could be optimising the order of operations in the AST to prevent dropping precision unnecessarily. I might explore this later However, I want to press on with other features, instead of tiny inaccuracies that would never show up in real-world use. I have slightly rearranged the to-do list below. 📈 Next steps Immediate: Implement the other calculator buttons and functions Add fractional I/O Medium: Create algebraic display functionality Multi-line calculation (Ans) and variables Long-term: Build UI Ship :) Thanks so much for reading! If you have any suggestions, please leave me a comment. Until next time"}, {"post_id": 23363, "ts": "2026-07-06T09:05:57Z", "hours": 6.4844, "text": "calc82: Project Introduction and Devlog #1 calc82: because calculators are for everyone The aim of this project is to create a free, software-based browser calculator which mimics the behaviour of the Casio fx-82au. This is the most common calculator in high schools in my country. 🔥 Motivation My motivation for this project is the following: calculators are cool i dont always have my calculator on me (most notably) not everyone has access to a scientific calculator 🎯 Approach I will take a black-box reverse engineering approach . This means analysing the inputs and outputs of the calculator and attempting to replicate the behaviour without looking at the underlying code. This along with avoiding patents and copyright should keep the project okay legally. 📈 Goals and scope The final goal for the project is to create a fully functional calculator (obviously) which works on most types of devices. This means both touch and keyboard input, resolution scaling, wide browser support… I have moderate experience with creating web apps. and a lot of experience using this calculator. so this project should be pretty fun :) Devlog #1 06/07/2026 This devlog covers the initial development of the parts of the calculator that do math. Essentially turning an input expression into an output. I chose a high-level structure similar to that used by programming language syntax analysers. That is: Input -> Tokeniser -> Parser -> Evaluator -> Output 🪙 Tokeniser yes, with an s >:( The tokeniser converts the input into a list of tokens (think individual pieces of the expression). It does this by scanning the input string and identifying what each character corresponds to. The tokeniser only knows what each symbol is , not what it does . Then it passes the token array to the… 🌲 Parser The parser converts the token array into an Abstract Syntax Tree (AST). Essentially this is a tree which shows how the expressions should be evaluated in order to produce the desired output. This properly lets me implement order of operations. The exact type of parser I am using is a recursive descent parser . It attempts to match the tokens with known symbols recursively, meaning i can rely on the call stack :) The order of operations can be defined by the order of function calls within the parser. 🧮 Evaluator The evaluator’s job is easy: it just traverses the tree made by the parser and runs the necessary operations. Because all of the hard work regarding order of operations has been done by the other components, implementing the evaluator was really easy. Its also recursive. your call stack is gonna love me for this 🗒️ Notes Why not eval? It’s true that JavaScript has a perfectly good expression parser, which I could have used. However, its behaviour is more suited to a programming language than a calculator. For example, 4(2+3) should implicitly multiply , but will instead complain TypeError: 4 is not a function . Writing my own system gives me more flexibility to make the calculator how I want. Floating point precision Because it uses Javascript’s internal math engine, i have floating-point problems. This results in expressions like sin(2pi) = -2.44929360e-16 I will likely fix this by using a math library, or a novel approach. Last-minute catch I was just writing an example for this devlog when I found that .3ln(4)*5^2 raised an error. In fact, ANYTHING * or / followed by x^n would error - but other operators wouldn’t. This was a quick fix, but I’m glad I caught it! 📈 Next steps Immediate: Fix math imprecision Add fractional I/O Medium: Create algebraic display functionality Multi-line calculation (Ans) and variables Long-term: Make the calculator functionally equivalent to the fx-82 Build UI Ship :) Thanks so much for reading! If you have any suggestions, please leave me a comment"}]...
|
Title: calc82: Web Scientific Calculator by @rigel Title: calc82: Web Scientific Calculator by @rigel | Stardance
Devlogs:
calc82: Project Introduction and Devlog #1 calc82: because calculators are for everyone The aim of this project is to create a free, software-based browser calculator which mimics the behaviour of the Casio fx-82au. This is the most common calculator in high schools in my country. 🔥 Motivation My motivation for this project is the following: calculators are cool i dont always have my calculator on me (most notably) not everyone has access to a scientific calculator 🎯 Approach I will take a black-box reverse engineering approach . This means analysing the inputs and outputs of the calculator and attempting to replicate the behaviour without looking at the underlying code. This along with avoiding patents and copyright should keep the project okay legally. 📈 Goals and scope The final goal for the project is to create a fully functional calculator (obviously) which works on most types of devices. This means both touch and keyboard input, resolution scaling, wide browser support… I have moderate experience with creating web apps. and a lot of experience using this calculator. so this project should be pretty fun :) Devlog #1 06/07/2026 This devlog covers the initial development of the parts of the calculator that do math. Essentially turning an input expression into an output. I chose a high-level structure similar to that used by programming language syntax analysers. That is: Input -> Tokeniser -> Parser -> Evaluator -> Output 🪙 Tokeniser yes, with an s >:( The tokeniser converts the input into a list of tokens (think individual pieces of the expression). It does this by scanning the input string and identifying what each character corresponds to. The tokeniser only knows what each symbol is , not what it does . Then it passes the token array to the… 🌲 Parser The parser converts the token array into an Abstract Syntax Tree (AST). Essentially this is a tree which shows how the expressions should be evaluated in order to produce the desired output. This properly lets me implement order of operations. The exact type of parser I am using is a recursive descent parser . It attempts to match the tokens with known symbols recursively, meaning i can rely on the call stack :) The order of operations can be defined by the order of function calls within the parser. 🧮 Evaluator The evaluator’s job is easy: it just traverses the tree made by the parser and runs the necessary operations. Because all of the hard work regarding order of operations has been done by the other components, implementing the evaluator was really easy. Its also recursive. your call stack is gonna love me for this 🗒️ Notes Why not eval? It’s true that JavaScript has a perfectly good expression parser, which I could have used. However, its behaviour is more suited to a programming language than a calculator. For example, 4(2+3) should implicitly multiply , but will instead complain TypeError: 4 is not a function . Writing my own system gives me more flexibility to make the calculator how I want. Floating point precision Because it uses Javascript’s internal math engine, i have floating-point problems. This results in expressions like sin(2pi) = -2.44929360e-16 I will likely fix this by using a math library, or a novel approach. Last-minute catch I was just writing an example for this devlog when I found that .3ln(4)*5^2 raised an error. In fact, ANYTHING * or / followed by x^n would error - but other operators wouldn’t. This was a quick fix, but I’m glad I caught it! 📈 Next steps Immediate: Fix math imprecision Add fractional I/O Medium: Create algebraic display functionality Multi-line calculation (Ans) and variables Long-term: Make the calculator functionally equivalent to the fx-82 Build UI Ship :) Thanks so much for reading! If you have any suggestions, please leave me a comment
calc82: Devlog #2 08/07/2026 calc82: because calculators are for everyone This devlog follows the handling of nasty floating point errors in my web calculator - inspired by and designed to work with Casio’s fx-82au. I realised that relying purely on the Javascript math system was unsuitable for a scientific calculator that works with decimal numbers. This is due to binary floating point not translating well to decimal. 0.1+0.2=0.30000000000000004 >:( I researched and considered a few approaches. 🥧 Symbolic simplifier? The idea behind this is to perform algebra and avoid evaluating constants and functions to values until strictly necessary. However, the scope of this seemed massive, and I did not observe this behaviour in the Casio. 🔟 Decimal arithmetic Instead, I stumbled upon the fact that decimal arithmetic can be implemented in a computer. While IEEE floats use binary representation, there is no reason we cannot use decimals internally, avoiding errors that arise from conversion. Decimal floats can be stored by: Sign: +/- Mantissa: the number itself, in my case an array of digits Exponent: what power of 10 the number should be multiplied by. I started implementation, made decent progress, but found out that I was re-doing work that was already done by other people. 🗄️ Decimal.js I found the decimal.js library after researching how to handle decimal addition. Implementing this quickly fixed my floating point errors, but did not fix trig approximation. 👀 Observing the calculator I observed some of the behaviour of the real calculator to work out how it functions. Handles small-angle approximation based on a threshold Drops precision as the trig function argument value increases Appears to use a 15-digit mantissa Refuses to evaluate trig functions with argument above a certain limit I tried my best to implement the behaviour I observed, some of which required editing the code of the decimal.js library. 📝 Editing decimal.js The decimal.js library uses more than the set precision for some internal calculations. However, arithmetic with pi is otherwise only the set precision, causing drift. My fix for this was to adjust the internal pi value to match the mantissa size of the real calculator. Troubles with the library When given a less accurate value for pi (in line with that of the real calculator) sine quadrant is incorrectly calculated. I found that the isOdd function is flawed! function isOdd(n) { return n.d[n.d.length - 1] & 1; } I replaced it with one that works for my use case (if less efficient): function isOdd(n) { return n.mod(2).eq(1); } I need to see if this is just due to my low precision pi, or an actual problem in the library, in the future. But for now my issue is fixed. I also found an error in the cosine function: if (x.isZero()) return x needed to be changed to if (x.isZero()) return new Ctor(1) . Again, I’m going to have to look into this more before submitting a pr or anything, since decimal.js is not made for such an imprecise pi. 🗒️ Notes Deviations There are still small deviations between my calculator and the real one at really, really large trig angles. One idea to reduce error could be optimising the order of operations in the AST to prevent dropping precision unnecessarily. I might explore this later However, I want to press on with other features, instead of tiny inaccuracies that would never show up in real-world use. I have slightly rearranged the to-do list below. 📈 Next steps Immediate: Implement the other calculator buttons and functions Add fractional I/O Medium: Create algebraic display functionality Multi-line calculation (Ans) and variables Long-term: Build UI Ship :) Thanks so much for reading! If you have any suggestions, please leave me a comment. Until next time
calc82: Devlog #3 10/07/2026 calc82: because calculators are for everyone Oh dear, looks like I lost 4 hours of counted time in the last devlog… let’s try to make this one a bit shorter! This devlog follows the implementation of the other inline functions of the calculator: 🌟 New functionality summary inverse and hyperbolic trig arbitrary roots absolute value percent random numbers: Ran and RanInt scientific notation: *10^x / E combinatorics: nPr and nCr variables (not yet adjustable) 📋 Implementation details Implementing most of this functionality followed the same general steps: identify implement test. As I undertook this process. other dependent requirements popped up - such as the implementation of multivariable functions , which in turn required the expansion of the tokeniser and parser. Also, I implemented degrees, radians, and gradians modes into the calculator, and the associated functions (as postfix expressions - e.g. sin(30d) for degrees) . 🗄️ decimal.js changes Finally, I applied some further changes to decimal.js.: Rounding now depends on the closeness of the output to a known value, rather than the input, reducing unnecessary rounding Near-decimal values close to 0, 0.25, 0.5, 0.75 and 1 are now caught. 🗒️ Notes: Remembering that Javascript is weird NaN === NaN is FALSE! Spent a good 10 minutes figuring this one out. The solution was to use isNaN() . Fixing negative-base powers: (-8)^(1/3) should equal 2 but returns NaN Fixed by taking the denominator from the output of a decimal.js toFraction() function, which attempts to create a rational fraction. This overcomes the tiny precision loss and evaluates the function correctly 📈 Next steps Immediate: Add fractional I/O Implement polar/rectangualr conversion Medium: Create algebraic display functionality Multi-line calculation (Ans) and setting variables Long-term: Build UI Ship :) This has been a bit of a shorter devlog. But I’m still proud of what I achieved! Thanks so much for reading. If you have any suggestions, please leave me a comment. Take care
calc82: Devlog #4 14/07/2026 calc82: because calculators are for everyone This devlog mainly follows the addition of fractional I/O to my calculator. 🌟 New functionality summary Fractional input, including fractions Computation of fractions - add/sub,div/mult,power,root other operations convert the fraction to a decimal Fractional output (temporary UI) LCM/GCD separate execute and fraction/decimal converting buttons 🔢 fractional io :) I defined a separate fraction data type: it’s like a decimal, but with a numerator and denominator, and optionally a whole component: for example, 1 and 1/3, or 4/3. Using fractions means that numbers can be represented more naturally and precisely. I.e. 1/7 instead of 0.142857143 🧮 Fractional calculation Additionally calculations can be made more precise. For example (1/7) * (2/3) can be directly computed by multiplying the numerators and denominators. My implementation attempts to convert user input and the products of divisions into fractions wherever possible in order to chase this precision. 🗒️ Notes Web design is not my thing I realised the importance of UI and UX (user experience) by looking at other projects on Stardance. As of the current iteration, this project lacks this a bit.. But I will give it a shot My next developments will begin to focus more on this - starting with the algebraic input, and eventually moving onto the CSS and design aspects. I am also considering whether I should use a Javascript framework. 📈 Next steps Immediate: Create algebraic display functionality Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)
calc82: Devlog #5 16/07/2026 calc82: because calculators are for everyone This devlog mainly follows the addition of algebraic I/O to my calculator. This is just a check-in since I was getting close to 10 hours since the last devlog - I still have some work to do on this aspect before I move on. 🌟 New functionality summary Input and output formatting through KaTeX Fractions and powers formatted correctly in the input Ability to intuitively traverse the input with arrow keys ⚖️ Algebraic IO with KaTeX I decided on KaTeX because it is both fast (no reflow!) and does not rely on dependencies . KaTeX is a math formatting library that uses LaTeX commands to create beautiful equations from code. For example, \frac{2^{\frac{3}{4}}}{4\sin(30)}\times 2\pi turns into the attached image. Input is currently captured directly from the keyboard to build a 1D array of tokens. The tokens are then converted into KaTeX formatting for algebraic display. In the future, there will also be buttons onscreen as an alternative. Fractions and powers Fractions and powers cannot be represented as a single token. Rather, fractions have a beginning, middle and end, and powers have a beginning and end. The program traverses the array to decide where to put them (and take them out for deletion). 🗒️ Notes The cursor It is surprisingly difficult to make a vertical bar to act as a cursor in KaTeX, without affecting the spacing of the rest of the expression. For now, I am using a \clap{\rule{0.1em}{0.5em}} for the cursor, but I am looking to replace this with custom CSS in the future. Replicating exact behaviour? The fx-82 has some interesting behaviour wherein an empty power is not allowed to exist directly after another power. I am unsure whether I should replicate this - but for now, I am leaving it out. Dealing with broken LaTeX I have been able to get the display pretty bulletproof when it comes to not producing broken LaTeX. However, I’m sure there’s something I haven’t run into in debugging! I want to have this be dealt with gracefully rather than blowing up in the user’s face. 📈 Next steps Immediate: Implement mixed fractions, roots, and Abs to algebraic display Make the input token array able to be parsed into the AST to be calculated Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)
calc82: Devlog #6 18/07/2026 calc82: because calculators are for everyone This devlog follows the further development of algebraic I/O to my calculator, including turning this into an actual result. 🌟 New functionality summary Input and output formatting through KaTeX Square root, arbitrary root, mixed fraction, and absolute values Tokeniser now directly reads input tokens Errors now move the cursor to the position where it occurred 🌊 New program flow inputHandler -> [input tokens] -> tokeniser -> [calculator tokens] -> parser -> AST -> evaluator -> result This: improves speed (compared to parsing text) allows cursor to be moved to error location since we never flatten to text You might notice I have two sets of tokens. They are similar, but input tokens deal with digits and combined symbols ( sin( ), and calculator tokens are whole numbers and separated symbols. 🗒️ Notes Avoiding the lazy route My first approach was turning the input tokens into a string, which my tokeniser already knew how to deal with. However, this added much processing overhead and made it harder to find out the position at which errors occurred. Spending the time to implement the token conversion made this step much easier Misplaced math errors When implementing error handling, I passed down the original position of each token in the input token array down to each step of the calculation process. However, because my evaluator is recursive, it would constantly update the error position to the latest token, meaning the errors were always placed at the end. This was an easy fix in the end - but hard to spot! 📈 Next steps Immediate: Buttons input Add remaining functions (once buttons are added can be done) Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)
calc82: Devlog #7 21/07/2026 calc82: because calculators are for everyone This devlog follows the introduction of an actual user interface to my calculator. 🌟 New functionality summary Grid of calculator buttons Different button output when modifiers pressed Navigation buttons work Calculator resembles a real calculator 👇 Button handling The calculator needed buttons resembling that of the Casio to fulfil my purpose. Buttons are dynamically built from an array, which defines their labels and actions. This allows easy changes. For most buttons, the area surrounding the button also acts as a clickable area for better touch input. However, I didn’t find an easy way to do this for the navigation buttons (which are positioned off the grid). 🎨 CSS CSS Grid allows a 2D layout system based on rows and columns. It has been supported by all major browsers since October 2017. CSS Grid was used, as it allows consistent positioning across browsers. In addition, relative units were used to prevent resizing the calculator from affecting it. This should make it easier to make dynamic sizing in the future. 🗒️ Notes Accessibility <button> s are preferred over clickable <div> s because they work with screen readers and legacy browsers . However, I also made the surrounding elements clickable for a better touch experience. Also, keyboard input will make use significantly easier for computer users. Aesthetics The CSS applied so far is purely functional. In the future, I will improve the aesthetics of the calculator through CSS - but for now, this barebones look makes development easier and more focused. 📈 Next steps The todo list was getting too empty, so it has been updated with new tasks Immediate: Add remaining functions Add keyboard shortcuts Medium: Add menu system and settings Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion Add other modes (STAT, VERIFY) Add Long-term: Create a test suite to ensure there is no unwanted behaviour Ship :)
calc82: Devlog #8 12/08/2026 calc82: because calculators are for everyone Sorry its been a while since the last devlog, I’ve had this one sitting for a while and not had the chance to finish and post it. This devlog follows the improvement of the user interface to my calculator, as well as the addition of variables . 🌟 New functionality summary Add keyboard mappings for buttons Variables - assign and recall Navigate through history Recall history and edit it. 🦋 Modifier keys It was difficult porting the modifier (shift/alpha) keys to keyboard because Shift is used to type symbols such as + and *, and there is also a Shift key on the calculator… My solution was making tapping shift without any other input to toggle the calculator shift modifier, and combining it with another key to not toggle it. 🗒️ Notes Use of the calculator I’ve actually started using the calculator in class, and it’s been faithful to the original so far (for implemented functionality). I still don’t really trust it though and want to run it through some formalised tests before shipping. Keyboard mappings So far, I have been hardcoding keyboard mappings based on what feels natural to me. However, it would probably be better to have user-editable mappings for other people to customise. 📈 Next steps Immediate: M+ and M- special variable Variable and history persistence in the browser Implement polar/rectangualr conversion Medium: Add menu system and settings Add other modes (STAT, VERIFY) Create a test suite to ensure there is no unwanted behaviour Long-term: Tidy up visuals Ship :)
calc82: Devlog #9 31/08/2026 calc82: because calculators are for everyone This devlog follows the addition of menus and the status bar to my calculator. 🌟 New functionality summary Extensible menu system that allows for easy creation of paginated and nested menus Status bar with indicators that change based on the current calculator state M+ and M- special variables Mixed fraction display 📋 Menu system The menu system uses a dictionary to encode the menu pages and their entries, making it easy to add new menus. However, I couldn’t find a way to easily encode functions and arguments in this structure, so the actual actions are handled by a big switch statement. When the menu is active, most buttons have no action and the input/output display is hidden. 🧀 Status bar The status bar consists of a row of elements with adjustable opacity (to represent their active state). It is handled by a class which allows items to be toggled with a single method call, meaning it can retroactively be integrated into other components. The original calculator has some menu elements that can never be activated - for example, there is a complex mode indicator, but the calculator cannot show complex numbers. I omitted these on calc82, as they took up unnecessary space. 📈 Next steps The project is almost nearing completion :) I made complete list of every feature missing from the calculator (too long to post here). It should should get shorter every devlog from now! Hopefully I can finally ship this project in the next couple of weeks. Thanks for reading :)
calc82: Devlog #10 2/09/2026 calc82: because calculators are for everyone This devlog follows the addition of a lot of small features to my calculator that were last on my to-do list, as well as a slight shift in scope. 🌟 New functionality summary Colon operator for multiple operations Saving variables and settings to LocalStorage Clearing this memory Polar and rectangular coordinates (finally!) Forward delete key (keyboard only) Scrolling screen with a nicer cursor! Colon operator This is an operator I’ve never used on my calculator, but its quite powerful. you can type Ans+1:Ans*2:Ans^2 and it will calculate the first expression, then the second, and so on until it loops back to the start. ➡️ Forward delete Although this functionality is not part of the original calculator, it makes it much more pleasant to use on a computer keyboard. This was implemented as a hidden button. Scrolling Scrolling was surprisingly easy to implement! The browser handles all of the hard work, and all I had to do was set the right CSS tags. Granted, with my CSS experience, this was still difficult, but I made it work in the end. 📈 Next steps I have decided to shift the current scope of the project (before shipping) to just be implementing the main compute mode . This means I will not need to do STAT, VERIFY or LINEIO mode. This is for three reasons: With my semester starting, I will not have as much time to work on this project before the deadline I have very little experience with using these other modes I want to focus my time on the user experience. With this shift in scope, the calculator part of the project is all but done - I only have three buttons remaining. (I had to push this devlog out before 10 hours, which is why they’re not done). Then, I can focus on adding the surrounding UI and UX, which should make it actually possible for other people to use my project. Thanks for reading :)
calc82: Devlog #11 6/09/2026 calc82: because calculators are for everyone This devlog follows the addition of a few final features to my calculator, and then my worst nightmare, frontend UI 😧 🌟 New functionality summary Prime factorisation using Pollard’s rho algorithm Engineering notation button Degree/minute/second output button CSS styling!! + menu bar buttons Fixed some input quirks Dark and light mode (based on system default) with manual toggle 🐚 Pollards rho algorithm for prime factorisation Prime factorisation or integer factorisation is the decomposition of a positive integer into a product of integers. The simplest way to implement this is trial division , which is straightforward but has O(√n) time complexity. I thought this would be too slow, so I decided to implement Pollard’s rho algorithm. This has a nicer complexity of O(√p) where p is the smallest prime factor of the number. However, further observation showed that that the Casio calculator probably doesn’t do this - for numbers without easy factors, it just doesn’t bother. Despite this, I’ve already implemented the algorithm, so I’m not going to remove functionality for the sake of exactly replicating the calculator’s behaviour. 🎨 CSS and styling My goal with the styling was to make the calculator as similar across browsers as possible. I bundled the Inter font (best font) into the program and removed browser-specific button styling. Implementing the CSS styling was mostly painless. I opted for a simple design with a menubar that adapts to horizontal or vertical depending on the window’s aspect ratio for the web app functionality. Additionally the css uses the system theme to automatically choose light or dark mode. 📈 Next steps This project is nearly finished - should only be one or two devlogs left until I ship. Here’s what I have left to do: Development Keybind show and edit Brief manual for each calculator function Info menubar button with author & project information, and disclaimers: that I am not affiliated with casio that the calculator is in a beta state and not guaranteed to be correct for all inputs Fullscreen button for mobile devices Preparation for shipping Webpack or similar Choose a license and publicise repo Write a readme Host on github pages (?) Hope that I did enough to not receive legal action from casio 🙃 Thanks for reading :)
calc82: Devlog #12 7/09/2026 calc82: because calculators are for everyone This devlog follows the addition of customisable and accessible keyboard bindings to my calculator. 🌟 New functionality summary Settings menu Switches between sidebar and popup dependent on screen width Key rebinding Flow of choosing button, then pressing key to rebind Stores in local storage Help hotkey Shows all currently bound keys. Key hint consideration The default keyboard map has been implemented as a const dictionary for a while now, allowing lookup of buttons from keyboard keys. This was extended with a user dictionary that can be dynamically updated. However, generating the help hotkey hints needed to go in the opposite direction of the dictionary. The naive approach of iterating through values to find a key for each would perform poorly with O(n^2). Instead, we precalculate a reversed dictionary to lookup keyboard keys from each button. This precalculation is O(n), and setting the keys is also O(n), resulting in O(n) time overall. 📈 Next steps Development Brief manual for each calculator function (considering reusing the on click functionality from key mapper) ) Info menubar button with author & project information, and disclaimers Fullscreen button for mobile devices Preparation for shipping Webpack, choose a license, write readme, publicise repo, host. Thanks for reading :)
calc82: Devlog #13 9/09/2026 calc82: because calculators are for everyone This devlog follows the addition of help and about menus to my calculator, as well as bundling into one js file. 🌟 New functionality summary Help menu Lookup function by calculator button (reuses key bind selector logic) Q&A About page About the calculator Contribute Legal License All JS files are bundled into one file Service worker makes app available offline 📦 Bundling and service worker I chose to use esbuild for bundling. This allows the many JS files to be condensed down into one file, reducing the number of requests that need to be made. This build system is much simpler than other options such as node.js. I also added a simple service worker that caches all requests locally. This makes the calculator available offline. ⚖️ Licensing & Legal I chose GPLv3 for this project as it is an end-user product. Essentially, this means others are free to modify and distribute the project as long as they make the source available. I also added legal disclaimers to the about page of the calculator. 📈 Next steps Write the readme, publicise the repo, and host! Thanks for reading :)
calc82: Devlog #14 9/09/2026 calc82: because calculators are for everyone Final devlog. It’s done!! This last stretch was writing the readme and publishing everything to Github pages. You can now access it at https://rigelseven.github.io/calc82/ Now for a short reflection calc82 is the largest personal software project I have ever completed. This project taught me a lot about input parsing - specifically, tokenisers and syntax trees - and the importance of keeping a large codebase tidy . Overall, the structure of the project is well laid out. However, there are architectural decisions I made early on that I came to regret later (such as the fact that input is represented as a string, whereas it should probably be a tree). Developing calc82 also showed me that I am capable of putting together such an app from scratch. I’m pleased to have participated in Stardance and be given this opportunity.
Ships:
What did you make? calc82: A calculator web-app inspired by the Casio fx-82 series of scientific calculators. These calculators are common in high schools in my country. My project simulates the behaviour of the Casio calculator, while maintaining a good user experience on both desktop and mobile. What was challenging? Creating reliable algebraic (non-linear) input parsing was the most difficult part of the project. This was because it required some difficult array traversal to avoid invalid states - even one mistake would break the whole input. It took a lot of iterations to get to a working input system that passed all my tests. Close contenders for most challenging were the sheer volume of functions I needed to implement, as well as all possible states the calculator can be in. However, the challenge for this was finding time to get around to everything, rather than technical challenge. What are you proud of? I’m most proud of my implementation of the input-to-result pipeline. I was able to incorporate new-to-me concepts such as tokenisers and abstract syntax trees, yet the resulting code is arguably the cleanest part of the program. I’m also proud of the responsive layout, which supports desktop and mobile well, and that the user experience is similar enough to the Casio that my muscle memory carries over. Finally, I’m proud that I managed to finish the project, as it’s the largest software project I’ve ever managed to complete. Demo: https://rigelseven.github.io/calc82/ Source: https://github.com/rigelseven/calc82/...
|
1793346544.537736
|
1793432944.537736
|
|
55721
|
WarioWare Game by @rajia0900 | Stardance
|
rajia0900
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @rajia0900 | Stardance
|
1793346545.8826675
|
1793951345.8826675
|
|
7445
|
Pinkcuckoo: E-commerce website by @abhaygupta | St Pinkcuckoo: E-commerce website by @abhaygupta | Stardance...
|
abhaygupta
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pinkcuckoo: E-commerce website by @abhaygup Title: Pinkcuckoo: E-commerce website by @abhaygupta | Stardance...
|
1793346546.8114903
|
1793951346.8114903
|
|
50393
|
Frictionless by @misbahgauri9 | Stardance
|
misbahgauri9
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T11:38:54Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a note taking website, so this is basically the Web version of good notes [ well we are not quite there yet] and I made it as a free and accessible. the most challenging part more than coding for me as someone who is doing it for the first time was to figure things and set up things:}", "repo": "https://github.com/misbahgauri/BeeMark", "demo": "https://misbahgauri.github.io/BeeMark/"}]...
|
[{"post_id": 75172, "ts": "202 [{"post_id": 75172, "ts": "2026-09-29T11:32:58Z", "hours": 0.4397, "text": "guys I added a readme and fixed the errors I was getting w GitHub, its shipped now so please check it out and leave honest revieww so happy RN!!!"}, {"post_id": 74460, "ts": "2026-09-27T12:51:19Z", "hours": 0.3867, "text": "it’s doneeee yayyyy try it ouut yall"}, {"post_id": 73570, "ts": "2026-09-25T12:40:07Z", "hours": 1.4192, "text": "things I did: 1. added new fonts, increased the storage & added grid. 2. change the whole css cuz i wanted to change the colour pallet and layout so it kinda fits the futuristic biophilic aesthetics and for that I added some unnatural shapes and textures. 3. worked on making the already existing features work better. [ AKA the hardest part]"}, {"post_id": 69674, "ts": "2026-09-17T15:31:28Z", "hours": 1.0711, "text": "after so many days of working its still glitching and storage sucks!!"}, {"post_id": 61445, "ts": "2026-09-04T11:26:04Z", "hours": 0.9364, "text": "dev log #3 ok i know it’s been a while that’s cuz i’ve been figuring out a few things in the code aswell as my life :) so far i have worked on the stylus writting feauture and adding more bg options. but I am yet to add a better storage system, more fonts , text editing optin and integrate AI feautures also improve th UI, Any tips?"}, {"post_id": 53747, "ts": "2026-08-24T12:40:04Z", "hours": 0.3094, "text": "devlog 2 guys I worked on my HTML, CSS and java and today I added a handwritten notes feature where users can write through stylus as well as type and also added a feature through which 3d models and images can be uploaded on the page and some more basic features."}, {"post_id": 53110, "ts": "2026-08-23T15:22:32Z", "hours": 5.3506, "text": "this my note taking app ‘bee mark’ I am working on this as my first ever coding project since I’m a newbie but the reason I chose to make an actual note taking app rather than a ‘quick notes’ web cuz I actually wanted to create a cutesy and Pinterest coded version that is actually function and has features that can help students make note taking process a bit easier and is free to use also I’ll explain more about my web in next post and if you have suggestions or features that you would personally like to see in such plsssss do let me know. here’s my HTML progress as of now. there is more but i could only upload one about 128 lines."}]...
|
Title: Frictionless by @misbahgauri9 | Stardance
Title: Frictionless by @misbahgauri9 | Stardance
Devlogs:
this my note taking app ‘bee mark’ I am working on this as my first ever coding project since I’m a newbie but the reason I chose to make an actual note taking app rather than a ‘quick notes’ web cuz I actually wanted to create a cutesy and Pinterest coded version that is actually function and has features that can help students make note taking process a bit easier and is free to use also I’ll explain more about my web in next post and if you have suggestions or features that you would personally like to see in such plsssss do let me know. here’s my HTML progress as of now. there is more but i could only upload one about 128 lines.
devlog 2 guys I worked on my HTML, CSS and java and today I added a handwritten notes feature where users can write through stylus as well as type and also added a feature through which 3d models and images can be uploaded on the page and some more basic features.
dev log #3 ok i know it’s been a while that’s cuz i’ve been figuring out a few things in the code aswell as my life :) so far i have worked on the stylus writting feauture and adding more bg options. but I am yet to add a better storage system, more fonts , text editing optin and integrate AI feautures also improve th UI, Any tips?
after so many days of working its still glitching and storage sucks!!
things I did: 1. added new fonts, increased the storage & added grid. 2. change the whole css cuz i wanted to change the colour pallet and layout so it kinda fits the futuristic biophilic aesthetics and for that I added some unnatural shapes and textures. 3. worked on making the already existing features work better. [ AKA the hardest part]
it’s doneeee yayyyy try it ouut yall
guys I added a readme and fixed the errors I was getting w GitHub, its shipped now so please check it out and leave honest revieww so happy RN!!!
Ships:
I made a note taking website, so this is basically the Web version of good notes [ well we are not quite there yet] and I made it as a free and accessible. the most challenging part more than coding for me as someone who is doing it for the first time was to figure things and set up things:}...
|
1793346547.7098017
|
1793432947.7098017
|
|
9487
|
My first slack bot! by @Usman | Stardance
|
Usman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Usman | Stardance
|
1793346549.447224
|
1793951349.447224
|
|
55723
|
Techie by @TheTechGuy-_- | Stardance
|
TheTechGuy-_-
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Techie by @TheTechGuy-_- | Stardance
|
1793346551.2114089
|
1793951351.2114089
|
|
26653
|
Instrument-Cluster by @raghavsharma1214 | Stardanc Instrument-Cluster by @raghavsharma1214 | Stardance...
|
raghavsharma1214
|
0
|
9.62
|
0
|
[]
|
[{"post_id": 26299, "ts": "202 [{"post_id": 26299, "ts": "2026-07-11T00:40:07Z", "hours": 1.5667, "text": "Trying to get the Speedometer working. Am bruteforcing checking all CAN ID’s to see which one works."}, {"post_id": 24342, "ts": "2026-07-07T21:04:40Z", "hours": 3.7167, "text": "Decoding can messages… I can’t find the can database for this car so Im trying to brute-force finding the codes, but tryna find on the web as well."}, {"post_id": 22571, "ts": "2026-07-05T02:52:43Z", "hours": 2.9833, "text": "The CAN doesnt make sense The needles are able to sweep, after 2 hours of debugging and brute-forcing CAN messages since I dont have the car, only the instrument cluster. But I have to find the equation that makes it scale number to actual RPM. That will be tough,"}, {"post_id": 21970, "ts": "2026-07-04T05:52:42Z", "hours": 1.3556, "text": "Finished the EEPROM Locking The Audi S5 is known to go into component protection if it is tampered with without the proper ECU TCU gateway modules and whatnot. So what I did was I forced the EEPROM into read-only. Making it unable to go into component protection, which essentially bricks the whole thing, and instead allowing us to debug and find the signal to use the instrument cluster properly."}]...
|
Title: Instrument-Cluster by @raghavsharma1214 | S Title: Instrument-Cluster by @raghavsharma1214 | Stardance
Devlogs:
Finished the EEPROM Locking The Audi S5 is known to go into component protection if it is tampered with without the proper ECU TCU gateway modules and whatnot. So what I did was I forced the EEPROM into read-only. Making it unable to go into component protection, which essentially bricks the whole thing, and instead allowing us to debug and find the signal to use the instrument cluster properly.
The CAN doesnt make sense The needles are able to sweep, after 2 hours of debugging and brute-forcing CAN messages since I dont have the car, only the instrument cluster. But I have to find the equation that makes it scale number to actual RPM. That will be tough,
Decoding can messages… I can’t find the can database for this car so Im trying to brute-force finding the codes, but tryna find on the web as well.
Trying to get the Speedometer working. Am bruteforcing checking all CAN ID’s to see which one works....
|
1793346555.3015256
|
1793951355.3015256
|
|
55629
|
Drawpad by @magomango | Stardance
|
magomango
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T01:55:01Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a drawpad using Arduino. It includes a screen and a reset button physically. There’s an intial passcode screen to protect your devious drawings and a clear button the side which functions as a lock button or a clear pass attempt. Currently there’s 4 colors and a clear button.", "repo": "https://github.com/magnolia345/Gamepad", "demo": ""}]...
|
[{"post_id": 71519, "ts": "202 [{"post_id": 71519, "ts": "2026-09-20T23:59:07Z", "hours": 3.7739, "text": "Added a simple pass You now need to enter the correct passcode to view the drawpad, and it locks by pressing the left side button. Necessary to protect any… private drawings. 👀 But then i just leaked it to everyone who sees this. Oops gotta change it"}, {"post_id": 63669, "ts": "2026-09-07T16:31:47Z", "hours": 6.2542, "text": "A cool gamepad - 1st Devlog, DRAWPAD This is the first time I’m posting hardware, and I lwk didn’t know there was an option to record build time lmao. Uh ok. And also forgot to make devlogs along the way so we got this. ~ What is this? I’m making a gamepad using Arduino, with different games on it. With Arduino Uno and a TFT LCD Display, I made this tiny drawing pad, which will eventually be one part of the overall gamepad, with 4 different colors and a clear button. For size reference, it’s about the size of an airpod pro case. ~ Plan For this drawpad specifically, I’ll add an erase button and possibly more colors! I will make a retro pingpong game and add it to the overall gameboard. More to come on that. corn…."}]...
|
Title: Drawpad by @magomango | Stardance
Devlogs: Title: Drawpad by @magomango | Stardance
Devlogs:
A cool gamepad - 1st Devlog, DRAWPAD This is the first time I’m posting hardware, and I lwk didn’t know there was an option to record build time lmao. Uh ok. And also forgot to make devlogs along the way so we got this. ~ What is this? I’m making a gamepad using Arduino, with different games on it. With Arduino Uno and a TFT LCD Display, I made this tiny drawing pad, which will eventually be one part of the overall gamepad, with 4 different colors and a clear button. For size reference, it’s about the size of an airpod pro case. ~ Plan For this drawpad specifically, I’ll add an erase button and possibly more colors! I will make a retro pingpong game and add it to the overall gameboard. More to come on that. corn….
Added a simple pass You now need to enter the correct passcode to view the drawpad, and it locks by pressing the left side button. Necessary to protect any… private drawings. 👀 But then i just leaked it to everyone who sees this. Oops gotta change it
Ships:
I made a drawpad using Arduino. It includes a screen and a reset button physically. There’s an intial passcode screen to protect your devious drawings and a clear button the side which functions as a lock button or a clear pass attempt. Currently there’s 4 colors and a clear button....
|
1793346557.0842092
|
1793432957.0842092
|
|
6747
|
IRIS by @Vidit | Stardance
|
Vidit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: IRIS by @Vidit | Stardance
|
1793346558.2930727
|
1793951358.2930727
|
|
55635
|
Silly macropad :3 by @Lawnard | Stardance
|
Lawnard
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T20:09:07Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is just what i did for the macropad mission", "repo": "https://github.com/LawrnardKerman/mymacropad", "demo": ""}]...
|
[{"post_id": 78434, "ts": "202 [{"post_id": 78434, "ts": "2026-10-10T19:56:54Z", "hours": 1.9714, "text": "ITS ALIVE!!"}, {"post_id": 61181, "ts": "2026-09-03T23:57:25Z", "hours": 0.4561, "text": "gng, how long does it usually take for the people at hackclub hq to review a design, i really want to ship something during stardance(btw, my slack isnt working, thats why im posting here)(the image is of the final version of the pcb)"}, {"post_id": 58917, "ts": "2026-08-31T14:17:07Z", "hours": 1.0356, "text": "alr gng, i finished the firmware! yeppi yay :3"}, {"post_id": 58125, "ts": "2026-08-30T14:10:44Z", "hours": 1.2333, "text": "i set up the github page and made the BOM and CPL file because i am not going to hand solder those tiny smd componets"}, {"post_id": 58042, "ts": "2026-08-30T12:03:24Z", "hours": 1.805, "text": "i got done with the cad the final design has 5 cherry mx switched, 1 rotary encoder, and 1 led now i just have to make the firmware i redid the traces again because one of my friends called it “horrible” and they said it was so bad that they would “do it for me”"}, {"post_id": 57700, "ts": "2026-08-29T22:50:55Z", "hours": 2.2589, "text": "im having so much fun bro im gonna abandon all my other projects for like a week so i can actually ship something during stardance, im almost done with cad(pcb design is so fun) i also redid all the traces because it looked like spagetti. I’m DREADING the firmware though ps: rn i have no motivation for my other projects, im still riding the high from starting a new project"}, {"post_id": 57319, "ts": "2026-08-29T13:07:02Z", "hours": 2.1817, "text": "i finished the case & the pcb i have 6 switches and 3 leds i feel so much more motivation for this project tbh"}]...
|
Title: Silly macropad :3 by @Lawnard | Stardance
Title: Silly macropad :3 by @Lawnard | Stardance
Devlogs:
i finished the case & the pcb i have 6 switches and 3 leds i feel so much more motivation for this project tbh
im having so much fun bro im gonna abandon all my other projects for like a week so i can actually ship something during stardance, im almost done with cad(pcb design is so fun) i also redid all the traces because it looked like spagetti. I’m DREADING the firmware though ps: rn i have no motivation for my other projects, im still riding the high from starting a new project
i got done with the cad the final design has 5 cherry mx switched, 1 rotary encoder, and 1 led now i just have to make the firmware i redid the traces again because one of my friends called it “horrible” and they said it was so bad that they would “do it for me”
i set up the github page and made the BOM and CPL file because i am not going to hand solder those tiny smd componets
alr gng, i finished the firmware! yeppi yay :3
gng, how long does it usually take for the people at hackclub hq to review a design, i really want to ship something during stardance(btw, my slack isnt working, thats why im posting here)(the image is of the final version of the pcb)
ITS ALIVE!!
Ships:
This is just what i did for the macropad mission...
|
1793346559.2083771
|
1793432959.2083771
|
|
55648
|
DIY Desk Audio Amplifier with Tone Control & D DIY Desk Audio Amplifier with Tone Control & Dual Input by @jeremyngai | Stardance...
|
jeremyngai
|
1
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T10:04:24Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is a desk audio amplifier I designed and built to quickly switch between 2 audio sources and apply custom analogue Baxandall EQ to audio without software dependency. It is capable of delivering a maximum of 2x5W output compatible with 4 ohm and 8 ohm speakers. I was frustrated when switching speaker input between my pc and my piano keyboard because I had to move my pc off my desk just to unplug the audio cable from the chassis and plug it back in after my piano practice multiple times a day. That time, I was using my PAM8403 module with the audio cable directly soldered onboard. So, the audio cable cannot be unplugged on the module end. A while after that, I decided to make another amplifier board upgraded with removable audio jack connector onboard to make my life easier. However, just as I thought it would finally be over, the module came faulty.. Total waste of time. This is why I came up with this over-engineered audio amplifier that lets me switch 2 audio sources with just a switch and lets me control EQ without software. Power Input The build is powered with 5V input via USB Type-C and through a toggle switch to control power. It also works with PD negotiation with a pull-down resistor on CC lines. Audio Input Allows 2 distinct audio sources to be quickly switched with a DPDT toggle switch without unplugging/replugging audio jacks. It is compatible with TRRS and TRS connectors Audio Tone Control The build uses a passive 2 channel Baxandall tone control circuit to alter bass and treble frequencies before reaching the main amplifier module. This introduces an insertion loss of around 20dB. Bass Turnover Frequency ( f c ): ~72Hz Treble Turnover Frequency ( f c ): ~7.2kHz Amplification The amplifier system is powered by the HT8696 Class D/AB stereo ready-made module capable of outputting ~10W at 5V with anti-clipping capability to reduce buzzing issues.", "repo": "https://github.com/Jeremy-Ngai-Sew-Poh/DIY-Audio-Tone-Amplifier", "demo": ""}]...
|
[{"post_id": 66320, "ts": "202 [{"post_id": 66320, "ts": "2026-09-12T02:40:10Z", "hours": 3.1667, "text": "Yesterday, all my parts have arrived!! Soldering them one by one took me 3 hours. The PCB turns out perfect as expected and the slide potentiometer is just as smooth. It didn’t work at first… However a reflow saved both my time and money spent lol. Overall it worked great, the baxandall tone control works and it is so fascinating to be building one myself. However at first the tone control didn’t work because of a mismatch of ground plane of the aux input and common ground. So i shorted the aux ground directly to the common ground. I made 3 shorts on the best location for EMI, and the buzzing noise is completely gone (at least to my ears)! The soft underglow also turned out greattt. So ill be vibing and booming with my new audio amplifier 24/7, and as i vibe, ill continue with my github repo. stay tuned then!"}, {"post_id": 61999, "ts": "2026-09-05T06:30:13Z", "hours": 0.9333, "text": "While waiting for all my parts to arrive, i worked on the github repository bill of materials. once all parts arrive, ill solder them!!"}, {"post_id": 60159, "ts": "2026-09-02T10:52:29Z", "hours": 3.0358, "text": "Last few days, i worked on the PCB layout, i kept it at a size of 90x90 to fit on my desk, and also there’s a warm white backlight on the bottom so it gives vibee i dont really know how will it look like but i have good feeling about it! anyways i ordered the pcb on JLCPCB and ill be very excited for it haha, then i can solder everything and hopefully it works.. if not, uhh…."}, {"post_id": 57341, "ts": "2026-08-29T13:50:58Z", "hours": 6.6906, "text": "Today is the first progress of my diy custom audio amp. i completed my schematics and pcb layout. Im basically using a ht8696 audio amplifier module alongside with baxandoll tone control circuit, also made it togglable whether to apply tone or not. Im surprized by today’s progress its really quick without realising, im excited to move on to the pcb wiring tomorrow. today’s task definitely motivated me alot and i plan to order my pcb in a few days!!"}]...
|
Title: DIY Desk Audio Amplifier with Tone Control Title: DIY Desk Audio Amplifier with Tone Control & Dual Input by @jeremyngai | Stardance
Devlogs:
Today is the first progress of my diy custom audio amp. i completed my schematics and pcb layout. Im basically using a ht8696 audio amplifier module alongside with baxandoll tone control circuit, also made it togglable whether to apply tone or not. Im surprized by today’s progress its really quick without realising, im excited to move on to the pcb wiring tomorrow. today’s task definitely motivated me alot and i plan to order my pcb in a few days!!
Last few days, i worked on the PCB layout, i kept it at a size of 90x90 to fit on my desk, and also there’s a warm white backlight on the bottom so it gives vibee i dont really know how will it look like but i have good feeling about it! anyways i ordered the pcb on JLCPCB and ill be very excited for it haha, then i can solder everything and hopefully it works.. if not, uhh….
While waiting for all my parts to arrive, i worked on the github repository bill of materials. once all parts arrive, ill solder them!!
Yesterday, all my parts have arrived!! Soldering them one by one took me 3 hours. The PCB turns out perfect as expected and the slide potentiometer is just as smooth. It didn’t work at first… However a reflow saved both my time and money spent lol. Overall it worked great, the baxandall tone control works and it is so fascinating to be building one myself. However at first the tone control didn’t work because of a mismatch of ground plane of the aux input and common ground. So i shorted the aux ground directly to the common ground. I made 3 shorts on the best location for EMI, and the buzzing noise is completely gone (at least to my ears)! The soft underglow also turned out greattt. So ill be vibing and booming with my new audio amplifier 24/7, and as i vibe, ill continue with my github repo. stay tuned then!
Ships:
This is a desk audio amplifier I designed and built to quickly switch between 2 audio sources and apply custom analogue Baxandall EQ to audio without software dependency. It is capable of delivering a maximum of 2x5W output compatible with 4 ohm and 8 ohm speakers. I was frustrated when switching speaker input between my pc and my piano keyboard because I had to move my pc off my desk just to unplug the audio cable from the chassis and plug it back in after my piano practice multiple times a day. That time, I was using my PAM8403 module with the audio cable directly soldered onboard. So, the audio cable cannot be unplugged on the module end. A while after that, I decided to make another amplifier board upgraded with removable audio jack connector onboard to make my life easier. However, just as I thought it would finally be over, the module came faulty.. Total waste of time. This is why I came up with this over-engineered audio amplifier that lets me switch 2 audio sources with just a switch and lets me control EQ without software. Power Input The build is powered with 5V input via USB Type-C and through a toggle switch to control power. It also works with PD negotiation with a pull-down resistor on CC lines. Audio Input Allows 2 distinct audio sources to be quickly switched with a DPDT toggle switch without unplugging/replugging audio jacks. It is compatible with TRRS and TRS connectors Audio Tone Control The build uses a passive 2 channel Baxandall tone control circuit to alter bass and treble frequencies before reaching the main amplifier module. This introduces an insertion loss of around 20dB. Bass Turnover Frequency ( f c ): ~72Hz Treble Turnover Frequency ( f c ): ~7.2kHz Amplification The amplifier system is powered by the HT8696 Class D/AB stereo ready-made module capable of outputting ~10W at 5V with anti-clipping capability to reduce buzzing issues....
|
1793346560.5153644
|
1793432960.5153644
|
|
55726
|
My awesome macropad! by @Seedling | Stardance
|
Seedling
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Seedling | Stardan Title: My awesome macropad! by @Seedling | Stardance...
|
1793346561.730449
|
1793951361.730449
|
|
33769
|
Untitled by @Shlok_P | Stardance
|
Shlok_P
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Shlok_P | Stardance
|
1793346562.7004066
|
1793951362.7004066
|
|
50446
|
ISS Live Tracker by @KarthikB | Stardance
|
KarthikB
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T14:50:33Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ISS Live Tracker 🛰️ A real time web app that tracks the International Space Station’s live position on an interactive map and predicts exactly when and whether it’ll be visible from anywhere on Earth. Click any spot on the map to get the next visible pass for that location, complete with duration and whether you will able to see it. Built from scratch with plain HTML, CSS, and JavaScript — no frameworks. Features a live updating marker with a real orbital trail, real time day/night shading calculated from the sun’s actual position, and a pass predictor powered by real ISS tracking APIs. As a beginner, this was my first fully shipped project, including real deployment debugging (HTTPS/mixed-content issues, case-sensitivity bugs between Windows and Linux, and switching APIs mid-project when one proved unreliable in production). Live demo: https://droid678.github.io/ISS-tracker/ Repo: https://github.com/droid678/ISS-tracker", "repo": "https://github.com/droid678/ISS-tracker", "demo": "https://droid678.github.io/ISS-tracker/"}]...
|
[{"post_id": 72655, "ts": "202 [{"post_id": 72655, "ts": "2026-09-23T13:00:28Z", "hours": 2.1564, "text": "Pass Predictor: Done and Shipped 🛰️ Added the second big feature to my ISS Live Tracker: click anywhere on the map, and it tells you when the ISS will next be visible from that exact spot, not just when it passes overhead, but whether it’ll actually be dark enough and sunlit enough to see with your own eyes. Started by building this with real orbital mechanics using satellite.js, fetching the ISS’s TLE (orbital data) and calculating look angles myself. Got it fully working locally. Then deployment broke almost everything: My ISS position API was using http://, but GitHub Pages serves over HTTPS. Browsers block that mix silently. Switched to an HTTPS-only API. The TLE data source (Celestrak) returned a 403 error specifically when called from my live domain, even though it worked fine locally — likely some kind of bot protection treating GitHub Pages differently. At that point, with the deadline close, I made the call to stop fighting the orbital math myself and switched to a purpose-built free API (Pollux Labs’ ISS Pass API) that does the prediction directly. Simpler, more reliable, and it even factors in visibility (daylight/shadow), which my own calculation didn’t. Also did a UI pass — added a tagline, a live status badge, grouped the info text into a proper panel, and a favicon. Live demo: https://droid678.github.io/ISS-tracker/ Repo: https://github.com/droid678/ISS-tracker.git"}, {"post_id": 48981, "ts": "2026-08-17T15:51:59Z", "hours": 2.0272, "text": "Started my ISS Live Tracker for Stardance 🛰️ Decided to build a real-time tracker for the International Space Station after realizing I wanted something that felt genuinely mine, not a pre-made project idea. Built with plain HTML/CSS/JS + Leaflet.js for the map — no frameworks, kept it simple so I could actually understand every line. What’s working so far: -Live ISS position fetched from the Open Notify API, updating every few seconds -A moving marker with a custom satellite icon -A trail line showing the ISS’s recent path -Real-time day/night shading on the map, using a library that calculates the sun’s actual position -A full dark theme dashboard redesign Funniest bug: my map completely broke and the console said map is not a function, turned out, autocomplete had renamed my L.map(…) calls to LargestContentfulPaint.map(…) without me noticing. Took a while to spot since it looked so plausible at a glance. Next up: either a pass predictor (so you can tell when the ISS is visible from your location) or expanding into a broader space weather dashboard."}]...
|
Title: ISS Live Tracker by @KarthikB | Stardance
Title: ISS Live Tracker by @KarthikB | Stardance
Devlogs:
Started my ISS Live Tracker for Stardance 🛰️ Decided to build a real-time tracker for the International Space Station after realizing I wanted something that felt genuinely mine, not a pre-made project idea. Built with plain HTML/CSS/JS + Leaflet.js for the map — no frameworks, kept it simple so I could actually understand every line. What’s working so far: -Live ISS position fetched from the Open Notify API, updating every few seconds -A moving marker with a custom satellite icon -A trail line showing the ISS’s recent path -Real-time day/night shading on the map, using a library that calculates the sun’s actual position -A full dark theme dashboard redesign Funniest bug: my map completely broke and the console said map is not a function, turned out, autocomplete had renamed my L.map(…) calls to LargestContentfulPaint.map(…) without me noticing. Took a while to spot since it looked so plausible at a glance. Next up: either a pass predictor (so you can tell when the ISS is visible from your location) or expanding into a broader space weather dashboard.
Pass Predictor: Done and Shipped 🛰️ Added the second big feature to my ISS Live Tracker: click anywhere on the map, and it tells you when the ISS will next be visible from that exact spot, not just when it passes overhead, but whether it’ll actually be dark enough and sunlit enough to see with your own eyes. Started by building this with real orbital mechanics using satellite.js, fetching the ISS’s TLE (orbital data) and calculating look angles myself. Got it fully working locally. Then deployment broke almost everything: My ISS position API was using http://, but GitHub Pages serves over HTTPS. Browsers block that mix silently. Switched to an HTTPS-only API. The TLE data source (Celestrak) returned a 403 error specifically when called from my live domain, even though it worked fine locally — likely some kind of bot protection treating GitHub Pages differently. At that point, with the deadline close, I made the call to stop fighting the orbital math myself and switched to a purpose-built free API (Pollux Labs’ ISS Pass API) that does the prediction directly. Simpler, more reliable, and it even factors in visibility (daylight/shadow), which my own calculation didn’t. Also did a UI pass — added a tagline, a live status badge, grouped the info text into a proper panel, and a favicon. Live demo: https://droid678.github.io/ISS-tracker/ Repo: https://github.com/droid678/ISS-tracker.git
Ships:
ISS Live Tracker 🛰️ A real time web app that tracks the International Space Station’s live position on an interactive map and predicts exactly when and whether it’ll be visible from anywhere on Earth. Click any spot on the map to get the next visible pass for that location, complete with duration and whether you will able to see it. Built from scratch with plain HTML, CSS, and JavaScript — no frameworks. Features a live updating marker with a real orbital trail, real time day/night shading calculated from the sun’s actual position, and a pass predictor powered by real ISS tracking APIs. As a beginner, this was my first fully shipped project, including real deployment debugging (HTTPS/mixed-content issues, case-sensitivity bugs between Windows and Linux, and switching APIs mid-project when one proved unreliable in production). Live demo: https://droid678.github.io/ISS-tracker/ Repo: https://github.com/droid678/ISS-tracker...
|
1793346563.6544812
|
1793432963.6544812
|
|
31377
|
My own site! by @Dan700 | Stardance
|
Dan700
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @Dan700 | Stardance
|
1793346564.8308308
|
1793951364.8308308
|
|
55727
|
BLARE: Lava by @Tyo | Stardance
|
Tyo
|
0
|
5.82
|
0
|
[]
|
[{"post_id": 60002, "ts": "202 [{"post_id": 60002, "ts": "2026-09-02T03:02:26Z", "hours": 1.3056, "text": "A lil addition to the top of the model (All thanks to Christopher Lum to yt, he’s actually the best!~ his yt video that I followed ) another thing is that the code for the alarm system is finished!~ Yey, I did hear that I can use Wokwi for testing but I let it run for like 2 hours and it was still compiling, so I don’t really know what’s happening there ;-;. I’m thinking of asking gemini or claude to just have a look at my code and ask them for logic errors if I’m unsure it’ll work and of course asking in the slack community!~ That’s all~ See ya!~ <3"}, {"post_id": 58622, "ts": "2026-08-31T03:26:40Z", "hours": 1.1381, "text": "This is taking an insane toll ;-; but I should (SHOULD) have the timer and setting up part of this clock finished! (yeyyyy) now all that’s left is to add the alarm system and the other stuffs i wanna place in it (phew)"}, {"post_id": 58092, "ts": "2026-08-30T13:26:12Z", "hours": 0.9486, "text": "Man, it’s weird coding in arduino without having the physical product to run the code and test it. Anyways I should(I have no idea if it works -~-) have added a clock design that first ask you on the size you want it to be then also edit the current time so it’s accurate. (keyword should ;-;)"}, {"post_id": 58016, "ts": "2026-08-30T11:08:40Z", "hours": 2.4267, "text": "Blare! Blare! Blare! Making my first hardware in Stardance~ The pcb was finnicky and when I finished, I uhm kindof went down a rabbithole to add some doodle onto the pcb but hey! It looks really good!….right?? RIGHT?!?"}]...
|
Title: BLARE: Lava by @Tyo | Stardance
Devlogs:
B Title: BLARE: Lava by @Tyo | Stardance
Devlogs:
Blare! Blare! Blare! Making my first hardware in Stardance~ The pcb was finnicky and when I finished, I uhm kindof went down a rabbithole to add some doodle onto the pcb but hey! It looks really good!….right?? RIGHT?!?
Man, it’s weird coding in arduino without having the physical product to run the code and test it. Anyways I should(I have no idea if it works -~-) have added a clock design that first ask you on the size you want it to be then also edit the current time so it’s accurate. (keyword should ;-;)
This is taking an insane toll ;-; but I should (SHOULD) have the timer and setting up part of this clock finished! (yeyyyy) now all that’s left is to add the alarm system and the other stuffs i wanna place in it (phew)
A lil addition to the top of the model (All thanks to Christopher Lum to yt, he’s actually the best!~ his yt video that I followed ) another thing is that the code for the alarm system is finished!~ Yey, I did hear that I can use Wokwi for testing but I let it run for like 2 hours and it was still compiling, so I don’t really know what’s happening there ;-;. I’m thinking of asking gemini or claude to just have a look at my code and ask them for logic errors if I’m unsure it’ll work and of course asking in the slack community!~ That’s all~ See ya!~ <3...
|
1793346565.779674
|
1793951365.779674
|
|
13209
|
Opeggle by @arwineemlan | Stardance
|
arwineemlan
|
0
|
5.43
|
0
|
[]
|
[{"post_id": 9218, "ts": "2026 [{"post_id": 9218, "ts": "2026-06-15T14:17:19Z", "hours": 5.4344, "text": "The process of making oPeggle a free and open source Peggle successor # Devlog 1 This first devlog will mainly be about how and why I am doing this and not so much about the specific progress I have made so far. I have always wanted to learn more about game development and the underlying code that makes 3d games possible. This is something I have wanted for a long time and I don’t think I’m alone with that. So why am I then making a 2d game? Good question. Mainly because I have always taken on too many things at once. I have tried to make a 3d renderer in C but I did not know C or how to make a 3d game, so everything collapsed after a while. This project may meet the same fate but this time I have tried to make it easier so I can see it the whole way through. So what do I want to make? Im making an open source recreation of Peggle with an added level editor and community levels page. To actually be able to recreate peggle I have the absolutely amazing resource of learnopengl.com. I am using their tutorial “Breakout” to get the hang of how to set up a bigger project with C++ and opengl. A lot of the code for basic functionality comes from this tutorial. I have already made a little project with opengl but this is something much bigger and better so I really need the help. I have already programmed for about 5 hours. Under that time I have set up the game with a stable backbone that I borrowed from learnopengl, I have also started on the actual game aspect of the game with adding the ball, gravity for the ball, obstacles and the player canon. I still have a lot more to do and in the next devlog I will hopefully have made great progress with the game. This project does not use any AI because I actually want to learn new things. Thanks for reading this long, Hope you’ll have a good day :) Here’s a screenshoot of the state of the game (Very work in progress Everything visually will be changed)"}]...
|
Title: Opeggle by @arwineemlan | Stardance
Devlog Title: Opeggle by @arwineemlan | Stardance
Devlogs:
The process of making oPeggle a free and open source Peggle successor # Devlog 1 This first devlog will mainly be about how and why I am doing this and not so much about the specific progress I have made so far. I have always wanted to learn more about game development and the underlying code that makes 3d games possible. This is something I have wanted for a long time and I don’t think I’m alone with that. So why am I then making a 2d game? Good question. Mainly because I have always taken on too many things at once. I have tried to make a 3d renderer in C but I did not know C or how to make a 3d game, so everything collapsed after a while. This project may meet the same fate but this time I have tried to make it easier so I can see it the whole way through. So what do I want to make? Im making an open source recreation of Peggle with an added level editor and community levels page. To actually be able to recreate peggle I have the absolutely amazing resource of learnopengl.com. I am using their tutorial “Breakout” to get the hang of how to set up a bigger project with C++ and opengl. A lot of the code for basic functionality comes from this tutorial. I have already made a little project with opengl but this is something much bigger and better so I really need the help. I have already programmed for about 5 hours. Under that time I have set up the game with a stable backbone that I borrowed from learnopengl, I have also started on the actual game aspect of the game with adding the ball, gravity for the ball, obstacles and the player canon. I still have a lot more to do and in the next devlog I will hopefully have made great progress with the game. This project does not use any AI because I actually want to learn new things. Thanks for reading this long, Hope you’ll have a good day :) Here’s a screenshoot of the state of the game (Very work in progress Everything visually will be changed)...
|
1793346566.9846456
|
1793951366.9846456
|
|
1954
|
The Emerald Engineers Website by @Rizzington_I | S The Emerald Engineers Website by @Rizzington_I | Stardance...
|
Rizzington_I
|
1
|
17.0
|
190
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-28T02:46:38Z", "hours": 17.0, "multiplier": 11.05, "payout": 190, "blessing": "neutral", "text": "I created a website for my team that has information about my team and who we are and what we do. Rather than just creating any other boring site I have designed a dynamic background that makes the site more interesting. Other than that I have also created a 3D visualizer where viewers can drag the image around and take a look at our robot from the past season at various angles. There is also a fun Team Gallery page with captions and funny moments from our season. The Meet the Team page shows us our members and who we are. The hardest part of making this website was the 3D visualizer and the dynamic background. Both elements require complex javascript which made it extremely hard to code. I spent almost half of my time dedicated just to both of those elements in this website just because of how much time it took to perfect it. For the visualizer I ended up taking over 72 photos to get everything at the right angle and compress all the images together with javascript in order to get the visualizer working. I put a lot of time into perfecting the small kinks here and there to make this site stand out so I hope you enjoy it!", "repo": "https://github.com/Rizzington-III/FTC-Team-Website-32483", "demo": "https://rizzington-iii.github.io/FTC-Team-Website-32483/index.html"}]...
|
[{"post_id": 73995, "ts": "202 [{"post_id": 73995, "ts": "2026-09-26T14:17:34Z", "hours": 8.6269, "text": "DevLog #5: Final Touches In this final Devlog I have spent countless hours touching up on final edits to make sure this project is ready to ship. It took a lot of configuring to get the site running up on GitHub pages and unfortunately because this website is a part of my team repository I cannot create it. DONT WORRY: I found a solution… Instead, I have put the website code into a new repository where I have admin access and I have added the link for the GitHub Pages! I hope you guys enjoy it and I’ll put the link here if you want to check it out. BTW: I reccomend taking a look at the Team Gallery and the Robot Page as I would consider those the fun parts of the site. LINK: https://rizzington-iii.github.io/FTC-Team-Website-32483/index.html Enjoy!"}, {"post_id": 23013, "ts": "2026-07-05T18:46:08Z", "hours": 4.7439, "text": "The Article Hub page is complete with scrolling containers for differing categories that hold cards with the article title, date, article-class, as well as an image. These cards are linked to HTML pages that contain the actual article but those are yet to be updated. Now I’ve moved onto the robot page where I am going to insert information on our past season’s robot (ARC). I am currently trying to put in a 3D image visualizer where the user can drag around the see the image, which is going to be our robot. I’ve also added contact details that are linked onto the sidebar. One thing that was really annoying was formatting and making sure that the containers are all aligned because some of the scrolling containers overlapped into other categories and it looked really messy. Turns out in the end it was just one misplaced line between two css classes."}, {"post_id": 19904, "ts": "2026-07-01T10:32:37Z", "hours": 2.5964, "text": "So far this is what I have finished: The sidebar is complete but I may still have to add other pages The About Us, Meet the Team, Sponsor Us, Feedback, Mission Statement, and Outreach page are complete. Although some of them have placeholder images for the time being until I can dig up the right ones from my phone. The stuff that I am currently working on: I am working on the Article Hub page which is essentially a page that contains more pages. It has links to these small blog posts (articles) that could be useful for other robotics teams that participate in the upcoming season. The stuff that still hasn’t been touched: The robot page isn’t done and all the links to the blogs lead me to a blank white page. So I still have more work to do. Back to what I’m working on: In the article hub, for some reason the div cards that are links to their respective articles are placed correctly in my first section which is labeled latest releases. On the other hand in my second section (Hardware Articles), the cards don’t start in the same spot and for some reason the title of the Hardware Article is covered behind the scrolling container of the first section. By the way the article cards are div cards that are linked to the html blog pages as well as contain the title of the article, an image, the date, and what type of info is covered: (hardware, software, team management, exclusive stories). Debugging this is going to take some extra time but all great things take time and hopefully this turns out well."}, {"post_id": 19066, "ts": "2026-06-30T08:09:48Z", "hours": 1.2281, "text": "Currently on the website I am working on the outreach page of our team website. I am part of a FTC (FIRST Tech Challenge) team and I am coding this website for our team. This is going to be our second year and we want to share our knowledge from the past season to other rookie teams which is why we have created this website. I have added an Article Hub page which I will start to edit next once the outreach page is done. The article Hub contains articles for teams and viewers to read which have information that can help teams be successful during their season. The outreach page that I am working on right now contains an image carousel that I have the css styling for on a different page. I tried to create a version two but make it smaller and it worked but for some reason it doesn’t allow the div card with text show up. When I change images I can see the text show up and then vanish as it moves from one image to another. I tinkered with this for a while and I’m either going to have to re-create a new css styling class for the image carousel or shift it to the right. For some reason if I keep the carousel to the right with the text on the left it works perfectly but if do it the other way around it messes it up."}]...
|
Title: The Emerald Engineers Website by @Rizzingto Title: The Emerald Engineers Website by @Rizzington_I | Stardance
Devlogs:
Currently on the website I am working on the outreach page of our team website. I am part of a FTC (FIRST Tech Challenge) team and I am coding this website for our team. This is going to be our second year and we want to share our knowledge from the past season to other rookie teams which is why we have created this website. I have added an Article Hub page which I will start to edit next once the outreach page is done. The article Hub contains articles for teams and viewers to read which have information that can help teams be successful during their season. The outreach page that I am working on right now contains an image carousel that I have the css styling for on a different page. I tried to create a version two but make it smaller and it worked but for some reason it doesn’t allow the div card with text show up. When I change images I can see the text show up and then vanish as it moves from one image to another. I tinkered with this for a while and I’m either going to have to re-create a new css styling class for the image carousel or shift it to the right. For some reason if I keep the carousel to the right with the text on the left it works perfectly but if do it the other way around it messes it up.
So far this is what I have finished: The sidebar is complete but I may still have to add other pages The About Us, Meet the Team, Sponsor Us, Feedback, Mission Statement, and Outreach page are complete. Although some of them have placeholder images for the time being until I can dig up the right ones from my phone. The stuff that I am currently working on: I am working on the Article Hub page which is essentially a page that contains more pages. It has links to these small blog posts (articles) that could be useful for other robotics teams that participate in the upcoming season. The stuff that still hasn’t been touched: The robot page isn’t done and all the links to the blogs lead me to a blank white page. So I still have more work to do. Back to what I’m working on: In the article hub, for some reason the div cards that are links to their respective articles are placed correctly in my first section which is labeled latest releases. On the other hand in my second section (Hardware Articles), the cards don’t start in the same spot and for some reason the title of the Hardware Article is covered behind the scrolling container of the first section. By the way the article cards are div cards that are linked to the html blog pages as well as contain the title of the article, an image, the date, and what type of info is covered: (hardware, software, team management, exclusive stories). Debugging this is going to take some extra time but all great things take time and hopefully this turns out well.
The Article Hub page is complete with scrolling containers for differing categories that hold cards with the article title, date, article-class, as well as an image. These cards are linked to HTML pages that contain the actual article but those are yet to be updated. Now I’ve moved onto the robot page where I am going to insert information on our past season’s robot (ARC). I am currently trying to put in a 3D image visualizer where the user can drag around the see the image, which is going to be our robot. I’ve also added contact details that are linked onto the sidebar. One thing that was really annoying was formatting and making sure that the containers are all aligned because some of the scrolling containers overlapped into other categories and it looked really messy. Turns out in the end it was just one misplaced line between two css classes.
DevLog #5: Final Touches In this final Devlog I have spent countless hours touching up on final edits to make sure this project is ready to ship. It took a lot of configuring to get the site running up on GitHub pages and unfortunately because this website is a part of my team repository I cannot create it. DONT WORRY: I found a solution… Instead, I have put the website code into a new repository where I have admin access and I have added the link for the GitHub Pages! I hope you guys enjoy it and I’ll put the link here if you want to check it out. BTW: I reccomend taking a look at the Team Gallery and the Robot Page as I would consider those the fun parts of the site. LINK: https://rizzington-iii.github.io/FTC-Team-Website-32483/index.html Enjoy!
Ships:
I created a website for my team that has information about my team and who we are and what we do. Rather than just creating any other boring site I have designed a dynamic background that makes the site more interesting. Other than that I have also created a 3D visualizer where viewers can drag the image around and take a look at our robot from the past season at various angles. There is also a fun Team Gallery page with captions and funny moments from our season. The Meet the Team page shows us our members and who we are. The hardest part of making this website was the 3D visualizer and the dynamic background. Both elements require complex javascript which made it extremely hard to code. I spent almost half of my time dedicated just to both of those elements in this website just because of how much time it took to perfect it. For the visualizer I ended up taking over 72 photos to get everything at the right angle and compress all the images together with javascript in order to get the visualizer working. I put a lot of time into perfecting the small kinks here and there to make this site stand out so I hope you enjoy it!...
|
1793346567.9495358
|
1793432967.9495358
|
|
25825
|
My awesome macropad! by @KarthikB | Stardance
|
KarthikB
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @KarthikB | Stardan Title: My awesome macropad! by @KarthikB | Stardance...
|
1793346569.1449475
|
1793951369.1449475
|
|
55728
|
My own site! by @ayushsinghbhuranda | Stardance
|
ayushsinghbhuranda
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @ayushsinghbhuranda | Stard Title: My own site! by @ayushsinghbhuranda | Stardance...
|
1793346570.0809784
|
1793951370.0809784
|
|
38815
|
CountryGuessr by @anmol_bhat | Stardance
|
anmol_bhat
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T14:07:49Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Made a game about guessing countries inspired by others such as Globle and Geoguessr.", "repo": "https://github.com/Cod3rQwerty/CountryGuessr", "demo": "https://country-guessr-sandy.vercel.app/"}]...
|
[{"post_id": 78742, "ts": "202 [{"post_id": 78742, "ts": "2026-10-11T14:01:42Z", "hours": 4.6144, "text": "Devlog 5 - I Completed the Game Loop! I added a losing screen and also added a backend for the API. For the backend, I used Python with FastAPI because I used it before for a different project. All I needed to make was a proxy API for the API I used to get country data, so it didn’t take that long."}, {"post_id": 42691, "ts": "2026-08-07T15:28:33Z", "hours": 2.5019, "text": "Devlog 4 - Correct Answers So now, I added 2 of the things I said I was gonna fix in my previous devlog, a popup for when the user guesses the correct country, and filtering out duplicate hints. Duplicate Hints Filtering out duplicate hints was pretty easy, all I needed to do was make an array to store hints that were already used, USED_HINTS , and every time the user was given a hint, add the hint type, as defined here: const HINT_TYPES = { \" HARD \" : [ \" DRIVING-SIDE \" , // HARD hints give away the least info \" LANDLOCKED \" , \" CONTINENT \" , \" AREA \" , \" G20 \" , \" CURRENCY \" ], \" MEDIUM \" : [ \" BORDERS-3 \" , \" COUNTRY-FIRST-LETTER \" , \" LANGUAGES \" , \" POPULATION \" , \" GOVERNMENT-TYPE \" , \" CAPITAL-FIRST-LETTER \" ], \" EASY \" : [ // EASY hints give away the most info \" FLAG-DESC \" , \" CAPITAL \" , \" ALL-BORDERS \" ] } Then, I added a line to the generate_hints() function to not include any hints in USED_HINTS in the possible hints, here is that updated function: function generate_hints ( country_name ) { var generated = {} Object . entries ( HINT_TYPES ). forEach (( difficulty ) => { generated [ difficulty [ 0 ]] = {} difficulty [ 1 ]. forEach (( hint_type ) => { if ( ! USED_HINTS . includes ( hint_type )) { generated [ difficulty [ 0 ]][ hint_type ] = get_hint_text ( country_name , hint_type ) } else { // Hint already used so dont add it to possible hints } }) }) return generated ; } With this, a hint already given cannot be given again, improving the user experience. The Win Dialog I also made a dialog appear when the user guessed the correct country, at first I was gonna use a <div> for this, but I found out about an element in HTML called <dialog> which made things much easier, instead of having to center the div on the screen, and then position it so it was above everything else, etc, the dialog already handled all of that for me. Plus, it came with a handy ::backdrop selector for CSS, which allowed me to give the background of it a cool blur effect with: .win-dialog ::backdrop { background-color : rgba ( 15 , 23 , 42 , 0.5 ); backdrop-filter : blur ( 8px ); } I would’ve had to create a whole separate for the background if I had tried to do this with a div, so I’m glad I didn’t. As for the design of it, I chose to stay consistent with the website’s design of mostly black with a blue accent color. I also added the country’s flag because I just thought it looked nice. What I ended up with is in the screenshots, and I like how it looks, but it took me an hour to style lol Stuff I will (probably) add next devlog 1. A losing screen dialog Obviously, because I have a winning dialog, I should also make a losing dialog for when the player has more than 6 attempts, I will probably just make it look like the win dialog, but maybe with a red accent colour. 2. A backend endpoint for my api! So I also tried to get my project on GitHub, but then I realised my scripts.js file had a fetch() request which exposed my API key! Maybe after I make a losing screen, I will try to make a Netlify function or something so that I don’t give everyone my API key. 3. A better way to restart Right now, the Play Again button in the win dialog just reloads the page, which I think is kind of a hacky way of doing it, I will probably make a restart() function which resets all the variables and stuff but it will be very time consuming, so I’ll just put it off till later."}, {"post_id": 37270, "ts": "2026-07-29T21:01:08Z", "hours": 1.0853, "text": "Devlog 3 - FLAG-DESC So today I fixed the bug from earlier where the flag description wasnt working, basically sometimes in the description it would use the official name of the country, for example instead of just Afghanistan (which is its common name) the description would say Islamic Emirate of Afghanistan (which is its official name) there are also other examples where the name used in the description was neither its official name nor the common name, but it was one of the alternate names given by the API, so I had to include those as well in my filter. In the end, I made this function: function getSanitizedDescription ( countryName ) { const countryData = JSON . parse ( localStorage . getItem ( \" countryData \" ))[ countryName ]; if ( ! countryData ) return null ; // Combine all names into a single array cuz description name format is inconsistently weird const names = [ ...( countryData . names . alternates || []), countryData . names . official , countryData . names . common , ]. filter ( Boolean ); let description = countryData . flag . description ; for ( const name of names ) { description = description . replaceAll ( name , \" this country \" ); } return description ; } This works by firstly getting an array of all the names associated with the country provided in the API, and then testing the description against every single one of them until the country name is not in the description, and it returns the sanitized description. Stuff I need to Fix 1. Not allowing duplicate countries/hints Currently, if the user types the same country twice, the app allows them to, in theory I allow this (its not game breaking its just bad strategy) but I think it would be better if I didn’t let them. Whats more game-breaking, however, is duplicate hints, which are very annoying. I will probably fix this in the next devlog 2. Giving the user a message when they guess the right country Currently, the app just assumes you didn’t guess the correct country and never tells you if you guessed it right, which is not good game design! I will probably fix Bug #1 first before tackling this, as I’ll need to make and style a whole new popup for when the user wins, and program a restart, etc. Anyways, see you next devlog!"}, {"post_id": 35868, "ts": "2026-07-27T16:12:05Z", "hours": 3.6375, "text": "Devlog 2 - Hints! So over the last 2 days I added hints to the website, I did it by firstly making an object to store the different types of hints there can be, eg. BORDERS-3 would be 3 countries that this country borders, LANGUAGES are the languages this country speaks, etc. I grouped them by HARD , MEDIUM and EASY so that you get more obvious hints as you go on (easy is most obvious, hard is least obvious) I also made a massive 150 line function: get_hint_text(country_name, hint_type) which gets the hint text for a hint type and a country using a switch for every hint type (there’s probably a better way of doing this but I cba lol) Using this, I made another function: add_hint(country_name, hint_number, hint_type) which i can use to give the user a hint in JS. Issues Encountered There was largely no major issues - apart from one hint_type: FLAG-DESC. FLAG-DESC is simply a description of the flag of the country provided by the REST Countries API, however, the descriptions provided by the API have the country name in them, eg. The flag of Canada is composed of a red vertical band on the … which makes it pretty obvious what the answer is! To fix this, I initially simply replaced the name of the country to ‘this country’, which worked fine, unless for exceptions like DRC, where if I did that the FLAG-DESC would be: The flag of the Democratic Republic of the Congo has a sky-blue field with a … as the name of that country in the API is DRC . Similar things also happen with Afghanistan and Congo, where the name given in the description is different than that of the API. Targets for next Devlog: Fix the FLAG-DESC bug Give the user a hint every guess"}, {"post_id": 34775, "ts": "2026-07-25T19:21:22Z", "hours": 3.7022, "text": "Devlog 1 - The Start I made the UI with HTML and CSS, and made the Guess button add countries to the guessed list, which I’m pretty proud of for my first real web project. Tomorrow, I’ll probably add hints and polish the code a little more because its kinda messy. Cya tomorrow!"}]...
|
Title: CountryGuessr by @anmol_bhat | Stardance
D Title: CountryGuessr by @anmol_bhat | Stardance
Devlogs:
Devlog 1 - The Start I made the UI with HTML and CSS, and made the Guess button add countries to the guessed list, which I’m pretty proud of for my first real web project. Tomorrow, I’ll probably add hints and polish the code a little more because its kinda messy. Cya tomorrow!
Devlog 2 - Hints! So over the last 2 days I added hints to the website, I did it by firstly making an object to store the different types of hints there can be, eg. BORDERS-3 would be 3 countries that this country borders, LANGUAGES are the languages this country speaks, etc. I grouped them by HARD , MEDIUM and EASY so that you get more obvious hints as you go on (easy is most obvious, hard is least obvious) I also made a massive 150 line function: get_hint_text(country_name, hint_type) which gets the hint text for a hint type and a country using a switch for every hint type (there’s probably a better way of doing this but I cba lol) Using this, I made another function: add_hint(country_name, hint_number, hint_type) which i can use to give the user a hint in JS. Issues Encountered There was largely no major issues - apart from one hint_type: FLAG-DESC. FLAG-DESC is simply a description of the flag of the country provided by the REST Countries API, however, the descriptions provided by the API have the country name in them, eg. The flag of Canada is composed of a red vertical band on the … which makes it pretty obvious what the answer is! To fix this, I initially simply replaced the name of the country to ‘this country’, which worked fine, unless for exceptions like DRC, where if I did that the FLAG-DESC would be: The flag of the Democratic Republic of the Congo has a sky-blue field with a … as the name of that country in the API is DRC . Similar things also happen with Afghanistan and Congo, where the name given in the description is different than that of the API. Targets for next Devlog: Fix the FLAG-DESC bug Give the user a hint every guess
Devlog 3 - FLAG-DESC So today I fixed the bug from earlier where the flag description wasnt working, basically sometimes in the description it would use the official name of the country, for example instead of just Afghanistan (which is its common name) the description would say Islamic Emirate of Afghanistan (which is its official name) there are also other examples where the name used in the description was neither its official name nor the common name, but it was one of the alternate names given by the API, so I had to include those as well in my filter. In the end, I made this function: function getSanitizedDescription ( countryName ) { const countryData = JSON . parse ( localStorage . getItem ( " countryData " ))[ countryName ]; if ( ! countryData ) return null ; // Combine all names into a single array cuz description name format is inconsistently weird const names = [ ...( countryData . names . alternates || []), countryData . names . official , countryData . names . common , ]. filter ( Boolean ); let description = countryData . flag . description ; for ( const name of names ) { description = description . replaceAll ( name , " this country " ); } return description ; } This works by firstly getting an array of all the names associated with the country provided in the API, and then testing the description against every single one of them until the country name is not in the description, and it returns the sanitized description. Stuff I need to Fix 1. Not allowing duplicate countries/hints Currently, if the user types the same country twice, the app allows them to, in theory I allow this (its not game breaking its just bad strategy) but I think it would be better if I didn’t let them. Whats more game-breaking, however, is duplicate hints, which are very annoying. I will probably fix this in the next devlog 2. Giving the user a message when they guess the right country Currently, the app just assumes you didn’t guess the correct country and never tells you if you guessed it right, which is not good game design! I will probably fix Bug #1 first before tackling this, as I’ll need to make and style a whole new popup for when the user wins, and program a restart, etc. Anyways, see you next devlog!
Devlog 4 - Correct Answers So now, I added 2 of the things I said I was gonna fix in my previous devlog, a popup for when the user guesses the correct country, and filtering out duplicate hints. Duplicate Hints Filtering out duplicate hints was pretty easy, all I needed to do was make an array to store hints that were already used, USED_HINTS , and every time the user was given a hint, add the hint type, as defined here: const HINT_TYPES = { " HARD " : [ " DRIVING-SIDE " , // HARD hints give away the least info " LANDLOCKED " , " CONTINENT " , " AREA " , " G20 " , " CURRENCY " ], " MEDIUM " : [ " BORDERS-3 " , " COUNTRY-FIRST-LETTER " , " LANGUAGES " , " POPULATION " , " GOVERNMENT-TYPE " , " CAPITAL-FIRST-LETTER " ], " EASY " : [ // EASY hints give away the most info " FLAG-DESC " , " CAPITAL " , " ALL-BORDERS " ] } Then, I added a line to the generate_hints() function to not include any hints in USED_HINTS in the possible hints, here is that updated function: function generate_hints ( country_name ) { var generated = {} Object . entries ( HINT_TYPES ). forEach (( difficulty ) => { generated [ difficulty [ 0 ]] = {} difficulty [ 1 ]. forEach (( hint_type ) => { if ( ! USED_HINTS . includes ( hint_type )) { generated [ difficulty [ 0 ]][ hint_type ] = get_hint_text ( country_name , hint_type ) } else { // Hint already used so dont add it to possible hints } }) }) return generated ; } With this, a hint already given cannot be given again, improving the user experience. The Win Dialog I also made a dialog appear when the user guessed the correct country, at first I was gonna use a <div> for this, but I found out about an element in HTML called <dialog> which made things much easier, instead of having to center the div on the screen, and then position it so it was above everything else, etc, the dialog already handled all of that for me. Plus, it came with a handy ::backdrop selector for CSS, which allowed me to give the background of it a cool blur effect with: .win-dialog ::backdrop { background-color : rgba ( 15 , 23 , 42 , 0.5 ); backdrop-filter : blur ( 8px ); } I would’ve had to create a whole separate for the background if I had tried to do this with a div, so I’m glad I didn’t. As for the design of it, I chose to stay consistent with the website’s design of mostly black with a blue accent color. I also added the country’s flag because I just thought it looked nice. What I ended up with is in the screenshots, and I like how it looks, but it took me an hour to style lol Stuff I will (probably) add next devlog 1. A losing screen dialog Obviously, because I have a winning dialog, I should also make a losing dialog for when the player has more than 6 attempts, I will probably just make it look like the win dialog, but maybe with a red accent colour. 2. A backend endpoint for my api! So I also tried to get my project on GitHub, but then I realised my scripts.js file had a fetch() request which exposed my API key! Maybe after I make a losing screen, I will try to make a Netlify function or something so that I don’t give everyone my API key. 3. A better way to restart Right now, the Play Again button in the win dialog just reloads the page, which I think is kind of a hacky way of doing it, I will probably make a restart() function which resets all the variables and stuff but it will be very time consuming, so I’ll just put it off till later.
Devlog 5 - I Completed the Game Loop! I added a losing screen and also added a backend for the API. For the backend, I used Python with FastAPI because I used it before for a different project. All I needed to make was a proxy API for the API I used to get country data, so it didn’t take that long.
Ships:
Made a game about guessing countries inspired by others such as Globle and Geoguessr....
|
1793346571.027137
|
1793432971.027137
|
|
28637
|
NineTeen19 by @rushmore | Stardance
|
rushmore
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: NineTeen19 by @rushmore | Stardance
|
1793346572.2619367
|
1793951372.2619367
|
|
24801
|
chillrun by @Victoriia | Stardance
|
Victoriia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: chillrun by @Victoriia | Stardance
|
1793346573.1740484
|
1793951373.1740484
|
|
55729
|
Personal Website by @joteshkhatriweb | Stardance
|
joteshkhatriweb
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Personal Website by @joteshkhatriweb | Star Title: Personal Website by @joteshkhatriweb | Stardance...
|
1793346574.0867882
|
1793951374.0867882
|
|
22254
|
GeoSketch by @Roubos | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: GeoSketch by @Roubos | Stardance
|
1793346575.05138
|
1793951375.05138
|
|
38078
|
ISS OVERHEAD by @Gingembre | Stardance
|
Gingembre
|
1
|
18.0
|
172
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T14:39:20Z", "hours": 18.0, "multiplier": 9.72, "payout": 172, "blessing": "neutral", "text": "I made an app that tells users when the International Space Station flies over them. It contains a lot of cool features like it being able to tell how high the ISS will be in the sky during the next pass. I am proud of this project because it is my first application and I learned a lot coding it.", "repo": "https://github.com/Gingembre3005/ISS_Overhead", "demo": "https://github.com/Gingembre3005/ISS_Overhead/releases/tag/V1.0.0"}]...
|
[{"post_id": 70670, "ts": "202 [{"post_id": 70670, "ts": "2026-09-19T15:49:10Z", "hours": 6.3675, "text": "I have polished the app to get it ready for shipping. This means I completely reworked the UI by displaying numbers in a “Digital Clock” style and the text with a more space like font. You can see a fail I had when trying to display text with the “Digital Clock” font on the third picture : ). I also added notifications to let the user know when the ISS flies over him. And to top it off, now you can see the ISS crossing the background when you are on the app!"}, {"post_id": 65028, "ts": "2026-09-09T20:37:33Z", "hours": 3.325, "text": "In the last few days I have been working on getting the app to calculate at what time the ISS is going to fly over the user again. Now that this is done, I feel like all the core features are done. Do you maybe have an idea of a feature or something that would be interesting to see in the finished app? Let me know in the comments! I’d be more than happy to hear your ideas : )"}, {"post_id": 61754, "ts": "2026-09-04T20:14:05Z", "hours": 3.1083, "text": "My app is finally working! The main thing I want it to do is send the user a notification when the International Space Station flies over them. Right now it can tell the user if the ISS is in his field of view by calculating its position over the horizon. If the amount of degrees over the horizon is positive, then the user should be able to see the ISS (if we neglect the sunlight, weather and so on…)."}, {"post_id": 56838, "ts": "2026-08-28T19:45:11Z", "hours": 4.8992, "text": "This summer I started working on my first mobile app. Since I am very interested in astronomy, I decided to build an app that gives you a notification when the ISS flies over you. Right now I only have two windows, one of which is used to get the user’s location."}]...
|
Title: ISS OVERHEAD by @Gingembre | Stardance
Dev Title: ISS OVERHEAD by @Gingembre | Stardance
Devlogs:
This summer I started working on my first mobile app. Since I am very interested in astronomy, I decided to build an app that gives you a notification when the ISS flies over you. Right now I only have two windows, one of which is used to get the user’s location.
My app is finally working! The main thing I want it to do is send the user a notification when the International Space Station flies over them. Right now it can tell the user if the ISS is in his field of view by calculating its position over the horizon. If the amount of degrees over the horizon is positive, then the user should be able to see the ISS (if we neglect the sunlight, weather and so on…).
In the last few days I have been working on getting the app to calculate at what time the ISS is going to fly over the user again. Now that this is done, I feel like all the core features are done. Do you maybe have an idea of a feature or something that would be interesting to see in the finished app? Let me know in the comments! I’d be more than happy to hear your ideas : )
I have polished the app to get it ready for shipping. This means I completely reworked the UI by displaying numbers in a “Digital Clock” style and the text with a more space like font. You can see a fail I had when trying to display text with the “Digital Clock” font on the third picture : ). I also added notifications to let the user know when the ISS flies over him. And to top it off, now you can see the ISS crossing the background when you are on the app!
Ships:
I made an app that tells users when the International Space Station flies over them. It contains a lot of cool features like it being able to tell how high the ISS will be in the sky during the next pass. I am proud of this project because it is my first application and I learned a lot coding it....
|
1793346575.9582338
|
1793432975.9582338
|
|
55730
|
My very own WebOS by @mameabdi404 | Stardance
|
mameabdi404
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @mameabdi404 | Stardan Title: My very own WebOS by @mameabdi404 | Stardance...
|
1793346577.1957467
|
1793951377.1957467
|
|
24911
|
Untitled project by @freshdayyt | Stardance
|
freshdayyt
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @freshdayyt | Stardance
|
1793346578.0975862
|
1793951378.0975862
|
|
55731
|
My very own WebOS by @akshayraiii | Stardance
|
akshayraiii
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @akshayraiii | Stardan Title: My very own WebOS by @akshayraiii | Stardance...
|
1793346579.040684
|
1793951379.040684
|
|
31172
|
Untitled by @Ahmed-Tantawy | Stardance
|
Ahmed-Tantawy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Ahmed-Tantawy | Stardance
|
1793346580.0322883
|
1793951380.0322883
|
|
943
|
Project See The Voices Nepal's website by @Pas Project See The Voices Nepal's website by @Pasta | Stardance...
|
Pasta
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Project See The Voices Nepal's website Title: Project See The Voices Nepal's website by @Pasta | Stardance...
|
1793346580.9308236
|
1793951380.9308236
|
|
33989
|
delete this by @Ali-Kamal | Stardance
|
Ali-Kamal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: delete this by @Ali-Kamal | Stardance
|
1793346581.8848157
|
1793951381.8848157
|
|
55692
|
nephthys+ by @Devansh | Stardance
|
Devansh
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T16:29:28Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made nephthys+, a alternative to nephthys which has many more feautres. prometheus api integration support for custom macros, made in slack home page, not in code macros send with user name and pfp above integretures with taut client forward macro comming soon! to forward it to other help channels! hopefully will get this on a hackclub repo!", "repo": "https://github.com/aoishik/nephthys-plus", "demo": "https://hackclub.enterprise.slack.com/archives/C07TM4C0AQ5"}]...
|
[{"post_id": 72284, "ts": "202 [{"post_id": 72284, "ts": "2026-09-22T16:13:35Z", "hours": 1.5697, "text": "another big update! help now uses it, along with hackclub-ai-help . unfortunetley aoishik kidnaped the repo idk why but probably to auto deploy on push Anyways firstly we tried but failed to fix why slack mesage deleiton wasnt working. I also added integretion with taut, so now taut will show it as me sending it with small app icon instead of showing it from a app, it looks realy cool more updates to follow(or probably not, i have exams so ill ship now but updates will come after sd ends) Plan for future is to make it so that i can run ?forward #stardance-help to forward the ticket it would make much things easier And i will kidnap the wait time form unified help, and probaly get this on a hackclub repo! The picture shows a custom macro i made to redirect to stardance"}, {"post_id": 57096, "ts": "2026-08-29T06:01:54Z", "hours": 3.6097, "text": "i did a lot of stuf! made so that you can add macros on app homepage made it use the promethus api instead of a ws admin token! no ned to bother a ws admin now just ask evan! is safer too since only for one channel made macros use helper pfp cuz looks better"}]...
|
Title: nephthys+ by @Devansh | Stardance
Devlogs: Title: nephthys+ by @Devansh | Stardance
Devlogs:
i did a lot of stuf! made so that you can add macros on app homepage made it use the promethus api instead of a ws admin token! no ned to bother a ws admin now just ask evan! is safer too since only for one channel made macros use helper pfp cuz looks better
another big update! help now uses it, along with hackclub-ai-help . unfortunetley aoishik kidnaped the repo idk why but probably to auto deploy on push Anyways firstly we tried but failed to fix why slack mesage deleiton wasnt working. I also added integretion with taut, so now taut will show it as me sending it with small app icon instead of showing it from a app, it looks realy cool more updates to follow(or probably not, i have exams so ill ship now but updates will come after sd ends) Plan for future is to make it so that i can run ?forward #stardance-help to forward the ticket it would make much things easier And i will kidnap the wait time form unified help, and probaly get this on a hackclub repo! The picture shows a custom macro i made to redirect to stardance
Ships:
I made nephthys+, a alternative to nephthys which has many more feautres. prometheus api integration support for custom macros, made in slack home page, not in code macros send with user name and pfp above integretures with taut client forward macro comming soon! to forward it to other help channels! hopefully will get this on a hackclub repo!...
|
1793346582.7762473
|
1793432982.7762473
|
|
32783
|
Item Guardian for Bags by @Mr_Yoghurt | Stardance
|
Mr_Yoghurt
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Item Guardian for Bags by @Mr_Yoghurt | Sta Title: Item Guardian for Bags by @Mr_Yoghurt | Stardance...
|
1793346585.1857285
|
1793951385.1857285
|
|
55733
|
My awesome macropad! by @gkanapala | Stardance
|
gkanapala
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @gkanapala | Starda Title: My awesome macropad! by @gkanapala | Stardance...
|
1793346586.1014147
|
1793951386.1014147
|
|
55693
|
JARVIS by @caesium | Stardance
|
caesium
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T03:20:20Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I built JARVIS V4, a futuristic personal AI assistant with a JARVIS-style interface, voice interaction, AI capabilities, and system controls. What was challenging? Making the assistant fast and lightweight while creating a polished interface that could run smoothly on low-end hardware. What are you proud of? I’m proud that JARVIS V4 is a real working project built around my own setup, not just a visual concept. What should people know to test it?? Open the demo URL, click ACTIVATE, SLEEP, or DIAGNOSTICS, and explore the interface. The full source is available on GitHub…… **ALSO GUYSSS , U should have your Gemini and Groq API keys ready for this project . It requires those API keys . THANK YOU", "repo": "https://github.com/prototype-caesium/jarvis-v4", "demo": "https://prototype-caesium.github.io/JARVIS-V4/"}]...
|
[{"post_id": 72141, "ts": "202 [{"post_id": 72141, "ts": "2026-09-22T09:34:19Z", "hours": 1.0239, "text": "Holaaa guysss i am building an ir module through which my Jarvis can connect to my ac and tv and operate them with voice commands"}]...
|
Title: JARVIS by @caesium | Stardance
Devlogs:
Ho Title: JARVIS by @caesium | Stardance
Devlogs:
Holaaa guysss i am building an ir module through which my Jarvis can connect to my ac and tv and operate them with voice commands
Ships:
What did you make? I built JARVIS V4, a futuristic personal AI assistant with a JARVIS-style interface, voice interaction, AI capabilities, and system controls. What was challenging? Making the assistant fast and lightweight while creating a polished interface that could run smoothly on low-end hardware. What are you proud of? I’m proud that JARVIS V4 is a real working project built around my own setup, not just a visual concept. What should people know to test it?? Open the demo URL, click ACTIVATE, SLEEP, or DIAGNOSTICS, and explore the interface. The full source is available on GitHub…… **ALSO GUYSSS , U should have your Gemini and Groq API keys ready for this project . It requires those API keys . THANK YOU...
|
1793346589.026562
|
1793432989.026562
|