|
69058
|
Parallax by @rishaansd | Stardance
|
rishaansd
|
1
|
28.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T04:25:39Z", "hours": 28.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Parallax Physics Tutor Parallax is a physics tutor for students interested in learning the AP Physics 1 curriculum. The app uses a gamified approach, including a simulator to learn projectile motion and a boss battle at the end of the unit, to make physics an enjoyable science class. The app currently has the first unit of AP Physics 1: Kinematics. Use the app You can play it at https://parallax-physics.vercel.app/ You can watch the DEMO video at https://www.youtube.com/watch?v=TFTet9wMoyI Why I built it I am a student interested in the STEM field. One class I hope to take is AP Physics C. In order to prepare for AP Physics C, I decided to take the AP Physics 1 course. A major gap I noticed in learning AP Physics 1 is the passive lessons from traditional textbooks and online courses. I often find myself reading long textbook chapters or watching several videos, leaving me bored with physics. I know that physics can involve simulations and labs, so I wanted to focus on the fun aspects of physics while still letting students prepare for the AP Physics 1 exam efficiently. Features Galaxy map: All of the lessons, including the final boss battle, are organized into a galaxy map. The map is shaped in a parabola, like a projectile’s path. 5 lessons: Each lesson is structured with multiple cards: a hook, concept, check questions, and a lesson summary. Some lessons have more concept and check cards than others. Students earn stars depending on the number of mistakes they make on the check cards. A student can earn a minimum of 1 star and a maximum of 3 stars on a completed lesson. Progression and high scores: Once the user completes a lesson and returns to the home screen, their highest number of stars for that lesson is displayed below the lesson button. This encourages students to redo lessons and review concepts in order to get a perfect star score. The lesson then unlocks the next lesson and lights up the path to it. Projectile simulator: Once a student unlocks lesson 1.5, they gain access to the simulator for projectile motion. They can use the simulator to experiment with different angles and speeds of a projectile to see how it affects the path the projectile takes. Boss battle: The boss battle unlocks after all 5 lessons are completed. Each correct answer earns one shot at the boss, and the student has to set the speed and angle of the projectile to hit the boss. A player defeats the boss when it is hit 10 times. The player can also have a highscore on the boss by answering questions 3 in a row and avoiding mistakes! Saved progress: The user’s stars are saved in their device’s browser. It will continue to stay saved as long as the user uses the exact same device. (This is also a next step!) Biggest challenge The biggest challenge I faced was completing the animation for the projectile motion simulator. My first attempt was to use a for loop that incremented time by 1 every time to keep the ball moving. But when it ran, the ball teleported to the end of the screen. I learned that JavaScript has a function called requestAnimationFrame which continues making a chain until requestAnimationFrame is not called. When I called requestAnimationFrame(drawFrame());, the page crashed with the error “Maximum call stack size exceeded” because drawFrame called itself instantly, forever. I learned that functions can be called in one of two ways: with parentheses, which run them instantly, or without parentheses, so another function calls them only at a certain time. Next, when I pressed the “fire” button two times, the speed doubled, because there was no condition to stop the chain after the projectile hit the ground. To fix this, I only allowed a call for the next frame when the ball was flying. What’s next The remain 7 units of AP Physics 1, user accounts on Supabase, and an AI tutor that gives hints instead of answers.", "repo": "https://github.com/Rishaan-Dukhande/parallax-physics", "demo": "https://parallax-physics.vercel.app/"}]...
|
[{"post_id": 82878, "ts": "202 [{"post_id": 82878, "ts": "2026-10-26T04:17:21Z", "hours": 3.1544, "text": "#I finished Parallax! Oct 25, 2026 - Day 20! Today, I focused on some finishing touches. I added SVG lines to connect all the lesson nodes in the home galaxy. A completed lesson draws a solid cyan line towards the next lesson. Incomplete lessons have a faded dashed line connection between them. The lines connect in a parabolic shape. I also completed the README and made a video to showcase my project! Key Learnings: To draw lines using SVG, you need to use the createElementNS(ns, “object(usually line)”) function. Then, you can set attributes for the (x1, y1) and (x2,y2) coordinates to draw a line. AI usage: I used AI to help me understand concepts when I got stuck for over 5 minutes on a topic and test my code. I used AI to teach me the concept, then I coded everything by myself and asked for feedback on the code to improve it. In this session, I had AI help with some CSS and explaining the createElementNS concept."}, {"post_id": 82531, "ts": "2026-10-25T04:36:58Z", "hours": 7.2194, "text": "Almost Complete! Summary In the last 3 days, I finished the projectile motion simulator and added sliders, created a boss battle at the end of the unit, and created a home screen with lessons in a parabola galaxy The projectile motion simulator has two sliders — angle and speed — which a user can use to change the motion of a projectile. This was moved to lesson 1.5, the lesson about motion in 2-Dimensions, and allows users to learn through experimentation The boss battle uses questions from all the lessons. Once a user answers a question correctly, they get a chance to use the same projectile motion simulator to hit the boss. If they are within 25px of the boss, the boss loses 1hp. If the user answers a question incorrectly, they lose a life. At the end, the user either completes Unit 1 or has to try again. I plan to add several units in the future, following the AP Physics 1 layout, where defeating a boss will create a new unit Throughout the project, I also had to write several CSS classes myself! You can read the DEVLOG for more info on the project! Key Learnings: Oct 22, 2026 When you use a for each loop to create elements, if you set any characteristics of one singular element, then it will only save the characteristics of the last time it was set to different values Spelling mistakes are common. A way to avoid this is to use autocomplete by pressing tab on the computer. This will autocomplete a variable name without any misspellings Functions should do basic tasks. The home button should just set up the screen. The event handlers are created for changing things ONLY after a lesson has been selected. At first, I merged everything into the home function, so it would display the second lesson and overwrite the first lesson. This means that the user is forced into the second lesson without a choice. (Second lesson was the last lesson currently developed) Oct 23, 2026 I forgot to use appendChild() to add all elements to the app. This is a reminder to use replaceChildren to empty a screen and appendChild() to add an element to the screen If you use two different variables to refer to the same button or element, and add an event listener to the different variables, there are multiple event listeners happening at once. This means that there should be only one event listener for every button, and you don’t call an event listener because it is a function that automatically runs when there is a “click” (the chosen input) Buttons should be set in a specific state when entering a screen, not at the top of a file where they are constantly enabled or disabled. This will make buttons not function properly Oct 24, 2026 I needed both the simulator.js and main.js files to check the same app element. I learned that we can use getElementById separately in both files to get and change the same element I practiced using export and import between the simulator.js and main.js files. I exported drawScene() and hitCount and imported them into main.js so that main.js can call the simulator Since main.js can’t change the hitCount in simulator.js but only see it, I used what a car odometer uses as well. I first find the number of hits the player has made and subtract it from the 10hp the boss starts with to display the boss’s health throughout the boss battle To check if an element has a class, you can use classList.contains() I had originally made the question list a local variable in showBossQuestion(). This was a problem because every single time the user presses the nextQuestionButton, a new question should be displayed. To fix this, I made the questions list a global variable AI usage: used AI to help me understand concepts when I got stuck for over 5 minutes on a topic and test my code. I used AI to teach me the concept, then I coded everything by myself and asked for feedback on the code to improve it. AI was used to test the app and write lessons 1.3-1.5"}, {"post_id": 81716, "ts": "2026-10-22T06:31:30Z", "hours": 4.0947, "text": "Projectile motion simulator + lesson template Summary: Over the course of the last 3-4 days, I created a projectile motion simulation where the user can control speed and angle of the projectile. The code uses real kinematic equations to solve for the new position of the projectile given time. This then maps to a mapCanvas(t) function that allows the equations to give the coordinates for a working website and canvas HTML element. Finally, I created a drawFrame() function to actually paint the simulation so that it looks like the projectile is consistently moving to human eyes. Intro to Challenges: There were many bugs along the way. This included learning curves such as learning the requestAnimationFrame() function, making sliders, and even writing some part of CSS ! Oct 18, 2026 - Day 13, 1. One important concept is that the canvas starts (0,0) from the top left corner of the grid, so subtracting y actually makes an object/line move upward. 2. I learned to use the function beginPath() to create a new drawing object. Without using beginPath(), an drawing connects a the previous drawing to the new drawing with a line. Additionally, the fill() function needs to be used to actually draw a point. 3. I learned that css uses different punctuation for different rules: selector (plain word) - looks for elements with tag .selector - looks for elements whose classes list contains the word #selector - looks for the element with the ID :selector - does the css action only while it is in the state 4. You can test with console.log. To open it on a website/app screen, you can use CMD+OPT+J Oct 19, 2026 - Day 14, In javaScript, when a function is called with parentheses: drawFrame(), it runs immediately. When a function is just called by its name, it runs when another function tells it to: requestAnimationFrame(drawFrame) (no parentheses)! 2. I forgot to use the fill() function again. fill() is important because it actually “paints” the drawing. Oct 20, 2026 - Day 15, I got confused that y increases to make a drawing go downwards. This caused me to write the falling logic incorrectly. I switched the case where falling = true with falling = false. After making the falling variable, I wasn’t using it in any way. The falling variable also needed to be used in the eventHandler for the launch button to make sure that multiple cycles of drawFrame() weren’t running at the same time: a. When drawFrame() is run several times, it causes the speed to increase by n times as much if n represents the number of times you click the launch button To fix this, I used the falling variable in the EventHandler. I decided that it is easier to just not do anything if the button is in mid-flight and the user wants to re-launch the ball/projectile. Oct 21, 2026 - Day 16, Sliders are There are two events possible to use in an event listener (of a slider): a. “input” - a live update. The event triggers continously while a slider is being dragged b. “change” - only triggers and runs the event listener when you let go of the element (slider). This prevents changing while you are holding the slider Sliders don’t have a closing tag. They don’t have . This means that textContent can’t be used on sliders because they are not containers. Therfore, there has to be a new variable to act as the label for the slider element (or any input element for that matter) Span is inline, div begins on the next line Inner workings of requestAnimationFrame() - when this function is called, it let’s the function end and immediately return to where it was called. It then continues until it reaches the end of the code in the file. The requestAnimationFrame() just tells the compiler to call the function again AFTER everything ran. This was important because it was the reason the disabling of the sliders was not working."}, {"post_id": 80582, "ts": "2026-10-18T06:21:27Z", "hours": 1.5964, "text": "Creating an answerCheck function and progress.js file to save lesson stars Summary: Today, I first deployed the app on vercel! Then, I created progress.js; This file has a function to loadProgress() and saveStars(). Finally, I added function calls to main.js to use the functions in the functionality of the app. AI usage: used AI to help me understand concepts when I got stuck for over 5 minutes on a topic and test my code. In this specific session, I had a lot of obstacles, especially with learning new javascript functions and syntax. There were 6 attempts just to solve the progress.js page, and AI helped me understand javascript better, as shown in the key learnings below. Key Learnings: 1. You need to use the \"export\" keyword so that a function in one page can be used by other files 2. In javaScript, you don't have to manually create tables/lists like how you use the \"new\" keyword in java. If you say scores[\"math\"] = 60 and math does not exist, then it will create a new row called \"math\" in the table and assign the value of 60 to the key. 3. Through 6 attempts, I learned a lot of Java Script syntax features: a. A dot is used to get an attribute in javascript, something that belongs to an object. However, tables in javascript use brackets just like lists: table[]; b. You can save a whole table using .setItem(key, value). Remember that the value has to be a string. We can use .stringify(obj) for this. c. Javascript has two error words: null and undefined. Null happens from an intentionally missing object. For example, when an object has been declared but is empty. Undefined, by contrast, is used when the object has never been created and their is no instance of it. d. Extra JavaScript functions are as follows: i. stringify --> turn an object into a string ii. parse --> turn a string back into an object iii. setItem --> changes the item in a table iv. getItem --> gets the item currently in a table 4. If you need to import multiple things from the same page/file, you can use a comma in the import instead of using multiple lines. Next Steps: I am going to create an interactive projectile simulator!"}, {"post_id": 80089, "ts": "2026-10-16T06:13:45Z", "hours": 1.0003, "text": "Mini-quiz completion and Stars! Summary Today, I finished the mini-quiz in the first lesson. I have included colors to indicate wrong and write answers (that comes from the css) and I created 4 buttons that are clickable and display the answer choices. Additionally, I added stars to the lesson to act as the lesson score. This depends on their score on the lesson quiz. Key Learnings: When I gave the buttons the choice–correct or choice–wrong class, they now had a class and a property of disabled. The property for disabled buttons in CSS is button:disabled, which is more specific than just the .choice-correct class. This makes the CSS default to the rules in the button:disabled property, which dims the opacity. To fix this, I hand-coded a third class that works with both properties to keep the buttons fully highlighted in a color to indicate wrong and right. You can use the “”.repeat(n) function to repeat any string in the quotation marks n times in a row. Remember: It is easy to get confused with spelling. The property is .disabled (past tense). This should also be used in correct ways. It is important to think about when something should or shouldn’t be disabled (common mistake today). Next Steps: Now that I have developed one whole lesson, I will use the same code to develop a total of 5 lessons to cover Unit 1: Kinematics of the AP Physics 1 curriculum. Then, I will create a home screen. If I have time, I will make the first-ever deployment to Vercel and see the app in action! AI usage (if your interested) AI usage: I used AI to help me understand concepts when I got stuck for over 5 minutes on a topic. I always try to write code myself, but I learn the concept I am struggling with after using AI."}, {"post_id": 79716, "ts": "2026-10-15T06:19:45Z", "hours": 0.9108, "text": "Day 9 - Creating the first lesson + quiz Today, I created the official first lesson of parallax. The first lesson follows the AP Physics 1 college curriculum. This starts with the Kinematics Unit. The first topic covered in the unit is Scalars and Vectors. Learned: 1. Today I learned that we use the === operator to check if both the datatype and value of two variables being compared is the exact same. 2. I also learned that when creating elements in a .js file, you can name elements anything, such as questionText instead of “p”. It is important to do this so that the compiler/program does not crash because only one const element can have the same name. 3. I learned that there is a hidden property that works on elements such as div. This is just like how disabled works on buttons! 4. I learned the syntax of a forEach loop: element.forEach((element, index) => {}); AI usage: After writing my first draft of the lesson code and checking the mini-quiz inside the first lesson, I had multiple errors. I used AI to explain the errors, which are documented in the key learning above. Additionally, I used AI to verify the code and test the app itself with its capabilities."}, {"post_id": 79477, "ts": "2026-10-14T06:26:48Z", "hours": 0.51, "text": "Make the App look good! Today, I added a stylesheet (made by AI) to make my app look more modern and appealing. Since I am coding the structure of the app, this is ok. Along the way, I learned how to incorporate CSS as classes in both HTML and JavaScript. I also learned that JavaScript uses the classListadd method to add classes, while HTML is just a direct type-in. I am hoping to learn more CSS in the process. My next step is to add new components such as a sidebar and more interactive features."}, {"post_id": 79255, "ts": "2026-10-13T06:39:14Z", "hours": 9.2656, "text": "Home screen + Learning React/HTML For the first few hours of the project, I spent directing AI on how to create an amazing AI tutor. However, I decided to restart from scratch to create an app that is self-coded. I worked on the new app from scratch for 2 hours, and I was able to create one lesson. I focused on the lesson structure and added a start, next, and back button. I am planning to focus on the structure of the app before appealing to aesthetics."}]...
|
Title: Parallax by @rishaansd | Stardance
Devlogs Title: Parallax by @rishaansd | Stardance
Devlogs:
Home screen + Learning React/HTML For the first few hours of the project, I spent directing AI on how to create an amazing AI tutor. However, I decided to restart from scratch to create an app that is self-coded. I worked on the new app from scratch for 2 hours, and I was able to create one lesson. I focused on the lesson structure and added a start, next, and back button. I am planning to focus on the structure of the app before appealing to aesthetics.
Make the App look good! Today, I added a stylesheet (made by AI) to make my app look more modern and appealing. Since I am coding the structure of the app, this is ok. Along the way, I learned how to incorporate CSS as classes in both HTML and JavaScript. I also learned that JavaScript uses the classListadd method to add classes, while HTML is just a direct type-in. I am hoping to learn more CSS in the process. My next step is to add new components such as a sidebar and more interactive features.
Day 9 - Creating the first lesson + quiz Today, I created the official first lesson of parallax. The first lesson follows the AP Physics 1 college curriculum. This starts with the Kinematics Unit. The first topic covered in the unit is Scalars and Vectors. Learned: 1. Today I learned that we use the === operator to check if both the datatype and value of two variables being compared is the exact same. 2. I also learned that when creating elements in a .js file, you can name elements anything, such as questionText instead of “p”. It is important to do this so that the compiler/program does not crash because only one const element can have the same name. 3. I learned that there is a hidden property that works on elements such as div. This is just like how disabled works on buttons! 4. I learned the syntax of a forEach loop: element.forEach((element, index) => {}); AI usage: After writing my first draft of the lesson code and checking the mini-quiz inside the first lesson, I had multiple errors. I used AI to explain the errors, which are documented in the key learning above. Additionally, I used AI to verify the code and test the app itself with its capabilities.
Mini-quiz completion and Stars! Summary Today, I finished the mini-quiz in the first lesson. I have included colors to indicate wrong and write answers (that comes from the css) and I created 4 buttons that are clickable and display the answer choices. Additionally, I added stars to the lesson to act as the lesson score. This depends on their score on the lesson quiz. Key Learnings: When I gave the buttons the choice–correct or choice–wrong class, they now had a class and a property of disabled. The property for disabled buttons in CSS is button:disabled, which is more specific than just the .choice-correct class. This makes the CSS default to the rules in the button:disabled property, which dims the opacity. To fix this, I hand-coded a third class that works with both properties to keep the buttons fully highlighted in a color to indicate wrong and right. You can use the “”.repeat(n) function to repeat any string in the quotation marks n times in a row. Remember: It is easy to get confused with spelling. The property is .disabled (past tense). This should also be used in correct ways. It is important to think about when something should or shouldn’t be disabled (common mistake today). Next Steps: Now that I have developed one whole lesson, I will use the same code to develop a total of 5 lessons to cover Unit 1: Kinematics of the AP Physics 1 curriculum. Then, I will create a home screen. If I have time, I will make the first-ever deployment to Vercel and see the app in action! AI usage (if your interested) AI usage: I used AI to help me understand concepts when I got stuck for over 5 minutes on a topic. I always try to write code myself, but I learn the concept I am struggling with after using AI.
Creating an answerCheck function and progress.js file to save lesson stars Summary: Today, I first deployed the app on vercel! Then, I created progress.js; This file has a function to loadProgress() and saveStars(). Finally, I added function calls to main.js to use the functions in the functionality of the app. AI usage: used AI to help me understand concepts when I got stuck for over 5 minutes on a topic and test my code. In this specific session, I had a lot of obstacles, especially with learning new javascript functions and syntax. There were 6 attempts just to solve the progress.js page, and AI helped me understand javascript better, as shown in the key learnings below. Key Learnings: 1. You need to use the "export" keyword so that a function in one page can be used by other files 2. In javaScript, you don't have to manually create tables/lists like how you use the "new" keyword in java. If you say scores["math"] = 60 and math does not exist, then it will create a new row called "math" in the table and assign the value of 60 to the key. 3. Through 6 attempts, I learned a lot of Java Script syntax features: a. A dot is used to get an attribute in javascript, something that belongs to an object. However, tables in javascript use brackets just like lists: table[]; b. You can save a whole table using .setItem(key, value). Remember that the value has to be a string. We can use .stringify(obj) for this. c. Javascript has two error words: null and undefined. Null happens from an intentionally missing object. For example, when an object has been declared but is empty. Undefined, by contrast, is used when the object has never been created and their is no instance of it. d. Extra JavaScript functions are as follows: i. stringify --> turn an object into a string ii. parse --> turn a string back into an object iii. setItem --> changes the item in a table iv. getItem --> gets the item currently in a table 4. If you need to import multiple things from the same page/file, you can use a comma in the import instead of using multiple lines. Next Steps: I am going to create an interactive projectile simulator!
Projectile motion simulator + lesson template Summary: Over the course of the last 3-4 days, I created a projectile motion simulation where the user can control speed and angle of the projectile. The code uses real kinematic equations to solve for the new position of the projectile given time. This then maps to a mapCanvas(t) function that allows the equations to give the coordinates for a working website and canvas HTML element. Finally, I created a drawFrame() function to actually paint the simulation so that it looks like the projectile is consistently moving to human eyes. Intro to Challenges: There were many bugs along the way. This included learning curves such as learning the requestAnimationFrame() function, making sliders, and even writing some part of CSS ! Oct 18, 2026 - Day 13, 1. One important concept is that the canvas starts (0,0) from the top left corner of the grid, so subtracting y actually makes an object/line move upward. 2. I learned to use the function beginPath() to create a new drawing object. Without using beginPath(), an drawing connects a the previous drawing to the new drawing with a line. Additionally, the fill() function needs to be used to actually draw a point. 3. I learned that css uses different punctuation for different rules: selector (plain word) - looks for elements with tag .selector - looks for elements whose classes list contains the word #selector - looks for the element with the ID :selector - does the css action only while it is in the state 4. You can test with console.log. To open it on a website/app screen, you can use CMD+OPT+J Oct 19, 2026 - Day 14, In javaScript, when a function is called with parentheses: drawFrame(), it runs immediately. When a function is just called by its name, it runs when another function tells it to: requestAnimationFrame(drawFrame) (no parentheses)! 2. I forgot to use the fill() function again. fill() is important because it actually “paints” the drawing. Oct 20, 2026 - Day 15, I got confused that y increases to make a drawing go downwards. This caused me to write the falling logic incorrectly. I switched the case where falling = true with falling = false. After making the falling variable, I wasn’t using it in any way. The falling variable also needed to be used in the eventHandler for the launch button to make sure that multiple cycles of drawFrame() weren’t running at the same time: a. When drawFrame() is run several times, it causes the speed to increase by n times as much if n represents the number of times you click the launch button To fix this, I used the falling variable in the EventHandler. I decided that it is easier to just not do anything if the button is in mid-flight and the user wants to re-launch the ball/projectile. Oct 21, 2026 - Day 16, Sliders are There are two events possible to use in an event listener (of a slider): a. “input” - a live update. The event triggers continously while a slider is being dragged b. “change” - only triggers and runs the event listener when you let go of the element (slider). This prevents changing while you are holding the slider Sliders don’t have a closing tag. They don’t have . This means that textContent can’t be used on sliders because they are not containers. Therfore, there has to be a new variable to act as the label for the slider element (or any input element for that matter) Span is inline, div begins on the next line Inner workings of requestAnimationFrame() - when this function is called, it let’s the function end and immediately return to where it was called. It then continues until it reaches the end of the code in the file. The requestAnimationFrame() just tells the compiler to call the function again AFTER everything ran. This was important because it was the reason the disabling of the sliders was not working.
Almost Complete! Summary In the last 3 days, I finished the projectile motion simulator and added sliders, created a boss battle at the end of the unit, and created a home screen with lessons in a parabola galaxy The projectile motion simulator has two sliders — angle and speed — which a user can use to change the motion of a projectile. This was moved to lesson 1.5, the lesson about motion in 2-Dimensions, and allows users to learn through experimentation The boss battle uses questions from all the lessons. Once a user answers a question correctly, they get a chance to use the same projectile motion simulator to hit the boss. If they are within 25px of the boss, the boss loses 1hp. If the user answers a question incorrectly, they lose a life. At the end, the user either completes Unit 1 or has to try again. I plan to add several units in the future, following the AP Physics 1 layout, where defeating a boss will create a new unit Throughout the project, I also had to write several CSS classes myself! You can read the DEVLOG for more info on the project! Key Learnings: Oct 22, 2026 When you use a for each loop to create elements, if you set any characteristics of one singular element, then it will only save the characteristics of the last time it was set to different values Spelling mistakes are common. A way to avoid this is to use autocomplete by pressing tab on the computer. This will autocomplete a variable name without any misspellings Functions should do basic tasks. The home button should just set up the screen. The event handlers are created for changing things ONLY after a lesson has been selected. At first, I merged everything into the home function, so it would display the second lesson and overwrite the first lesson. This means that the user is forced into the second lesson without a choice. (Second lesson was the last lesson currently developed) Oct 23, 2026 I forgot to use appendChild() to add all elements to the app. This is a reminder to use replaceChildren to empty a screen and appendChild() to add an element to the screen If you use two different variables to refer to the same button or element, and add an event listener to the different variables, there are multiple event listeners happening at once. This means that there should be only one event listener for every button, and you don’t call an event listener because it is a function that automatically runs when there is a “click” (the chosen input) Buttons should be set in a specific state when entering a screen, not at the top of a file where they are constantly enabled or disabled. This will make buttons not function properly Oct 24, 2026 I needed both the simulator.js and main.js files to check the same app element. I learned that we can use getElementById separately in both files to get and change the same element I practiced using export and import between the simulator.js and main.js files. I exported drawScene() and hitCount and imported them into main.js so that main.js can call the simulator Since main.js can’t change the hitCount in simulator.js but only see it, I used what a car odometer uses as well. I first find the number of hits the player has made and subtract it from the 10hp the boss starts with to display the boss’s health throughout the boss battle To check if an element has a class, you can use classList.contains() I had originally made the question list a local variable in showBossQuestion(). This was a problem because every single time the user presses the nextQuestionButton, a new question should be displayed. To fix this, I made the questions list a global variable AI usage: used AI to help me understand concepts when I got stuck for over 5 minutes on a topic and test my code. I used AI to teach me the concept, then I coded everything by myself and asked for feedback on the code to improve it. AI was used to test the app and write lessons 1.3-1.5
#I finished Parallax! Oct 25, 2026 - Day 20! Today, I focused on some finishing touches. I added SVG lines to connect all the lesson nodes in the home galaxy. A completed lesson draws a solid cyan line towards the next lesson. Incomplete lessons have a faded dashed line connection between them. The lines connect in a parabolic shape. I also completed the README and made a video to showcase my project! Key Learnings: To draw lines using SVG, you need to use the createElementNS(ns, “object(usually line)”) function. Then, you can set attributes for the (x1, y1) and (x2,y2) coordinates to draw a line. AI usage: I used AI to help me understand concepts when I got stuck for over 5 minutes on a topic and test my code. I used AI to teach me the concept, then I coded everything by myself and asked for feedback on the code to improve it. In this session, I had AI help with some CSS and explaining the createElementNS concept.
Ships:
Parallax Physics Tutor Parallax is a physics tutor for students interested in learning the AP Physics 1 curriculum. The app uses a gamified approach, including a simulator to learn projectile motion and a boss battle at the end of the unit, to make physics an enjoyable science class. The app currently has the first unit of AP Physics 1: Kinematics. Use the app You can play it at https://parallax-physics.vercel.app/ You can watch the DEMO video at https://www.youtube.com/watch?v=TFTet9wMoyI Why I built it I am a student interested in the STEM field. One class I hope to take is AP Physics C. In order to prepare for AP Physics C, I decided to take the AP Physics 1 course. A major gap I noticed in learning AP Physics 1 is the passive lessons from traditional textbooks and online courses. I often find myself reading long textbook chapters or watching several videos, leaving me bored with physics. I know that physics can involve simulations and labs, so I wanted to focus on the fun aspects of physics while still letting students prepare for the AP Physics 1 exam efficiently. Features Galaxy map: All of the lessons, including the final boss battle, are organized into a galaxy map. The map is shaped in a parabola, like a projectile’s path. 5 lessons: Each lesson is structured with multiple cards: a hook, concept, check questions, and a lesson summary. Some lessons have more concept and check cards than others. Students earn stars depending on the number of mistakes they make on the check cards. A student can earn a minimum of 1 star and a maximum of 3 stars on a completed lesson. Progression and high scores: Once the user completes a lesson and returns to the home screen, their highest number of stars for that lesson is displayed below the lesson button. This encourages students to redo lessons and review concepts in order to get a perfect star score. The lesson then unlocks the next lesson and lights up the path to it. Projectile simulator: Once a student unlocks lesson 1.5, they gain access to the simulator for projectile motion. They can use the simulator to experiment with different angles and speeds of a projectile to see how it affects the path the projectile takes. Boss battle: The boss battle unlocks after all 5 lessons are completed. Each correct answer earns one shot at the boss, and the student has to set the speed and angle of the projectile to hit the boss. A player defeats the boss when it is hit 10 times. The player can also have a highscore on the boss by answering questions 3 in a row and avoiding mistakes! Saved progress: The user’s stars are saved in their device’s browser. It will continue to stay saved as long as the user uses the exact same device. (This is also a next step!) Biggest challenge The biggest challenge I faced was completing the animation for the projectile motion simulator. My first attempt was to use a for loop that incremented time by 1 every time to keep the ball moving. But when it ran, the ball teleported to the end of the screen. I learned that JavaScript has a function called requestAnimationFrame which continues making a chain until requestAnimationFrame is not called. When I called requestAnimationFrame(drawFrame());, the page crashed with the error “Maximum call stack size exceeded” because drawFrame called itself instantly, forever. I learned that functions can be called in one of two ways: with parentheses, which run them instantly, or without parentheses, so another function calls them only at a certain time. Next, when I pressed the “fire” button two times, the speed doubled, because there was no condition to stop the chain after the projectile hit the ground. To fix this, I only allowed a call for the next frame when the ball was flying. What’s next The remain 7 units of AP Physics 1, user accounts on Supabase, and an AI tutor that gives hints instead of answers....
|
1793130493.1940725
|
1793216893.1940725
|
|
69059
|
My personal site! by @sisuisthebest | Stardance
|
sisuisthebest
|
0
|
1.75
|
0
|
[]
|
[{"post_id": 78529, "ts": "202 [{"post_id": 78529, "ts": "2026-10-11T03:29:57Z", "hours": 1.7531, "text": "Added simple home page and music recommendations, as well as some css files for styling."}]...
|
Title: My personal site! by @sisuisthebest | Stard Title: My personal site! by @sisuisthebest | Stardance
Devlogs:
Added simple home page and music recommendations, as well as some css files for styling....
|
1793130494.412919
|
1793735294.412919
|
|
69060
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874854.4602935
|
1793738854.4602935
|
|
69061
|
playground by @buraibenceb2026 | Stardance
|
buraibenceb2026
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: playground by @buraibenceb2026 | Stardance
|
1793130495.29424
|
1793735295.29424
|
|
69062
|
InvertedPendulumBalancer by @evanreittinger | Star InvertedPendulumBalancer by @evanreittinger | Stardance...
|
evanreittinger
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: InvertedPendulumBalancer by @evanreittinger Title: InvertedPendulumBalancer by @evanreittinger | Stardance...
|
1793130499.9675899
|
1793735299.9675899
|
|
69063
|
CyberDeck by @Grant19 | Stardance
|
Grant19
|
0
|
1.38
|
0
|
[]
|
[{"post_id": 78922, "ts": "202 [{"post_id": 78922, "ts": "2026-10-12T01:53:57Z", "hours": 0.5167, "text": "Lots of modeling, and planning, still looking for feedback, ideas welcome. This is what im thinking Right now"}, {"post_id": 78506, "ts": "2026-10-11T00:51:43Z", "hours": 0.8667, "text": "Started my Cyberdeck! Did part of the 3d model, if anyone has ideas for software for it or ideas message feel free to comment (I also planned and brainstormed, it didnt take me an hour to model just that)"}]...
|
Title: CyberDeck by @Grant19 | Stardance
Devlogs: Title: CyberDeck by @Grant19 | Stardance
Devlogs:
Started my Cyberdeck! Did part of the 3d model, if anyone has ideas for software for it or ideas message feel free to comment (I also planned and brainstormed, it didnt take me an hour to model just that)
Lots of modeling, and planning, still looking for feedback, ideas welcome. This is what im thinking Right now...
|
1793130500.8118684
|
1793735300.8118684
|
|
69064
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874855.2687278
|
1793738855.2687278
|
|
69065
|
Having fun messing with Godot Networking by @Flame Having fun messing with Godot Networking by @FlameWing | Stardance...
|
FlameWing
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T00:52:46Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Pretty simple Godot game that shows the concepts of Godot’s networking tools. Simple host/join, with player data syncing across clients. Simple chatting, and spawning physics bodies. Also, local server broadcasting to easily join servers hosted on your local network. One of the first times I used Godot, and had a fun time learning the technical side of it. Got to learn how to use both Godot’s High Level Multiplayer, and Godot’s lower level networking to handle local broadcasting.", "repo": "https://github.com/FlameWing-Code/Godot-Networking-Testing", "demo": "https://github.com/FlameWing-Code/Godot-Networking-Testing/releases/tag/v1"}]...
|
[{"post_id": 81125, "ts": "202 [{"post_id": 81125, "ts": "2026-10-19T23:50:39Z", "hours": 3.1672, "text": "Added local server broadcasting When you host a game, it will constantly send a small packet to 255.255.255.255, which gets sent to every device in the local network. Its a small little packet that simply contains the server’s username and the port their hosting on. Clients can pick up this packet, and it gets displayed so you can join easily. Had to rely on godot’s lower level networking, compared to the rest of the project."}, {"post_id": 78633, "ts": "2026-10-11T04:19:44Z", "hours": 2.6972, "text": "Got chat and usernames working"}]...
|
Title: Having fun messing with Godot Networking by Title: Having fun messing with Godot Networking by @FlameWing | Stardance
Devlogs:
Got chat and usernames working
Added local server broadcasting When you host a game, it will constantly send a small packet to 255.255.255.255, which gets sent to every device in the local network. Its a small little packet that simply contains the server’s username and the port their hosting on. Clients can pick up this packet, and it gets displayed so you can join easily. Had to rely on godot’s lower level networking, compared to the rest of the project.
Ships:
Pretty simple Godot game that shows the concepts of Godot’s networking tools. Simple host/join, with player data syncing across clients. Simple chatting, and spawning physics bodies. Also, local server broadcasting to easily join servers hosted on your local network. One of the first times I used Godot, and had a fun time learning the technical side of it. Got to learn how to use both Godot’s High Level Multiplayer, and Godot’s lower level networking to handle local broadcasting....
|
1793155890.9777288
|
1793242290.9777288
|
|
69066
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874856.0805092
|
1793738856.0805092
|
|
69067
|
DCD (Digital Cassette Device) by @AoujHaider | Sta DCD (Digital Cassette Device) by @AoujHaider | Stardance...
|
AoujHaider
|
0
|
19.99
|
0
|
[]
|
[{"post_id": 83068, "ts": "202 [{"post_id": 83068, "ts": "2026-10-26T19:41:03Z", "hours": 0.9611, "text": "i just finished the PCB, I do not think that I’ll be done with this by the 31st"}, {"post_id": 82934, "ts": "2026-10-26T09:26:50Z", "hours": 2.6667, "text": "PCB Error fixes, wire routing, LED placement."}, {"post_id": 81040, "ts": "2026-10-19T17:20:59Z", "hours": 0.8431, "text": "Very nice"}, {"post_id": 80503, "ts": "2026-10-17T21:49:22Z", "hours": 2.8322, "text": "still working on the pcb, just need to log in my hours"}, {"post_id": 80129, "ts": "2026-10-16T09:50:20Z", "hours": 4.1878, "text": "just logging in my hours, i forgot to use lapse when designing this ;("}, {"post_id": 79893, "ts": "2026-10-15T18:05:35Z", "hours": 1.9364, "text": "Finished designing the case and stuff for the DCD, the empty space is for the “cassette” I’m designing so i will update it when I’m done, If anyone has some design changes they would like to make feel free to comment"}, {"post_id": 79336, "ts": "2026-10-13T15:32:34Z", "hours": 4.6767, "text": "I have finally finished up my schematics for my project AFTER 2 DAYS."}, {"post_id": 78996, "ts": "2026-10-12T09:17:06Z", "hours": 1.8869, "text": "I’ve finished the brainstorm and design phase of my project. It’s basically a digital version of a cassette tape (ikik reinventing the wheel) but i wanted to give the cassette player (Inspired by the Sony TPS L2) a more modern touch, Modern being an oled screen, more minimally designed buttons (thinking about using haptics) small and slim form factor plus some cyberpunk-esk design elements (i haven’t added that to the design yet). On paper it doesn’t feel as exciting or brilliant but from the survey i did 60-70% of the people i surveyed would buy this if it’s resonably priced. Please let me know if you would make any changes or want anything added into it,"}]...
|
Title: DCD (Digital Cassette Device) by @AoujHaide Title: DCD (Digital Cassette Device) by @AoujHaider | Stardance
Devlogs:
I’ve finished the brainstorm and design phase of my project. It’s basically a digital version of a cassette tape (ikik reinventing the wheel) but i wanted to give the cassette player (Inspired by the Sony TPS L2) a more modern touch, Modern being an oled screen, more minimally designed buttons (thinking about using haptics) small and slim form factor plus some cyberpunk-esk design elements (i haven’t added that to the design yet). On paper it doesn’t feel as exciting or brilliant but from the survey i did 60-70% of the people i surveyed would buy this if it’s resonably priced. Please let me know if you would make any changes or want anything added into it,
I have finally finished up my schematics for my project AFTER 2 DAYS.
Finished designing the case and stuff for the DCD, the empty space is for the “cassette” I’m designing so i will update it when I’m done, If anyone has some design changes they would like to make feel free to comment
just logging in my hours, i forgot to use lapse when designing this ;(
still working on the pcb, just need to log in my hours
Very nice
PCB Error fixes, wire routing, LED placement.
i just finished the PCB, I do not think that I’ll be done with this by the 31st...
|
1793130504.136986
|
1793735304.136986
|
|
69068
|
My own site! by @Fabicho | Stardance
|
Fabicho
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @Fabicho | Stardance
|
1793130505.932165
|
1793735305.932165
|
|
69069
|
BLARE by @B06 | Stardance
|
B06
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: BLARE by @B06 | Stardance
|
1793130506.7926579
|
1793735306.7926579
|
|
69070
|
My awesome macropad! by @aadit123 | Stardance
|
aadit123
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @aadit123 | Stardan Title: My awesome macropad! by @aadit123 | Stardance...
|
1793130508.7732475
|
1793735308.7732475
|
|
69071
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874856.9042308
|
1793738856.9042308
|
|
69072
|
My very own WebOS by @tetsu | Stardance
|
tetsu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @tetsu | Stardance
|
1793130510.8973165
|
1793735310.8973165
|
|
69073
|
My own site! by @acharava000 | Stardance
|
acharava000
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @acharava000 | Stardance
|
1793130512.638584
|
1793735312.638584
|
|
69074
|
the Cheet Sheet by @wxie223 | Stardance
|
wxie223
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: the Cheet Sheet by @wxie223 | Stardance
|
1792475612.6646519
|
1793339612.6646519
|
|
69075
|
Alarm Clockx by @Aayan_Fardin | Stardance
|
Aayan_Fardin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Alarm Clockx by @Aayan_Fardin | Stardance
|
1793130515.1421978
|
1793735315.1421978
|
|
69076
|
My awesome macropad! by @AlexandervanZyl1701D | St My awesome macropad! by @AlexandervanZyl1701D | Stardance...
|
AlexandervanZyl1701D
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @AlexandervanZyl170 Title: My awesome macropad! by @AlexandervanZyl1701D | Stardance...
|
1793130521.7600348
|
1793735321.7600348
|
|
69077
|
PADD by @Aayan_Fardin | Stardance
|
Aayan_Fardin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: PADD by @Aayan_Fardin | Stardance
|
1793130527.1933312
|
1793735327.1933312
|
|
69078
|
Random Password Generator by @KevinW | Stardance
|
KevinW
|
1
|
11.0
|
62
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T01:47:52Z", "hours": 11.0, "multiplier": 6.19, "payout": 62, "blessing": "neutral", "text": "I learned how to use HTML, JavaScript, and CSS to create a random password generator. I learned how to generate random passwords and use different settings tocustomize them. For me, the most challenging was using Javascript to make random passswords and making sure the code worked correctly. Connecting the HTML, CSS, and javascript together was also a challenge. I am proud that I created a random password generator from scratch considering this was my very first project. People should open the project in a web browser and try generating passwords using the different settings I created. They can change the password length, select which types of characters to include, and generate multiple passwords to see how it changes.", "repo": "https://github.com/wujunfan0/Password-Generator", "demo": "https://wujunfan0.github.io/Password-Generator/"}]...
|
[{"post_id": 78510, "ts": "202 [{"post_id": 78510, "ts": "2026-10-11T01:29:44Z", "hours": 10.5742, "text": "I just finished creating my very first website using HTML, Javascript, and CSS. I wanted to learn how to make something that is useful and practical so I decided to create a random password generator as I always have trouble thinking of passwords. This is my first webpage and I made it through countless hours of trial and error. Because of helpful articles and tutorials online, I was able to successfully complete this project. When you enter the webpage, you are met with a box in the middle of the screen displaying various different selections as well as a password strength bar. You are able to check off elements that you want the password generator to include as well as adjusting the length of it. Below the password, there is a password strength bar that automatically adjusts the level of strength it determines for your password corresponding to the length."}]...
|
Title: Random Password Generator by @KevinW | Star Title: Random Password Generator by @KevinW | Stardance
Devlogs:
I just finished creating my very first website using HTML, Javascript, and CSS. I wanted to learn how to make something that is useful and practical so I decided to create a random password generator as I always have trouble thinking of passwords. This is my first webpage and I made it through countless hours of trial and error. Because of helpful articles and tutorials online, I was able to successfully complete this project. When you enter the webpage, you are met with a box in the middle of the screen displaying various different selections as well as a password strength bar. You are able to check off elements that you want the password generator to include as well as adjusting the length of it. Below the password, there is a password strength bar that automatically adjusts the level of strength it determines for your password corresponding to the length.
Ships:
I learned how to use HTML, JavaScript, and CSS to create a random password generator. I learned how to generate random passwords and use different settings tocustomize them. For me, the most challenging was using Javascript to make random passswords and making sure the code worked correctly. Connecting the HTML, CSS, and javascript together was also a challenge. I am proud that I created a random password generator from scratch considering this was my very first project. People should open the project in a web browser and try generating passwords using the different settings I created. They can change the password length, select which types of characters to include, and generate multiple passwords to see how it changes....
|
1793008390.061616
|
1793872390.061616
|
|
69079
|
Capybara Fact Nerd by @blairchen387 | Stardance
|
blairchen387
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Capybara Fact Nerd by @blairchen387 | Stard Title: Capybara Fact Nerd by @blairchen387 | Stardance...
|
1792475623.2925584
|
1793339623.2925584
|
|
69080
|
Questions by @syedakhter | Stardance
|
syedakhter
|
1
|
2.0
|
1
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T01:49:03Z", "hours": 2.0, "multiplier": 1.0, "payout": 1, "blessing": "neutral", "text": "This projects name is questions it has questions about math Ela and some general questions", "repo": "https://github.com/8051987-eng/-Questions", "demo": "https://8051987-eng.github.io/-Questions/"}]...
|
[{"post_id": 78515, "ts": "202 [{"post_id": 78515, "ts": "2026-10-11T01:47:37Z", "hours": 2.3153, "text": "Questions amth ela and general"}]...
|
Title: Questions by @syedakhter | Stardance
Devlo Title: Questions by @syedakhter | Stardance
Devlogs:
Questions amth ela and general
Ships:
This projects name is questions it has questions about math Ela and some general questions...
|
1793217338.5039794
|
1793303738.5039794
|
|
69081
|
Catputer AI by @ethandacat | Stardance
|
ethandacat
|
0
|
1.06
|
0
|
[]
|
[{"post_id": 78645, "ts": "202 [{"post_id": 78645, "ts": "2026-10-11T05:02:34Z", "hours": 1.0575, "text": "Added more AI providers, added fun UI for fun ig uhh yeah also you get to see a cat stuffie happi happi happi"}]...
|
Title: Catputer AI by @ethandacat | Stardance
Dev Title: Catputer AI by @ethandacat | Stardance
Devlogs:
Added more AI providers, added fun UI for fun ig uhh yeah also you get to see a cat stuffie happi happi happi...
|
1793130532.346553
|
1793735332.346553
|
|
69082
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874857.7471771
|
1793738857.7471771
|
|
69083
|
My awesome macropad! by @avab | Stardance
|
avab
|
0
|
0.52
|
0
|
[]
|
[{"post_id": 78865, "ts": "202 [{"post_id": 78865, "ts": "2026-10-11T20:08:11Z", "hours": 0.515, "text": "Downloaded KiCad, followed the Hackpad guide to draw the schematic and route the PCB."}]...
|
Title: My awesome macropad! by @avab | Stardance
Title: My awesome macropad! by @avab | Stardance
Devlogs:
Downloaded KiCad, followed the Hackpad guide to draw the schematic and route the PCB....
|
1793130534.3506773
|
1793735334.3506773
|
|
69084
|
My first slack bot! by @Gabrielle | Stardance
|
Gabrielle
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Gabrielle | Stardan Title: My first slack bot! by @Gabrielle | Stardance...
|
1793130536.1451414
|
1793735336.1451414
|
|
69085
|
Light In Night by @Arnav_Borude | Stardance
|
Arnav_Borude
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Light In Night by @Arnav_Borude | Stardance
|
1793130536.9909558
|
1793735336.9909558
|
|
69086
|
My own site! by @tyreke | Stardance
|
tyreke
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @tyreke | Stardance
|
1793130539.003248
|
1793735339.003248
|
|
69087
|
ChoreBoard by @simonhacker | Stardance
|
simonhacker
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ChoreBoard by @simonhacker | Stardance
|
1793130540.748391
|
1793735340.748391
|
|
69088
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874858.5662732
|
1793738858.5662732
|
|
69089
|
kitai by @myreester | Stardance
|
myreester
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: kitai by @myreester | Stardance
|
1793130542.475083
|
1793735342.475083
|
|
69090
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874859.386834
|
1793738859.386834
|
|
69091
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874861.7900305
|
1793738861.7900305
|
|
69092
|
My own site! by @hanistan | Stardance
|
hanistan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @hanistan | Stardance
|
1793130545.4073682
|
1793735345.4073682
|
|
69093
|
ProblemLab by @pengpengjin1 | Stardance
|
pengpengjin1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ProblemLab by @pengpengjin1 | Stardance
|
1792475635.8922985
|
1793339635.8922985
|
|
69094
|
My awesome macropad! by @Sweet_Queens | Stardance
|
Sweet_Queens
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Sweet_Queens | Sta Title: My awesome macropad! by @Sweet_Queens | Stardance...
|
1793130546.2677197
|
1793735346.2677197
|
|
69095
|
MaxCYOU's own site! by @maxcyou | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: MaxCYOU's own site! by @maxcyou | Stard Title: MaxCYOU's own site! by @maxcyou | Stardance...
|
1793130548.018739
|
1793735348.018739
|
|
69096
|
My awesome macropad! by @Cxshout | Stardance
|
Cxshout
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Cxshout | Stardanc Title: My awesome macropad! by @Cxshout | Stardance...
|
1793130550.3807936
|
1793735350.3807936
|
|
69097
|
Untitled project by @advayaarock | Stardance
|
advayaarock
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @advayaarock | Stardanc Title: Untitled project by @advayaarock | Stardance...
|
1793130553.0081813
|
1793735353.0081813
|
|
69098
|
project generator by @tile308217 | Stardance
|
tile308217
|
0
|
15.2
|
0
|
[]
|
[{"post_id": 78740, "ts": "202 [{"post_id": 78740, "ts": "2026-10-11T13:26:30Z", "hours": 15.2044, "text": "A desktop app that generate book for Android app"}]...
|
Title: project generator by @tile308217 | Stardanc Title: project generator by @tile308217 | Stardance
Devlogs:
A desktop app that generate book for Android app...
|
1792475640.063116
|
1793339640.063116
|
|
69099
|
Marching Cube (Processing) by @Rohit_Biswas | Star Marching Cube (Processing) by @Rohit_Biswas | Stardance...
|
Rohit_Biswas
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Marching Cube (Processing) by @Rohit_Biswas Title: Marching Cube (Processing) by @Rohit_Biswas | Stardance...
|
1792475641.3181198
|
1793339641.3181198
|
|
69100
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874868.387524
|
1793738868.387524
|
|
69101
|
Explore USA by @larsmccollum | Stardance
|
larsmccollum
|
0
|
1.48
|
0
|
[]
|
[{"post_id": 78671, "ts": "202 [{"post_id": 78671, "ts": "2026-10-11T07:44:46Z", "hours": 1.4769, "text": "I started my USA exploration website. 1) First, I added some text and worked on editing photos for it. 2) Then I started with the map. I have to figure out how to add a button on each state, so it can go to a different page. That page will have info about it. If anyone has ideas… I will also need to make a ReadMe page."}]...
|
Title: Explore USA by @larsmccollum | Stardance
D Title: Explore USA by @larsmccollum | Stardance
Devlogs:
I started my USA exploration website. 1) First, I added some text and worked on editing photos for it. 2) Then I started with the map. I have to figure out how to add a button on each state, so it can go to a different page. That page will have info about it. If anyone has ideas… I will also need to make a ReadMe page....
|
1793130556.519622
|
1793735356.519622
|
|
69102
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792874869.198672
|
1793738869.198672
|
|
69103
|
my attempt at a game by @shaizaanv | Stardance
|
shaizaanv
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: my attempt at a game by @shaizaanv | Starda Title: my attempt at a game by @shaizaanv | Stardance...
|
1793130558.2618892
|
1793735358.2618892
|
|
69104
|
MLP - Halloween Costume Ears by @Sumirereign | Sta MLP - Halloween Costume Ears by @Sumirereign | Stardance...
|
Sumirereign
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: MLP - Halloween Costume Ears by @Sumirereig Title: MLP - Halloween Costume Ears by @Sumirereign | Stardance...
|
1793130560.351477
|
1793735360.351477
|
|
69105
|
Python Chess by @itzdeep2 | Stardance
|
itzdeep2
|
2
|
3.0
|
4
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-19T07:44:37Z", "hours": 1.0, "multiplier": 1.72, "payout": 2, "blessing": "neutral", "text": "Built an interactive Python chess game using tkinter and integrated the Stockfish Engine( https://github.com/official-stockfish/Stockfish ) via a UCI subprocess bridge. Challenges: Parsing real-time board states into FEN strings and syncing asynchronous background AI moves smoothly with the GUI canvas. Proud of: Successfully deploying a native chess AI player inside a Python app without external web dependencies. Test it by downloading the release binary and playing against Stockfish!", "repo": "https://github.com/itzdeep2/Python-Chess", "demo": "https://github.com/itzdeep2/Python-Chess/releases/tag/v1.0.0"}, {"ship_num": 2, "ts": "2026-10-11T06:11:59Z", "hours": 2.0, "multiplier": 1.03, "payout": 2, "blessing": "neutral", "text": "Built a lightweight 2D chess GUI from scratch using Python’s standard tkinter library. Squashed tricky sprite scaling and click-handler indentation bugs so pieces follow authentic movement rules instead of teleporting. Proud of making a clean, responsive game with zero external dependencies. Run python chess.py alongside the assets folder to test!", "repo": "https://github.com/itzdeep2/Python-Chess", "demo": "https://github.com/itzdeep2/Python-Chess/releases/tag/v1.0.0"}]...
|
[{"post_id": 80917, "ts": "202 [{"post_id": 80917, "ts": "2026-10-19T07:42:51Z", "hours": 1.4306, "text": "Just shipped a massive update to Python Chess! I built a fully playable 2D GUI from scratch using tkinter with custom piece sprites and strict movement validation—no more pieces teleporting across the board. The coolest part? I integrated the powerful open-source Stockfish engine (Stockfish GitHub) into the background via a UCI subprocess bridge, so you can actually play against a real chess AI. Bundling it all into a standalone macOS app with PyInstaller was a headache with pathing quirks, but we cracked it. Next up, I’m thinking about building a custom evaluation bot from scratch!"}, {"post_id": 78656, "ts": "2026-10-11T06:06:58Z", "hours": 1.6969, "text": "Just dropped v1 of my GUI chess game in Python! Indentation errors and oversized piece sprites had me stressed, but we cooked and fixed it. Pieces now move with legit rules instead of teleporting. Next up, I’m locking in to build a custom chess bot engine. No cap, it’s peak."}]...
|
Title: Python Chess by @itzdeep2 | Stardance
Devl Title: Python Chess by @itzdeep2 | Stardance
Devlogs:
Just dropped v1 of my GUI chess game in Python! Indentation errors and oversized piece sprites had me stressed, but we cooked and fixed it. Pieces now move with legit rules instead of teleporting. Next up, I’m locking in to build a custom chess bot engine. No cap, it’s peak.
Just shipped a massive update to Python Chess! I built a fully playable 2D GUI from scratch using tkinter with custom piece sprites and strict movement validation—no more pieces teleporting across the board. The coolest part? I integrated the powerful open-source Stockfish engine (Stockfish GitHub) into the background via a UCI subprocess bridge, so you can actually play against a real chess AI. Bundling it all into a standalone macOS app with PyInstaller was a headache with pathing quirks, but we cracked it. Next up, I’m thinking about building a custom evaluation bot from scratch!
Ships:
Built a lightweight 2D chess GUI from scratch using Python’s standard tkinter library. Squashed tricky sprite scaling and click-handler indentation bugs so pieces follow authentic movement rules instead of teleporting. Proud of making a clean, responsive game with zero external dependencies. Run python chess.py alongside the assets folder to test!
Built an interactive Python chess game using tkinter and integrated the Stockfish Engine( https://github.com/official-stockfish/Stockfish ) via a UCI subprocess bridge. Challenges: Parsing real-time board states into FEN strings and syncing asynchronous background AI moves smoothly with the GUI canvas. Proud of: Successfully deploying a native chess AI player inside a Python app without external web dependencies. Test it by downloading the release binary and playing against Stockfish!...
|
1793217340.2963412
|
1793303740.2963412
|
|
69106
|
KPad by @K-Boi | Stardance
|
K-Boi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: KPad by @K-Boi | Stardance
|
1793130562.747932
|
1793735362.747932
|
|
69107
|
Jarvis by @K-Boi | Stardance
|
K-Boi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Jarvis by @K-Boi | Stardance
|
1793130564.478807
|
1793735364.478807
|