|
4851
|
personal development by @Guilherme | Stardance
|
Guilherme
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: personal development by @Guilherme | Starda Title: personal development by @Guilherme | Stardance...
|
1792932547.9742749
|
1793796547.9742749
|
|
4852
|
Public Transportation Map by @ray120424 | Stardanc Public Transportation Map by @ray120424 | Stardance...
|
ray120424
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-03T05:34:11Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I just create taichung, kaohsiung MRT and Taiwan High Speed Rail in my map.", "repo": "https://github.com/HaKexva/public_transportation_map", "demo": "https://public-transportation-map.up.railway.app/"}]...
|
[{"post_id": 786, "ts": "2026- [{"post_id": 786, "ts": "2026-06-02T13:35:31Z", "hours": 0.4342, "text": "Create Taichung and Kaohsiung MRT"}]...
|
Title: Public Transportation Map by @ray120424 | S Title: Public Transportation Map by @ray120424 | Stardance
Devlogs:
Create Taichung and Kaohsiung MRT
Ships:
I just create taichung, kaohsiung MRT and Taiwan High Speed Rail in my map....
|
1793249763.3407092
|
1793336163.3407092
|
|
4853
|
My awesome macropad! by @clayanicholson | Stardanc My awesome macropad! by @clayanicholson | Stardance...
|
clayanicholson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @clayanicholson | S Title: My awesome macropad! by @clayanicholson | Stardance...
|
1793238725.0076902
|
1793843525.0076902
|
|
4854
|
My first slack bot! by @sakshamgyawali | Stardance
|
sakshamgyawali
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sakshamgyawali | St Title: My first slack bot! by @sakshamgyawali | Stardance...
|
1793227998.3697834
|
1793832798.3697834
|
|
4855
|
Untitled by @julianas82311 | Stardance
|
julianas82311
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @julianas82311 | Stardance
|
1792619551.3878224
|
1793224351.3878224
|
|
4856
|
My first slack bot! by @julianas82311 | Stardance
|
julianas82311
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @julianas82311 | Sta Title: My first slack bot! by @julianas82311 | Stardance...
|
1792723776.8668776
|
1793328576.8668776
|
|
4857
|
Untitled by @clayanicholson | Stardance
|
clayanicholson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @clayanicholson | Stardance
|
1793188392.8188713
|
1793793192.8188713
|
|
4858
|
GoKart Proximity Chat by @dennis_colak | Stardance
|
dennis_colak
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: GoKart Proximity Chat by @dennis_colak | St Title: GoKart Proximity Chat by @dennis_colak | Stardance...
|
1792738074.3994868
|
1793342874.3994868
|
|
4859
|
Nook by @Eleco | Stardance
|
Eleco
|
1
|
39.85
|
57
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T00:24:19Z", "hours": 5.0, "multiplier": 10.72, "payout": 57, "blessing": "neutral", "text": "I have made the MVP (Just the skeleton) of a Focus/Study app Called Nook! I really hope this will get further more developed, and aiming to work on it alongside YC, and here in StarDance, I will activelly share and blog about my progress over the app, and when i’ll finalize the design and the underlying engineering of the way I’ll treat the problem of distraction and also “Working with understimulation” unlike Duolingo or other study apps that rewards you with small dopamine bursts, this app will focus solelly on self fulfilment, deep focus and also a niche community where students and builders could get to connect and work together too!", "repo": "https://github.com/adamsaou/Nook", "demo": "https://nook-study.vercel.app"}]...
|
[{"post_id": 28847, "ts": "202 [{"post_id": 28847, "ts": "2026-07-15T12:04:56Z", "hours": 22.7239, "text": "So Hello stardance! These days have been GRUELLING, and honestly I post right now because for the past month, i was not only working on Nook, but carefully using every single feedback from the rating as seriously as possible :D Updates: -Was accepted as the only teenager in Morocco onto the biggest AI hackathon in the COUNTRY called “RallyAI” -I got myself a Co-founder on this project, since after careful consideration, I realised very few people actually TRY to tackle the problem of ‘Focus’ in a wholistic point of view, and I am here for it! -Also (sadly) I started Using AI more for developpement, since the project will be a BIG monorepo project, and also to accelerate the rate of not only deliverring features, but also trying to make this and official solution to focus in our world. This might seem very “delusional” and “unrealistic” But I really DO believe on it working, not for me as a project or a potential start-up, but as a solution in our real world :D Also, yes VOICE ROOMS ARE HOSTED VIA MY OWN TURN SERVERS :D (totally didn’t spend days fixing my laptops, and also learning about WebRTC, and also configuring both laptops to ACTUALLY stay alive lol) Also, again, Thanks you Stardance for letting me have a chance to build something that MATTERS <3 (Cool funny pic where i was being interviewed :p )"}, {"post_id": 9844, "ts": "2026-06-16T09:32:58Z", "hours": 3.8489, "text": "After a LOT of hustle and bustle, I present to you: Nook’s (current) TURN servers! Also while researching about WebRTC and Peer-to-Peer connections, I found out i can just host my own TURN servers locally, and honestly, they are doing their job well! I tested with a lot of friends and realised these bad boys can support approximately more than 1000-2000 people in different voice rooms :O Crazy for real, now onto working to finish off the MVP and also making new changes, also refining the source code’s licence, then after the MVP is made, I will work on cross-platform support!"}, {"post_id": 6214, "ts": "2026-06-10T13:15:01Z", "hours": 5.8294, "text": "YES, TOOK ME 5 HOURS FOR MY 1ST LAPTOP TO WORK AND FINALLY BOOTED Xubuntu ON IT Also for info, I am currently configuring 2 of my old Laptops to be the server for my Website, and in the future an entire software Ecosystem for my project called “Nook”! The specs of the Laptops of my “Pheonix Server”: HP ProBook 640 G1: CPU: i5-4300M 2.60Ghz RAM: 8gb GPU: Integrated Intel HD graphics 4600 Storage: 250gb -LG A530: CPU: i7-2630QM 2.0Ghz RAM: 6gb GPU: NVIDIA GeForce dedicated AND a GT 555M Also I will name the “Pheonix x” of each ‘new’ additions to my (future) servers will be called in order of which on was setten up :D"}, {"post_id": 4405, "ts": "2026-06-07T18:41:39Z", "hours": 2.4506, "text": "Finally made the voice rooms feature on Nook 😍 Now I will keep on testing locally, to keep fishing for potential bugs, and also try to tackle optimization and also stress test that feature 👍"}, {"post_id": 3099, "ts": "2026-06-06T00:20:34Z", "hours": 2.7864, "text": "Nook is FINALLY and offcially alive. Spent this last session locking down the core framework because I’m tired of productivity apps that treat your brain like a slot machine with streaks and badges. Built this for pure understimulation and fast starts. Next.js + Supabase stack is running smoothly. Check the live demo link! https://nook-study.vercel.app"}, {"post_id": 2244, "ts": "2026-06-04T17:03:09Z", "hours": 2.5883, "text": "Hello StarDance! I am currently working on a simple student app, generic right? Well, Nook is different, why you may ask? Because I am actively designing it in such way that it will make the essence of studying and working on “something” more productive and LESS stimulating; unlike for example DuoLingo, where small dopamine bursts and streaks, and an “addictive” based design to keep you engaged and dependent on their app, my website (even app in the future) is going to focus on accountability, responsibility, calm and the social essence! So far, I am still developing the MVP and actively working on developing a core theme of the website! Later, I would love to get feedback on usage and also how can I improve it Also thank you StarDance for this wonderful opportunity to get creative, and create"}]...
|
Title: Nook by @Eleco | Stardance
Devlogs:
Hello Title: Nook by @Eleco | Stardance
Devlogs:
Hello StarDance! I am currently working on a simple student app, generic right? Well, Nook is different, why you may ask? Because I am actively designing it in such way that it will make the essence of studying and working on “something” more productive and LESS stimulating; unlike for example DuoLingo, where small dopamine bursts and streaks, and an “addictive” based design to keep you engaged and dependent on their app, my website (even app in the future) is going to focus on accountability, responsibility, calm and the social essence! So far, I am still developing the MVP and actively working on developing a core theme of the website! Later, I would love to get feedback on usage and also how can I improve it Also thank you StarDance for this wonderful opportunity to get creative, and create
Nook is FINALLY and offcially alive. Spent this last session locking down the core framework because I’m tired of productivity apps that treat your brain like a slot machine with streaks and badges. Built this for pure understimulation and fast starts. Next.js + Supabase stack is running smoothly. Check the live demo link! https://nook-study.vercel.app
Finally made the voice rooms feature on Nook 😍 Now I will keep on testing locally, to keep fishing for potential bugs, and also try to tackle optimization and also stress test that feature 👍
YES, TOOK ME 5 HOURS FOR MY 1ST LAPTOP TO WORK AND FINALLY BOOTED Xubuntu ON IT Also for info, I am currently configuring 2 of my old Laptops to be the server for my Website, and in the future an entire software Ecosystem for my project called “Nook”! The specs of the Laptops of my “Pheonix Server”: HP ProBook 640 G1: CPU: i5-4300M 2.60Ghz RAM: 8gb GPU: Integrated Intel HD graphics 4600 Storage: 250gb -LG A530: CPU: i7-2630QM 2.0Ghz RAM: 6gb GPU: NVIDIA GeForce dedicated AND a GT 555M Also I will name the “Pheonix x” of each ‘new’ additions to my (future) servers will be called in order of which on was setten up :D
After a LOT of hustle and bustle, I present to you: Nook’s (current) TURN servers! Also while researching about WebRTC and Peer-to-Peer connections, I found out i can just host my own TURN servers locally, and honestly, they are doing their job well! I tested with a lot of friends and realised these bad boys can support approximately more than 1000-2000 people in different voice rooms :O Crazy for real, now onto working to finish off the MVP and also making new changes, also refining the source code’s licence, then after the MVP is made, I will work on cross-platform support!
So Hello stardance! These days have been GRUELLING, and honestly I post right now because for the past month, i was not only working on Nook, but carefully using every single feedback from the rating as seriously as possible :D Updates: -Was accepted as the only teenager in Morocco onto the biggest AI hackathon in the COUNTRY called “RallyAI” -I got myself a Co-founder on this project, since after careful consideration, I realised very few people actually TRY to tackle the problem of ‘Focus’ in a wholistic point of view, and I am here for it! -Also (sadly) I started Using AI more for developpement, since the project will be a BIG monorepo project, and also to accelerate the rate of not only deliverring features, but also trying to make this and official solution to focus in our world. This might seem very “delusional” and “unrealistic” But I really DO believe on it working, not for me as a project or a potential start-up, but as a solution in our real world :D Also, yes VOICE ROOMS ARE HOSTED VIA MY OWN TURN SERVERS :D (totally didn’t spend days fixing my laptops, and also learning about WebRTC, and also configuring both laptops to ACTUALLY stay alive lol) Also, again, Thanks you Stardance for letting me have a chance to build something that MATTERS <3 (Cool funny pic where i was being interviewed :p )
Ships:
I have made the MVP (Just the skeleton) of a Focus/Study app Called Nook! I really hope this will get further more developed, and aiming to work on it alongside YC, and here in StarDance, I will activelly share and blog about my progress over the app, and when i’ll finalize the design and the underlying engineering of the way I’ll treat the problem of distraction and also “Working with understimulation” unlike Duolingo or other study apps that rewards you with small dopamine bursts, this app will focus solelly on self fulfilment, deep focus and also a niche community where students and builders could get to connect and work together too!...
|
1793249612.7549942
|
1793336012.7549942
|
|
4860
|
My first slack bot! by @sakshyamgautam79 | Stardan My first slack bot! by @sakshyamgautam79 | Stardance...
|
sakshyamgautam79
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sakshyamgautam79 | Title: My first slack bot! by @sakshyamgautam79 | Stardance...
|
1792619552.209519
|
1793224352.209519
|
|
4861
|
My first slack bot! by @shinonome | Stardance
|
shinonome
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @shinonome | Stardan Title: My first slack bot! by @shinonome | Stardance...
|
1792741996.776865
|
1793346796.776865
|
|
4862
|
sabretooth hydrogen rocket by @toulounmarios | Sta sabretooth hydrogen rocket by @toulounmarios | Stardance...
|
toulounmarios
|
0
|
1.66
|
0
|
[]
|
[{"post_id": 72440, "ts": "202 [{"post_id": 72440, "ts": "2026-09-22T23:17:47Z", "hours": 1.6594, "text": "isp and phi analysis , aswell as fuel mix re-assessment. i found the optimal fuel to oxidiser ratio for the butane part of the combustion. im looking into switching to a 2 step combustion system where i use both butane and hydrogen instead of just hydrogen, that way increasing stability and efficiency, while also loweing risk of flashback and damage to the parts"}]...
|
Title: sabretooth hydrogen rocket by @toulounmario Title: sabretooth hydrogen rocket by @toulounmarios | Stardance
Devlogs:
isp and phi analysis , aswell as fuel mix re-assessment. i found the optimal fuel to oxidiser ratio for the butane part of the combustion. im looking into switching to a 2 step combustion system where i use both butane and hydrogen instead of just hydrogen, that way increasing stability and efficiency, while also loweing risk of flashback and damage to the parts...
|
1793192140.6531289
|
1793796940.6531289
|
|
4863
|
Systemcore XRP Tasks by @Kavin | Stardance
|
Kavin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Systemcore XRP Tasks by @Kavin | Stardance
|
1793029763.3611772
|
1793634563.3611772
|
|
4864
|
Obchod by @kubki | Stardance
|
kubki
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Obchod by @kubki | Stardance
|
1793177673.6569364
|
1793782473.6569364
|
|
4865
|
My first slack bot! by @pavelchladek_dev | Stardan My first slack bot! by @pavelchladek_dev | Stardance...
|
pavelchladek_dev
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @pavelchladek_dev | Title: My first slack bot! by @pavelchladek_dev | Stardance...
|
1793235025.0547123
|
1793839825.0547123
|
|
4866
|
My first slack bot! by @AK_5735 | Stardance
|
AK_5735
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @AK_5735 | Stardance
|
1792702172.1162004
|
1793306972.1162004
|
|
4867
|
Untitled project by @Deweys | Stardance
|
Deweys
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Deweys | Stardance
|
1792687696.0839953
|
1793292496.0839953
|
|
4868
|
My awesome macropad! by @themonk773 | Stardance
|
themonk773
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @themonk773 | Stard Title: My awesome macropad! by @themonk773 | Stardance...
|
1792633797.0325787
|
1793238597.0325787
|
|
4869
|
My first slack bot! by @schroedergreyson | Stardan My first slack bot! by @schroedergreyson | Stardance...
|
schroedergreyson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @schroedergreyson | Title: My first slack bot! by @schroedergreyson | Stardance...
|
1792788862.3048205
|
1793393662.3048205
|
|
4870
|
Tutor AI by @derped1 | Stardance
|
derped1
|
0
|
3.72
|
0
|
[]
|
[{"post_id": 1868, "ts": "2026 [{"post_id": 1868, "ts": "2026-06-04T02:35:40Z", "hours": 0.7756, "text": "I’ve made some more UI improvements I beleive it looks a lot better now and more simple while keeping all the features."}, {"post_id": 1840, "ts": "2026-06-04T01:42:20Z", "hours": 2.9428, "text": "I reworked the overall UI to use a sidebar so it’s easier to navigate. I am also working on the interactive lessons. I want to integrate interactive diagrams soon but have not found a good solution yet and plan to continue working on it."}]...
|
Title: Tutor AI by @derped1 | Stardance
Devlogs:
Title: Tutor AI by @derped1 | Stardance
Devlogs:
I reworked the overall UI to use a sidebar so it’s easier to navigate. I am also working on the interactive lessons. I want to integrate interactive diagrams soon but have not found a good solution yet and plan to continue working on it.
I’ve made some more UI improvements I beleive it looks a lot better now and more simple while keeping all the features....
|
1793260055.8383684
|
1793864855.8383684
|
|
4871
|
Multifunctional Macropad by @Wilbatronic | Stardan Multifunctional Macropad by @Wilbatronic | Stardance...
|
Wilbatronic
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Multifunctional Macropad by @Wilbatronic | Title: Multifunctional Macropad by @Wilbatronic | Stardance...
|
1792673243.1517286
|
1793278043.1517286
|
|
4872
|
F103-280-20602 Flight Controller Board by @CJ | St F103-280-20602 Flight Controller Board by @CJ | Stardance...
|
CJ
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: F103-280-20602 Flight Controller Board by @ Title: F103-280-20602 Flight Controller Board by @CJ | Stardance...
|
1793166539.7238355
|
1793771339.7238355
|
|
4873
|
Pomodorox by @brianNHS | Stardance
|
brianNHS
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pomodorox by @brianNHS | Stardance
|
1792662566.5806487
|
1793267366.5806487
|
|
4874
|
OrangeDL by @MisplacedOrange | Stardance
|
MisplacedOrange
|
1
|
14.35
|
118
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T00:41:54Z", "hours": 9.0, "multiplier": 16.59, "payout": 118, "blessing": "neutral", "text": "I think debugging was the toughest part definitely, everything was breaking at one point", "repo": "https://github.com/MisplacedOrange/OrangeDL", "demo": "https://github.com/misplacedorange/orangedl/releases/latest/download/orangedl.exe"}]...
|
[{"post_id": 17371, "ts": "202 [{"post_id": 17371, "ts": "2026-06-28T04:03:16Z", "hours": 3.4125, "text": "Refactoring some unnecessary code Forgot to mention: Updated Github README Added a Contributing MD (not updated yet) accidently broke the window dragging Rust 🦀minor fixes boring stuff: Deleted UpdateSettingsRequest Function and related calls Deleted leftover SVG Deleted normalize_theme function Unused tests Debugging CI workflow Tiny other chores NEXT: Fix UI – Placeholder rn (Forgive me for the vibecoded UI 😳😳) update all the documentation"}, {"post_id": 12107, "ts": "2026-06-19T19:36:20Z", "hours": 1.9406, "text": "Added move and resume actions for completed downloads, in the UI and as new Tauri commands Fixed a task-leak bug: a panicking download task could leave a stale entry in the running-tasks map, permanently blocking resume and consuming a concurrency slot. Other Security + Vulnerability Fixes Chores"}, {"post_id": 7759, "ts": "2026-06-12T23:17:15Z", "hours": 6.5586, "text": "Adds five built-in color themes (Creamsicle, Midnight Marmalade, Peach Fizz, Mint Squeeze, Bubblegum) with instant apply and DB persistence. Adds yt-dlp video download support via a new media_extractor module and VideoDownloadModal: automatic yt-dlp detection and install, thumbnail preview, quality selector, and progress tracking. Adds settings export/import as JSON. Bug fixes: resume now re-fetches the full file when ETag/Last-Modified changes on the server; progress events no longer overwrite terminal download states; app settings are loaded in a single batched DB query."}, {"post_id": 2863, "ts": "2026-06-05T18:44:51Z", "hours": 2.8753, "text": "Updated Github Repo description README"}]...
|
Title: OrangeDL by @MisplacedOrange | Stardance
D Title: OrangeDL by @MisplacedOrange | Stardance
Devlogs:
Updated Github Repo description README
Adds five built-in color themes (Creamsicle, Midnight Marmalade, Peach Fizz, Mint Squeeze, Bubblegum) with instant apply and DB persistence. Adds yt-dlp video download support via a new media_extractor module and VideoDownloadModal: automatic yt-dlp detection and install, thumbnail preview, quality selector, and progress tracking. Adds settings export/import as JSON. Bug fixes: resume now re-fetches the full file when ETag/Last-Modified changes on the server; progress events no longer overwrite terminal download states; app settings are loaded in a single batched DB query.
Added move and resume actions for completed downloads, in the UI and as new Tauri commands Fixed a task-leak bug: a panicking download task could leave a stale entry in the running-tasks map, permanently blocking resume and consuming a concurrency slot. Other Security + Vulnerability Fixes Chores
Refactoring some unnecessary code Forgot to mention: Updated Github README Added a Contributing MD (not updated yet) accidently broke the window dragging Rust 🦀minor fixes boring stuff: Deleted UpdateSettingsRequest Function and related calls Deleted leftover SVG Deleted normalize_theme function Unused tests Debugging CI workflow Tiny other chores NEXT: Fix UI – Placeholder rn (Forgive me for the vibecoded UI 😳😳) update all the documentation
Ships:
I think debugging was the toughest part definitely, everything was breaking at one point...
|
1793245893.9665332
|
1793332293.9665332
|
|
4875
|
My awesome macropad! by @Hamstersarus | Stardance
|
Hamstersarus
|
0
|
3.38
|
0
|
[]
|
[{"post_id": 55302, "ts": "202 [{"post_id": 55302, "ts": "2026-08-27T01:31:49Z", "hours": 1.9044, "text": "I needed to test the screen so naturally, the first thing that came to mind is bad apple. It took sooo long to get that to work but eventually I did it! It used to only work with a companion running and that was a hassle to figure out, then I just had to run a command (I didn’t want to run a command though) so I fixed that too. Now it plays with a click of a button! Also, when it plays the song plays on my computer (there isn’t an actual speaker on the macropad). Next up, testing my LEDs!"}, {"post_id": 41766, "ts": "2026-08-06T05:09:12Z", "hours": 1.4758, "text": "I’ve soldered all my components down, but I finally began testing everything out. So far, everything works (except for my rotary encoder because I accidentally bought one that doesn’t click). Currently, the keys are mapped to letters of the alphabet, the rotary encoder controls the volume, and the screen displays some letters."}]...
|
Title: My awesome macropad! by @Hamstersarus | Sta Title: My awesome macropad! by @Hamstersarus | Stardance
Devlogs:
I’ve soldered all my components down, but I finally began testing everything out. So far, everything works (except for my rotary encoder because I accidentally bought one that doesn’t click). Currently, the keys are mapped to letters of the alphabet, the rotary encoder controls the volume, and the screen displays some letters.
I needed to test the screen so naturally, the first thing that came to mind is bad apple. It took sooo long to get that to work but eventually I did it! It used to only work with a companion running and that was a hassle to figure out, then I just had to run a command (I didn’t want to run a command though) so I fixed that too. Now it plays with a click of a button! Also, when it plays the song plays on my computer (there isn’t an actual speaker on the macropad). Next up, testing my LEDs!...
|
1792633848.2267075
|
1793238648.2267075
|
|
4876
|
Stanford CIP final project by @AnnaRosati | Starda Stanford CIP final project by @AnnaRosati | Stardance...
|
AnnaRosati
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Stanford CIP final project by @AnnaRosati | Title: Stanford CIP final project by @AnnaRosati | Stardance...
|
1792655709.2507746
|
1793260509.2507746
|
|
4877
|
My first slack bot! by @Gunia | Stardance
|
Gunia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Gunia | Stardance
|
1793249571.3374152
|
1793854371.3374152
|
|
4878
|
racing sim track from scratch by @dk | Stardance
|
dk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: racing sim track from scratch by @dk | Star Title: racing sim track from scratch by @dk | Stardance...
|
1793231372.4756858
|
1793836172.4756858
|
|
4879
|
My first slack bot! by @aadii_19 | Stardance
|
aadii_19
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @aadii_19 | Stardanc Title: My first slack bot! by @aadii_19 | Stardance...
|
1792655609.4969053
|
1793260409.4969053
|
|
4880
|
Untitled project by @abhiramnavulla | Stardance
|
abhiramnavulla
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @abhiramnavulla | Stard Title: Untitled project by @abhiramnavulla | Stardance...
|
1792705975.543874
|
1793310775.543874
|
|
4881
|
Media Review Webpage by @nic | Stardance
|
nic
|
1
|
5.0
|
41
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-24T01:00:17Z", "hours": 5.0, "multiplier": 8.68, "payout": 41, "blessing": "neutral", "text": "A small webpage built with HTML, CSS, and a speck of JavaScript for my personal TV show/movie anime reviews! Inspired by old website aesthetics from the y2k era. Presented like a personal blog, and used to track my currently watched/watching shows as well as occasionally sharing my thoughts about recently finished movies. [created in mind with the indie web movement on neocities]", "repo": "https://github.com/sodahaunted/sodahaunt.reviews", "demo": "https://sodahaunt.neocities.org/reviews"}]...
|
[{"post_id": 33196, "ts": "202 [{"post_id": 33196, "ts": "2026-07-22T21:44:56Z", "hours": 1.7128, "text": "Media Review Webpage #3 After a long time procrastinating, I’m finally done with the concept/prototype of my webpage. I wrote one full review for a recent movie I watched (Obsession), formatted it, added photos, and made sure the two lines of JavaScript code work properly. Not sure how to add more pages, though. I’ll figure that out for a future update (though if you know how, please lmk) The fundamentals of this page are pretty much finished! It has a watchlist which I can use to track shows/movies I’m watching, a (mostly) responsive layout, and all the CSS features I intended to add. Unfortunately lost an hour or two here and there because I forgot to unpause my recording, but oh well. The GIT repo for this page unfortunately doesn’t have many commits, since I wasn’t using GitHub to make this and was pretty unfamiliar with it when I started this project. It has all the code, just no visible edits/changes. Sorry about that. I used Neocities for the entirety of this site, which is what I mainly use to publish html/css projects."}, {"post_id": 15446, "ts": "2026-06-25T03:17:46Z", "hours": 2.5336, "text": "Media Review Webpage | Devlog #2 After a long hiatus, I came back to this project with a bit more motivation and inspiration than last time. I had a ton of ideas for what I wanted to do, but I wasn’t sure my skill level was high enough to program them. I only know HTML, CSS, and a bit of JavaScript, so even doing small things like showing/hiding elements takes me a long time. Challenges I wanted to make multiple pages using just one HTML file, since I wasn’t sure how many reviews I’d end up writing, and I wanted everything to be in one document. I got the text at the bottom to work properly like I wanted to, but I still don’t know how to show/hide more than one element at a time. Using Flexbox was also a pain since my images never resize how I want them to, and I want to make this page mobile-friendly. I might look back at my code from a previous project to try and figure that out in the next devlog. Additions I mainly focused on resizing everything to look a bit cleaner, and also because the previous layout was just a 500px box that barely showed any info. I changed the banner at the top and the background to something more library-themed."}, {"post_id": 4603, "ts": "2026-06-07T23:28:41Z", "hours": 0.5278, "text": "Media Review Webpage | Devlog #1 I had an idea for a while to make my own movie review/blog page, but I never really got around to doing it. Stardance was a good excuse for me to start making a lot of projects I’d procrastinated on for the past few months. short update to test lapse/hackatime changed the colours and fixed some sizing issues, planning to replace the photos and redo the actual layout next The majority of the code is carried over from a previous project I started in the past, which I’m planning to revamp and complete during Stardance."}]...
|
Title: Media Review Webpage by @nic | Stardance
D Title: Media Review Webpage by @nic | Stardance
Devlogs:
Media Review Webpage | Devlog #1 I had an idea for a while to make my own movie review/blog page, but I never really got around to doing it. Stardance was a good excuse for me to start making a lot of projects I’d procrastinated on for the past few months. short update to test lapse/hackatime changed the colours and fixed some sizing issues, planning to replace the photos and redo the actual layout next The majority of the code is carried over from a previous project I started in the past, which I’m planning to revamp and complete during Stardance.
Media Review Webpage | Devlog #2 After a long hiatus, I came back to this project with a bit more motivation and inspiration than last time. I had a ton of ideas for what I wanted to do, but I wasn’t sure my skill level was high enough to program them. I only know HTML, CSS, and a bit of JavaScript, so even doing small things like showing/hiding elements takes me a long time. Challenges I wanted to make multiple pages using just one HTML file, since I wasn’t sure how many reviews I’d end up writing, and I wanted everything to be in one document. I got the text at the bottom to work properly like I wanted to, but I still don’t know how to show/hide more than one element at a time. Using Flexbox was also a pain since my images never resize how I want them to, and I want to make this page mobile-friendly. I might look back at my code from a previous project to try and figure that out in the next devlog. Additions I mainly focused on resizing everything to look a bit cleaner, and also because the previous layout was just a 500px box that barely showed any info. I changed the banner at the top and the background to something more library-themed.
Media Review Webpage #3 After a long time procrastinating, I’m finally done with the concept/prototype of my webpage. I wrote one full review for a recent movie I watched (Obsession), formatted it, added photos, and made sure the two lines of JavaScript code work properly. Not sure how to add more pages, though. I’ll figure that out for a future update (though if you know how, please lmk) The fundamentals of this page are pretty much finished! It has a watchlist which I can use to track shows/movies I’m watching, a (mostly) responsive layout, and all the CSS features I intended to add. Unfortunately lost an hour or two here and there because I forgot to unpause my recording, but oh well. The GIT repo for this page unfortunately doesn’t have many commits, since I wasn’t using GitHub to make this and was pretty unfamiliar with it when I started this project. It has all the code, just no visible edits/changes. Sorry about that. I used Neocities for the entirety of this site, which is what I mainly use to publish html/css projects.
Ships:
A small webpage built with HTML, CSS, and a speck of JavaScript for my personal TV show/movie anime reviews! Inspired by old website aesthetics from the y2k era. Presented like a personal blog, and used to track my currently watched/watching shows as well as occasionally sharing my thoughts about recently finished movies. [created in mind with the indie web movement on neocities]...
|
1793202992.1285467
|
1793289392.1285467
|
|
4882
|
My awesome macropad! by @monjil | Stardance
|
monjil
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @monjil | Stardance
|
1792695262.658523
|
1793300062.658523
|
|
4883
|
the typescript tickler by @MetalFruit | Stardance
|
MetalFruit
|
0
|
14.1
|
0
|
[]
|
[{"post_id": 1786, "ts": "2026 [{"post_id": 1786, "ts": "2026-06-04T00:01:41Z", "hours": 14.0981, "text": "Providing an interface for creating families of related objects without specifying their concrete classes. Pick one factory, and every product it returns is guaranteed to belong to the same matching family. (I’m practicing writing in typescript with generic code)"}]...
|
Title: the typescript tickler by @MetalFruit | Sta Title: the typescript tickler by @MetalFruit | Stardance
Devlogs:
Providing an interface for creating families of related objects without specifying their concrete classes. Pick one factory, and every product it returns is guaranteed to belong to the same matching family. (I’m practicing writing in typescript with generic code)...
|
1793184686.7711174
|
1793789486.7711174
|
|
4884
|
Spottr by @BrunoGG | Stardance
|
BrunoGG
|
1
|
49.59
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T18:36:43Z", "hours": 47.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "SPOTTR is an open-source indoor presence tracking system built on ESP32-C3 and Bluetooth Low Energy. Wear a badge, walk into a room, show up on the map.", "repo": "https://github.com/BrunoGG69/Spottr", "demo": ""}]...
|
[{"post_id": 77148, "ts": "202 [{"post_id": 77148, "ts": "2026-10-05T19:42:35Z", "hours": 2.5883, "text": "DEVLOG #9 - BADGE CASE REDESIGNED, PRINTED AND ASSEMBLED Website : https://spottr.brunogg.in Work Done: Redesigned the badge enclosure from scratch in Fusion 360 to fit the new battery, which got thicker but smaller in footprint while the badge had to stay credit-card sized at 86 x 54 mm Made the whole model parametric , so every dimension falls out of a handful of named values and the next component change is a one-number edit instead of another rebuild Added the Spottr logo embossed on the lid and a USB-C cutout sized off the actual connector Got it printed through #printing-legion and it came out clean Assembled the hardware into it : XIAO ESP32-C3, LiPo and status LED all sit flat in the cavity with the lid seating properly on top"}, {"post_id": 48356, "ts": "2026-08-16T17:46:13Z", "hours": 5.61, "text": "DEVLOG #8 - MQTT AUTH, POWER-FAILURE RECOVERY, DASHBOARD REDESIGNED FROM SCRATCH Website : https://spottr.brunogg.in Work Done: Added MQTT username and password support across the whole stack. The captive portal now has optional auth fields, the credentials save to NVS with the rest of the config, and the pi-bridge authenticates the same way. Leaving them blank keeps the old anonymous behaviour, so nothing broke for existing setups Fixed a bug where every scanner broadcast the same setup network name . The AP name is built from the last two bytes of the device MAC, but it was being read from the WiFi driver before the interface existed, so every board came up as Spottr-Scanner-0000 . Reading the MAC directly from efuse fixed it, and each scanner now shows its real suffix, unique per device and stable across reboots Fixed a power-failure recovery bug that only showed up in the real deployment. When the power came back, the scanners booted in about two seconds but the router took closer to a minute, so the scanners found no network, assumed they were unconfigured, and dropped into the config portal. Every node had to be manually restarted. The logic was treating “can’t connect right now” as “isn’t set up”. Now a scanner with credentials in NVS retries WiFi indefinitely and only ever opens the portal if there are genuinely no credentials or the command is given over serial Added a WiFi watchdog to the main loop, so a dropout during normal operation reconnects on its own instead of leaving the scanner stuck retrying MQTT over a dead network Fixed the OTA status LED never actually animating . ledSet() only records the state, and the pin write happens in ledUpdate() , which runs from the main loop, but the OTA download blocks that loop entirely. So the LED just froze at whatever brightness it had. Driving it from httpUpdate ’s progress callback fixed it, and the pattern is twice as fast now so a quick update is still visible Redesigned the dashboard from scratch. Went for a design language closer to Nothing and Apple’s dark mode, so the whole thing is monochrome with mono uppercase labels, thin tabular numerals and a lot of empty space. Stripped out the animated gradient orbs, the dot-grid background and the glassmorphism, since that look is everywhere now and reads as generic. Cards are visible because they’re lighter than the page rather than because they have a border, and colour only appears where it means something, so a room lighting up when someone walks in is the only saturated thing on screen Rebuilt the Overview page as three columns, with stats and occupied rooms on the left, the floor map in the middle, and a badge rail on the right where every badge can be searched, edited, disabled or deleted without leaving the page. Added pan and zoom to the map Fixed a bug where any badge added through the dashboard would never show a location. New badges were saved with an uppercase MAC while the pi-bridge writes location keys in lowercase, so the two never matched. Pulled the MAC handling into a shared module so both pages normalise the same way Replaced the component-library sidebar with a custom animated one , and moved the shared liveness and badge logic into lib/status.js and lib/badges.js . The duplicated copies of that logic are exactly what let the floor map and the overview page drift apart and disagree about which scanners were online Future Work Build the Scanners Management page to assign rooms to auto-registered scanners and a Logs Page to view the history of every action performed Add offline buffering to the scanner firmware so badge detections aren’t lost if WiFi drops, and flush them once reconnected Add checksum verification to the OTA process so a corrupted download can’t be flashed to a scanner"}, {"post_id": 30368, "ts": "2026-07-17T20:52:22Z", "hours": 7.6561, "text": "DEVLOG #7 - OTA FULLY IMPLEMENTED WITH AUTO-UPDATES, CAPTIVE PORTAL ADDED, FIRMWARE REFACTORED & STATUS LED Website : https://spottr.brunogg.in Work Done: Fully implemented Over-The-Air (OTA) updates for the scanner nodes. The pi-bridge watches Firebase for a new firmware version and publishes it over MQTT, each scanner compares it against its own version and only updates if it’s newer, then downloads, flashes and reboots itself. The version check runs on each scanner, so one publish updates every outdated node automatically Set up automatic releases using a GitHub Action, so publishing a new release on GitHub writes the version and download URL to Firebase on its own, which then cascades down to every scanner. Now a single release publish updates the whole fleet with no manual steps Added a WiFi captive portal for first-time scanner setup. On first boot the scanner hosts its own network and serves a 4-step wizard (name the room, connect WiFi, set the broker, confirm) styled to match the website. Config is saved to NVS after every step and the portal won’t let a scanner boot into normal mode until setup is fully complete, so one firmware image now works for every scanner without editing code Refactored the scanner firmware from one large file into separate modules ( config , portal , scanner , ota , led and globals ) for cleaner, more maintainable code Added a status LED on the scanner so its state can be read at a glance without a serial monitor - blinking while connecting, solid when online, a slow breathing fade while in the config portal, and a distinct pattern during an OTA update Fixed a bug where the dashboard counted an offline scanner as online, by trusting the health status set by the pi-bridge instead of guessing from the last-seen timestamp Future Work Build the Scanners Management page to assign rooms to auto-registered scanners and a Logs Page to view the history of every action performed Add offline buffering to the scanner firmware so badge detections aren’t lost if WiFi drops, and flush them once reconnected Add checksum verification to the OTA process so a corrupted download can’t be flashed to a scanner"}, {"post_id": 17080, "ts": "2026-06-27T18:48:35Z", "hours": 7.1619, "text": "DEVLOG #6 - SCANNER HEALTH CHECKS IMPLEMENTED, IDENTIFY SCANNERS VIA MAC, BADGE MANAGEMENT & OTA GROUNDWORK SET Website : https://spottr.brunogg.in Work Done: Built an active scanner health-check system - pi-bridge pings each scanner every 15s over MQTT, scanner replies with a pong , and a missed pong marks it offline within a few seconds. This replaced the old passive system where the scanner sent a heartbeat every 30 seconds to update its status Switched scanner identity to its MAC Address . with the pi-bridge verifying each scanner’s MAC and registering unknown scanners into Firebase as unassigned Refactored pi-bridge from one single large file into multiple sub-files ( config.py , handlers.py , health.py , presence.py , registry.py , state.py and main.py ) Started work on the Badges Management Page where the admin can add, edit, delete or enable/disable badges , where each row shows the live status of each badge as online/offline and current room, along with confirmation dialog boxes for destructive actions like deletion or disabling badges Laid the groundwork for OTA firmware updates for the scanner nodes, where I switched the scanner partition table to support two app slots, added semantic version tracking and comparison, and wrote the OTA update function (yet to be implemented properly) Future Work Fully implement the OTA function where the pi-bridge triggers the update by publishing the new firmware version over MQTT and automatically flash it to the scanners Add a captive portal where the scanners can be configured (Adding WiFi and Scanner IDs) without editing the code Build the Scanners Management page to assign rooms to auto-registered scanners and Logs Page to view history of every action performed"}, {"post_id": 12997, "ts": "2026-06-21T07:48:49Z", "hours": 5.1617, "text": "DEVLOG #5 — STARTED WORK ON ADMIN DASHBOARD, IMPLEMENTED LIVE FLOOR MAP Website: https://spottr.brunogg.in Work Done: Started work on the admin dashboard Built the floor map feature and made it show in which room a badge is currently in Live badge dots render directly on the floor map, positioned in the room they were last detected in Added StatCards to the Overview page -> Badges Online, Scanners Online, Rooms Occupied, Total Badges Future Work Add dynamically updating status for scanners where pi-bridge sends a heartbeat and scanner-node responds to it Add sections to admin dashboard to add, remove or manage badges and scanners, along with a logs section to log any changes"}, {"post_id": 9494, "ts": "2026-06-15T20:54:45Z", "hours": 5.8011, "text": "DEVLOG #4 - LOGIN PAGE, BUG FIXES AND OVERHALL BADGE AND SCANNER FIRMWARE ALONG WITH CHANGES IN PI-BRIDGE Website: https://spottr.brunogg.in Work Done: Implemented a login page with Firebase Auth which supports but Google Sign-In as well as via Email & Password (Added a test user with its credentials posted on login page for future testing and for public showcase of the project) Added Protected routes - dashboard will remain inaccessible without logging in Switched the badge identification from using device_id ex. SPOTTR_BADGE_0XX to a MAC Address based identification coz its much more reliable and harder to spook Fixed some major and minor bugs Worked on the pi-bridge code to get readings of MAC Address . Set up Firebase RTDB badges/ node — each badge registered by MAC address with label, owner name and active status. This will be used in the dashboard to display owner names instead of raw MAC addresses and also used to assign a badge to a user and block or allow access Future Work: Build the admin dashboard with live floor map giving location data for each badge user Continue work on the landing page"}, {"post_id": 7635, "ts": "2026-06-12T19:12:56Z", "hours": 6.6208, "text": "DEVLOG #3 — WEBSITE POLISH + PI BRIDGE COMPLETE Website: https://spottr.brunogg.in Work Done Built floating navbar with sliding hover pill animation on desktop Added hamburger menu for mobile with smooth open/close animations and click-outside-to-close Logo centers on mobile, left-aligns on desktop Fixed SPOTTR intro animation to be properly centered on all screen sizes Made hero section fully responsive for mobile Pi Bridge now pushes live badge locations to Firebase RTDB and logs history to Firestore Added online/offline detection for both scanner nodes and badges with 60 second timeout Future Work Build admin dashboard with live floor map pulling from Firebase RTDB Add How It Works, Hardware and Software sections to landing page Add Firebase Auth to protect the dashboard Flash second scanner node and test strongest-signal room detection across multiple rooms Deep sleep badge firmware for battery life"}, {"post_id": 4817, "ts": "2026-06-08T10:04:57Z", "hours": 4.1131, "text": "DEVLOG #2 — HARDWARE ARRIVES, FIRMWARE WORK BEGINS Finally the hardware arrived and I started work straight away… First time diving into this deep of C++ programming… Dam it was tough fr Website: https://spottr.brunogg.in/ Work Done Set up PlatformIO in VS Code for programming the ESP32 Boards Flashed badge firmware on ESP32-C3 to continuously advertise via BLE with ID SPOTTR_BADGE_0XX Built scanner node firmware for ESP32-C6 to scan for BLE Devices with ID starting from SPOTTR_ Set up Raspberry Pi OS and installed MQTT broker Improved Scanner Node range by using antennas salvaged from old WiFi routers Added 30 second heartbeat from scanner to monitor online/offline status Future Work Write code for Python Pi Bridge to receive MQTT data and push to Firebase Continue work on landing page of the website"}, {"post_id": 2951, "ts": "2026-06-05T21:10:53Z", "hours": 4.8175, "text": "DEVLOG #1 — WEBSITE WORK BEGINS Note: Hardware arrives on 7th June, the real work starts then Website: https://spottr.brunogg.in Work Done Designed a model for the badge using Fusion 360 and logo using Canva Got Hero Section working Added 3D model of the product in website using React Three Fiber Added Intro animation to the website using AceternityUI where the SPOTTR text draws itself across the full screen with color gradient stroke on load, then fades to reveal the hero content. (Took alot longer to perfect and get timings as well as colors right 💀) Future Work Start hardware work the moment it arrives on 7th June Get the Pi Bridge system up and collecting RSSI data from scanner nodes"}]...
|
Title: Spottr by @BrunoGG | Stardance
Devlogs:
DE Title: Spottr by @BrunoGG | Stardance
Devlogs:
DEVLOG #1 — WEBSITE WORK BEGINS Note: Hardware arrives on 7th June, the real work starts then Website: https://spottr.brunogg.in Work Done Designed a model for the badge using Fusion 360 and logo using Canva Got Hero Section working Added 3D model of the product in website using React Three Fiber Added Intro animation to the website using AceternityUI where the SPOTTR text draws itself across the full screen with color gradient stroke on load, then fades to reveal the hero content. (Took alot longer to perfect and get timings as well as colors right 💀) Future Work Start hardware work the moment it arrives on 7th June Get the Pi Bridge system up and collecting RSSI data from scanner nodes
DEVLOG #2 — HARDWARE ARRIVES, FIRMWARE WORK BEGINS Finally the hardware arrived and I started work straight away… First time diving into this deep of C++ programming… Dam it was tough fr Website: https://spottr.brunogg.in/ Work Done Set up PlatformIO in VS Code for programming the ESP32 Boards Flashed badge firmware on ESP32-C3 to continuously advertise via BLE with ID SPOTTR_BADGE_0XX Built scanner node firmware for ESP32-C6 to scan for BLE Devices with ID starting from SPOTTR_ Set up Raspberry Pi OS and installed MQTT broker Improved Scanner Node range by using antennas salvaged from old WiFi routers Added 30 second heartbeat from scanner to monitor online/offline status Future Work Write code for Python Pi Bridge to receive MQTT data and push to Firebase Continue work on landing page of the website
DEVLOG #3 — WEBSITE POLISH + PI BRIDGE COMPLETE Website: https://spottr.brunogg.in Work Done Built floating navbar with sliding hover pill animation on desktop Added hamburger menu for mobile with smooth open/close animations and click-outside-to-close Logo centers on mobile, left-aligns on desktop Fixed SPOTTR intro animation to be properly centered on all screen sizes Made hero section fully responsive for mobile Pi Bridge now pushes live badge locations to Firebase RTDB and logs history to Firestore Added online/offline detection for both scanner nodes and badges with 60 second timeout Future Work Build admin dashboard with live floor map pulling from Firebase RTDB Add How It Works, Hardware and Software sections to landing page Add Firebase Auth to protect the dashboard Flash second scanner node and test strongest-signal room detection across multiple rooms Deep sleep badge firmware for battery life
DEVLOG #4 - LOGIN PAGE, BUG FIXES AND OVERHALL BADGE AND SCANNER FIRMWARE ALONG WITH CHANGES IN PI-BRIDGE Website: https://spottr.brunogg.in Work Done: Implemented a login page with Firebase Auth which supports but Google Sign-In as well as via Email & Password (Added a test user with its credentials posted on login page for future testing and for public showcase of the project) Added Protected routes - dashboard will remain inaccessible without logging in Switched the badge identification from using device_id ex. SPOTTR_BADGE_0XX to a MAC Address based identification coz its much more reliable and harder to spook Fixed some major and minor bugs Worked on the pi-bridge code to get readings of MAC Address . Set up Firebase RTDB badges/ node — each badge registered by MAC address with label, owner name and active status. This will be used in the dashboard to display owner names instead of raw MAC addresses and also used to assign a badge to a user and block or allow access Future Work: Build the admin dashboard with live floor map giving location data for each badge user Continue work on the landing page
DEVLOG #5 — STARTED WORK ON ADMIN DASHBOARD, IMPLEMENTED LIVE FLOOR MAP Website: https://spottr.brunogg.in Work Done: Started work on the admin dashboard Built the floor map feature and made it show in which room a badge is currently in Live badge dots render directly on the floor map, positioned in the room they were last detected in Added StatCards to the Overview page -> Badges Online, Scanners Online, Rooms Occupied, Total Badges Future Work Add dynamically updating status for scanners where pi-bridge sends a heartbeat and scanner-node responds to it Add sections to admin dashboard to add, remove or manage badges and scanners, along with a logs section to log any changes
DEVLOG #6 - SCANNER HEALTH CHECKS IMPLEMENTED, IDENTIFY SCANNERS VIA MAC, BADGE MANAGEMENT & OTA GROUNDWORK SET Website : https://spottr.brunogg.in Work Done: Built an active scanner health-check system - pi-bridge pings each scanner every 15s over MQTT, scanner replies with a pong , and a missed pong marks it offline within a few seconds. This replaced the old passive system where the scanner sent a heartbeat every 30 seconds to update its status Switched scanner identity to its MAC Address . with the pi-bridge verifying each scanner’s MAC and registering unknown scanners into Firebase as unassigned Refactored pi-bridge from one single large file into multiple sub-files ( config.py , handlers.py , health.py , presence.py , registry.py , state.py and main.py ) Started work on the Badges Management Page where the admin can add, edit, delete or enable/disable badges , where each row shows the live status of each badge as online/offline and current room, along with confirmation dialog boxes for destructive actions like deletion or disabling badges Laid the groundwork for OTA firmware updates for the scanner nodes, where I switched the scanner partition table to support two app slots, added semantic version tracking and comparison, and wrote the OTA update function (yet to be implemented properly) Future Work Fully implement the OTA function where the pi-bridge triggers the update by publishing the new firmware version over MQTT and automatically flash it to the scanners Add a captive portal where the scanners can be configured (Adding WiFi and Scanner IDs) without editing the code Build the Scanners Management page to assign rooms to auto-registered scanners and Logs Page to view history of every action performed
DEVLOG #7 - OTA FULLY IMPLEMENTED WITH AUTO-UPDATES, CAPTIVE PORTAL ADDED, FIRMWARE REFACTORED & STATUS LED Website : https://spottr.brunogg.in Work Done: Fully implemented Over-The-Air (OTA) updates for the scanner nodes. The pi-bridge watches Firebase for a new firmware version and publishes it over MQTT, each scanner compares it against its own version and only updates if it’s newer, then downloads, flashes and reboots itself. The version check runs on each scanner, so one publish updates every outdated node automatically Set up automatic releases using a GitHub Action, so publishing a new release on GitHub writes the version and download URL to Firebase on its own, which then cascades down to every scanner. Now a single release publish updates the whole fleet with no manual steps Added a WiFi captive portal for first-time scanner setup. On first boot the scanner hosts its own network and serves a 4-step wizard (name the room, connect WiFi, set the broker, confirm) styled to match the website. Config is saved to NVS after every step and the portal won’t let a scanner boot into normal mode until setup is fully complete, so one firmware image now works for every scanner without editing code Refactored the scanner firmware from one large file into separate modules ( config , portal , scanner , ota , led and globals ) for cleaner, more maintainable code Added a status LED on the scanner so its state can be read at a glance without a serial monitor - blinking while connecting, solid when online, a slow breathing fade while in the config portal, and a distinct pattern during an OTA update Fixed a bug where the dashboard counted an offline scanner as online, by trusting the health status set by the pi-bridge instead of guessing from the last-seen timestamp Future Work Build the Scanners Management page to assign rooms to auto-registered scanners and a Logs Page to view the history of every action performed Add offline buffering to the scanner firmware so badge detections aren’t lost if WiFi drops, and flush them once reconnected Add checksum verification to the OTA process so a corrupted download can’t be flashed to a scanner
DEVLOG #8 - MQTT AUTH, POWER-FAILURE RECOVERY, DASHBOARD REDESIGNED FROM SCRATCH Website : https://spottr.brunogg.in Work Done: Added MQTT username and password support across the whole stack. The captive portal now has optional auth fields, the credentials save to NVS with the rest of the config, and the pi-bridge authenticates the same way. Leaving them blank keeps the old anonymous behaviour, so nothing broke for existing setups Fixed a bug where every scanner broadcast the same setup network name . The AP name is built from the last two bytes of the device MAC, but it was being read from the WiFi driver before the interface existed, so every board came up as Spottr-Scanner-0000 . Reading the MAC directly from efuse fixed it, and each scanner now shows its real suffix, unique per device and stable across reboots Fixed a power-failure recovery bug that only showed up in the real deployment. When the power came back, the scanners booted in about two seconds but the router took closer to a minute, so the scanners found no network, assumed they were unconfigured, and dropped into the config portal. Every node had to be manually restarted. The logic was treating “can’t connect right now” as “isn’t set up”. Now a scanner with credentials in NVS retries WiFi indefinitely and only ever opens the portal if there are genuinely no credentials or the command is given over serial Added a WiFi watchdog to the main loop, so a dropout during normal operation reconnects on its own instead of leaving the scanner stuck retrying MQTT over a dead network Fixed the OTA status LED never actually animating . ledSet() only records the state, and the pin write happens in ledUpdate() , which runs from the main loop, but the OTA download blocks that loop entirely. So the LED just froze at whatever brightness it had. Driving it from httpUpdate ’s progress callback fixed it, and the pattern is twice as fast now so a quick update is still visible Redesigned the dashboard from scratch. Went for a design language closer to Nothing and Apple’s dark mode, so the whole thing is monochrome with mono uppercase labels, thin tabular numerals and a lot of empty space. Stripped out the animated gradient orbs, the dot-grid background and the glassmorphism, since that look is everywhere now and reads as generic. Cards are visible because they’re lighter than the page rather than because they have a border, and colour only appears where it means something, so a room lighting up when someone walks in is the only saturated thing on screen Rebuilt the Overview page as three columns, with stats and occupied rooms on the left, the floor map in the middle, and a badge rail on the right where every badge can be searched, edited, disabled or deleted without leaving the page. Added pan and zoom to the map Fixed a bug where any badge added through the dashboard would never show a location. New badges were saved with an uppercase MAC while the pi-bridge writes location keys in lowercase, so the two never matched. Pulled the MAC handling into a shared module so both pages normalise the same way Replaced the component-library sidebar with a custom animated one , and moved the shared liveness and badge logic into lib/status.js and lib/badges.js . The duplicated copies of that logic are exactly what let the floor map and the overview page drift apart and disagree about which scanners were online Future Work Build the Scanners Management page to assign rooms to auto-registered scanners and a Logs Page to view the history of every action performed Add offline buffering to the scanner firmware so badge detections aren’t lost if WiFi drops, and flush them once reconnected Add checksum verification to the OTA process so a corrupted download can’t be flashed to a scanner
DEVLOG #9 - BADGE CASE REDESIGNED, PRINTED AND ASSEMBLED Website : https://spottr.brunogg.in Work Done: Redesigned the badge enclosure from scratch in Fusion 360 to fit the new battery, which got thicker but smaller in footprint while the badge had to stay credit-card sized at 86 x 54 mm Made the whole model parametric , so every dimension falls out of a handful of named values and the next component change is a one-number edit instead of another rebuild Added the Spottr logo embossed on the lid and a USB-C cutout sized off the actual connector Got it printed through #printing-legion and it came out clean Assembled the hardware into it : XIAO ESP32-C3, LiPo and status LED all sit flat in the cavity with the lid seating properly on top
Ships:
SPOTTR is an open-source indoor presence tracking system built on ESP32-C3 and Bluetooth Low Energy. Wear a badge, walk into a room, show up on the map....
|
1793263815.8790004
|
1793350215.8790004
|
|
4885
|
My first slack bot! by @skarletknight09 | Stardanc My first slack bot! by @skarletknight09 | Stardance...
|
skarletknight09
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @skarletknight09 | S Title: My first slack bot! by @skarletknight09 | Stardance...
|
1793191649.1761224
|
1793796449.1761224
|
|
4886
|
My awesome macropad! by @vargasr_mariac | Stardanc My awesome macropad! by @vargasr_mariac | Stardance...
|
vargasr_mariac
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @vargasr_mariac | S Title: My awesome macropad! by @vargasr_mariac | Stardance...
|
1793227968.0919137
|
1793832768.0919137
|
|
4887
|
Yama Ai by @lord-juki | Stardance
|
lord-juki
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Yama Ai by @lord-juki | Stardance
|
1793263857.8808906
|
1793868657.8808906
|
|
4888
|
Leetcode time tracker by @jaswanthremiel | Stardan Leetcode time tracker by @jaswanthremiel | Stardance...
|
jaswanthremiel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Leetcode time tracker by @jaswanthremiel | Title: Leetcode time tracker by @jaswanthremiel | Stardance...
|
1792727482.4900427
|
1793332282.4900427
|
|
4889
|
Wigglboard by @Bobert3D | Stardance
|
Bobert3D
|
0
|
0.76
|
0
|
[]
|
[{"post_id": 1093, "ts": "2026 [{"post_id": 1093, "ts": "2026-06-02T22:24:55Z", "hours": 0.4611, "text": "Started the PCB using the Hackpad guide for the base. lol I don’t get matrix lol!!!"}, {"post_id": 876, "ts": "2026-06-02T16:26:40Z", "hours": 0.2981, "text": "Started the zmk config and the paper draft of the layout for the shells!!!"}]...
|
Title: Wigglboard by @Bobert3D | Stardance
Devlog Title: Wigglboard by @Bobert3D | Stardance
Devlogs:
Started the zmk config and the paper draft of the layout for the shells!!!
Started the PCB using the Hackpad guide for the base. lol I don’t get matrix lol!!!...
|
1792749255.6177871
|
1793354055.6177871
|
|
4890
|
My awesome macropad! by @rjbrjb22 | Stardance
|
rjbrjb22
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @rjbrjb22 | Stardan Title: My awesome macropad! by @rjbrjb22 | Stardance...
|
1792799362.3006766
|
1793404162.3006766
|
|
4891
|
Untitled by @umer | Stardance
|
umer
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @umer | Stardance
|
1792734682.7917657
|
1793339482.7917657
|
|
4892
|
My awesome macropad! by @opal_siegal | Stardance
|
opal_siegal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @opal_siegal | Star Title: My awesome macropad! by @opal_siegal | Stardance...
|
1792788703.832761
|
1793393503.832761
|
|
4893
|
My first slack bot! by @rjbrjb22 | Stardance
|
rjbrjb22
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @rjbrjb22 | Stardanc Title: My first slack bot! by @rjbrjb22 | Stardance...
|
1793256579.5441685
|
1793861379.5441685
|
|
4894
|
My awesome macropad! by @Swapnil_Nayak | Stardance
|
Swapnil_Nayak
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Swapnil_Nayak | St Title: My awesome macropad! by @Swapnil_Nayak | Stardance...
|
1792738217.0189438
|
1793343017.0189438
|
|
4895
|
My first slack bot! by @Atha | Stardance
|
Atha
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Atha | Stardance
|
1792623307.0457702
|
1793228107.0457702
|
|
4896
|
Sea Explorer by @Heidi | Stardance
|
Heidi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Sea Explorer by @Heidi | Stardance
|
1792666230.343775
|
1793271030.343775
|
|
4897
|
My first slack bot! by @emilycarroll2028 | Stardan My first slack bot! by @emilycarroll2028 | Stardance...
|
emilycarroll2028
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @emilycarroll2028 | Title: My first slack bot! by @emilycarroll2028 | Stardance...
|
1792648259.1168058
|
1793253059.1168058
|
|
4898
|
My first slack bot! by @Santy_135 | Stardance
|
Santy_135
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Santy_135 | Stardan Title: My first slack bot! by @Santy_135 | Stardance...
|
1793184903.2909136
|
1793789703.2909136
|
|
4899
|
My awesome macropad! by @sae | Stardance
|
sae
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sae | Stardance
|
1792641076.6279278
|
1793245876.6279278
|
|
4900
|
My awesome macropad! by @ada_bardiz | Stardance
|
ada_bardiz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ada_bardiz | Stard Title: My awesome macropad! by @ada_bardiz | Stardance...
|
1792943430.0400102
|
1793807430.0400102
|