|
17951
|
Macro Keyboard by @nikolas_kelava | Stardance
|
nikolas_kelava
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Macro Keyboard by @nikolas_kelava | Stardan Title: Macro Keyboard by @nikolas_kelava | Stardance...
|
1793890161.8594174
|
1794494961.8594174
|
|
17952
|
My very own WebOS by @nightswamp | Stardance
|
nightswamp
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @nightswamp | Stardanc Title: My very own WebOS by @nightswamp | Stardance...
|
1793465299.4354346
|
1794070099.4354346
|
|
17953
|
Cosmos Lens by @Aahan | Stardance
|
Aahan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cosmos Lens by @Aahan | Stardance
|
1793397161.9381423
|
1794001961.9381423
|
|
17954
|
Devenv by @janekmusin | Stardance
|
janekmusin
|
1
|
3.0
|
23
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T20:08:15Z", "hours": 3.0, "multiplier": 7.24, "payout": 23, "blessing": "neutral", "text": "Got it! I hope I don’t have to reship, because I don’t know what else can I do in this project. It has been an interesting experience. It’s my first time contributing to a real, established project and I couldn’t be more proud. If you haven’t already done that, you must try it! Happy hacking Image: Not a symlink!", "repo": "https://github.com/First-Non-Interesting-Username/devenv", "demo": "https://github.com/cachix/devenv/pull/2951"}]...
|
[{"post_id": 14526, "ts": "202 [{"post_id": 14526, "ts": "2026-06-23T17:47:59Z", "hours": 0.3222, "text": "The project is ready for a ship! I created a README, compliant with stardance instructions"}, {"post_id": 14504, "ts": "2026-06-23T17:22:46Z", "hours": 0.3625, "text": "Merged! My second PR got merged into the upstream. I’m really proud of what I did, even if the change took only 19 minutes to code and test. The change wasn’t that hard to make, thanks to the fact the main contributor allowed for coping generated files instead of linking them."}, {"post_id": 14426, "ts": "2026-06-23T15:34:05Z", "hours": 2.5056, "text": "My PR has been closed, because the main contributor created a better solution for the issue I was trying to fix. Does that sucks? Maybe, but it’s better for the project to have their, better and more mature solution, over mine. A link to the PR for the curious: https://github.com/cachix/devenv/pull/2932"}]...
|
Title: Devenv by @janekmusin | Stardance
Devlogs: Title: Devenv by @janekmusin | Stardance
Devlogs:
My PR has been closed, because the main contributor created a better solution for the issue I was trying to fix. Does that sucks? Maybe, but it’s better for the project to have their, better and more mature solution, over mine. A link to the PR for the curious: https://github.com/cachix/devenv/pull/2932
Merged! My second PR got merged into the upstream. I’m really proud of what I did, even if the change took only 19 minutes to code and test. The change wasn’t that hard to make, thanks to the fact the main contributor allowed for coping generated files instead of linking them.
The project is ready for a ship! I created a README, compliant with stardance instructions
Ships:
Got it! I hope I don’t have to reship, because I don’t know what else can I do in this project. It has been an interesting experience. It’s my first time contributing to a real, established project and I couldn’t be more proud. If you haven’t already done that, you must try it! Happy hacking Image: Not a symlink!...
|
1793720936.961224
|
1793807336.961224
|
|
17955
|
Nexi Bot by @Kian_Sequeira | Stardance
|
Kian_Sequeira
|
0
|
1.17
|
0
|
[]
|
[{"post_id": 8339, "ts": "2026 [{"post_id": 8339, "ts": "2026-06-13T21:12:04Z", "hours": 1.1697, "text": "Nexi Devlog — 13/06/2026 Progress Update Began moving from concept into actual schematic and system design Focused on turning the idea of Nexi into something physically buildable What’s Been Done Defined Nexi as a rover-style companion bot Confirmed use of a 4 wheel independent drive system Each wheel will have its own motor for precise control Started building and wiring internal modules within the schematic Established basic signal flow between components Design Decisions Chose independent wheel drive instead of traditional steering This allows: Turning on the spot Better movement in tight spaces Easier recovery from difficult positions This approach makes Nexi more flexible for exploration Current State Core modules are now placed and wired in the schematic Overall system structure is beginning to take shape Ready to move into control and logic implementation Next Steps Add control signals such as clock and enable Implement output handling and selection logic Begin integrating sensors for environmental scanning Start designing the display system for Nexi’s face Test basic movement logic Notes The project is becoming more complex than originally planned, but this is intentional Nexi is designed to be both functional and expressive, not just a simple robot Long term goals still include interaction with the environment and basic object manipulation https://github.com/TheDevKing6/Nexi/blob/87b86cd2bc1cd5a623889c02fab7e5258aeb7dab/README.md"}]...
|
Title: Nexi Bot by @Kian_Sequeira | Stardance
Dev Title: Nexi Bot by @Kian_Sequeira | Stardance
Devlogs:
Nexi Devlog — 13/06/2026 Progress Update Began moving from concept into actual schematic and system design Focused on turning the idea of Nexi into something physically buildable What’s Been Done Defined Nexi as a rover-style companion bot Confirmed use of a 4 wheel independent drive system Each wheel will have its own motor for precise control Started building and wiring internal modules within the schematic Established basic signal flow between components Design Decisions Chose independent wheel drive instead of traditional steering This allows: Turning on the spot Better movement in tight spaces Easier recovery from difficult positions This approach makes Nexi more flexible for exploration Current State Core modules are now placed and wired in the schematic Overall system structure is beginning to take shape Ready to move into control and logic implementation Next Steps Add control signals such as clock and enable Implement output handling and selection logic Begin integrating sensors for environmental scanning Start designing the display system for Nexi’s face Test basic movement logic Notes The project is becoming more complex than originally planned, but this is intentional Nexi is designed to be both functional and expressive, not just a simple robot Long term goals still include interaction with the environment and basic object manipulation https://github.com/TheDevKing6/Nexi/blob/87b86cd2bc1cd5a623889c02fab7e5258aeb7dab/README.md...
|
1793220761.7223613
|
1793825561.7223613
|
|
17956
|
My very own WebOS by @RadiatingDucks | Stardance
|
RadiatingDucks
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @RadiatingDucks | Star Title: My very own WebOS by @RadiatingDucks | Stardance...
|
1793285290.883335
|
1793890090.883335
|
|
17957
|
Draw a perfect star by @zainab_2359 | Stardance
|
zainab_2359
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Draw a perfect star by @zainab_2359 | Stard Title: Draw a perfect star by @zainab_2359 | Stardance...
|
1793386451.8567274
|
1793991251.8567274
|
|
17958
|
asdf by @astra_celestine | Stardance
|
astra_celestine
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: asdf by @astra_celestine | Stardance
|
1793210158.9097936
|
1793814958.9097936
|
|
17959
|
InkFlow by @Ved | Stardance
|
Ved
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T18:34:18Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "InkFlow A modern infinite whiteboard application built with Python and PySide6 . 🚀 Project Status InkFlow is currently in active development. The foundation of the application has been built, focusing on creating a scalable architecture that will support multiple drawing tools and future features. Features Implemented till date Pen Tool Smooth freehand drawing Rounded stroke caps Rounded joins for natural handwriting Adjustable pen width Automatic stroke creation using QPainterPath • Single Click Dot Drawing InkFlow automatically detects when the mouse is clicked without movement and draws a perfectly centered filled dot instead of creating an empty stroke. Infinite Canvas The application currently provides a large virtual drawing area using QGraphicsScene , allowing users to freely move around while drawing. Current scene size: 5000 × 5000 px This will later evolve into a dynamically expanding infinite canvas. Panning Navigate around the canvas using: Middle Mouse Button + Drag Hold Space + Left Mouse Drag The camera moves independently of the drawing system, allowing a smooth workflow similar to professional whiteboard applications. Zoom Implemented mouse-wheel zoom with: Zoom centered around the mouse cursor Geometric zoom progression Minimum zoom limit Maximum zoom limit This provides smooth navigation without distortion. Architecture One of the major goals of InkFlow is maintaining a clean and extensible architecture. Instead of placing all functionality inside a single Canvas class, responsibilities have been separated. MainWindow │ └── Canvas │ ├── Camera (Pan & Zoom) ├── Scene Management └── Tool System │ └── Active Tool Tool System InkFlow has a modular tool architecture, which makes it easier to maintain. Current hierarchy: BaseTool │ └── PenTool Each tool is responsible for implementing its own: Mouse Press Mouse Move Mouse Release This allows future tools to be added without modifying the core canvas. Tool Registry Canvas maintains a registry of available tools. Example: self . tools = { \" pen \" : PenTool ( self ) } The active tool is simply a reference to one of these objects. self . active_tool = self . tools [ \" pen \" ] This makes switching tools straightforward while preserving each tool’s internal state. Current Project Structure InkFlow/ │ ├── main.py │ ├── ui/ │ ├── main_window.py │ └── canvas.py │ ├── tools/ │ ├── base_tool.py │ └── pen_tool.py │ └── assets/ Current Development Goals Build a modular tool system Keep the codebase clean and scalable Separate UI logic from drawing logic Prepare the project for future expansion Planned Features The following features are planned for future versions: Tool Toolbar Eraser Tool Rectangle Tool Circle Tool Line Tool Arrow Tool Text Tool Selection Tool Color Picker Brush Size Controls Undo / Redo Layers Infinite Dynamic Canvas Save / Load Projects Export to PNG Export to PDF Keyboard Shortcuts Custom Themes Design Philosophy InkFlow is being designed with long-term maintainability in mind. Instead of building features as one large class, the project follows an object-oriented architecture where each component has a single responsibility. This approach makes adding new tools and features significantly easier while keeping the codebase organized and maintainable. Controls:- Panning = Mouse scroll wheel button = space bar + mouse left click button Drawing = left mouse button", "repo": "https://github.com/VedDevs/InkFlow", "demo": "https://github.com/VedDevs/InkFlow/"}]...
|
[{"post_id": 18523, "ts": "202 [{"post_id": 18523, "ts": "2026-06-29T18:21:35Z", "hours": 0.9094, "text": "Devlog #3 - Improved the code formatting I divided the the working of the code into different pipelines I also added new folders to organize everything I added the folders UI and tools to organize the pipelines I divided the tools from the main Canvas.py to sub scripts in the Tools Folder, like base_tool.py and pen_tool.py Then in canvas.py I added a simple method to check the current active tool and how to call it actively."}, {"post_id": 17708, "ts": "2026-06-28T16:56:15Z", "hours": 1.0828, "text": "Devlog #2 - making it Pan and Zoom and Adding infinite space I implemented infinite panning, precision scroll-wheel zooming, and smoother pen aesthetics along with Infinite Canvas Challenges and Solutions The problem I faced was that It was difficult to add support for both space bar and left click(of the mouse) being pressed at the same time So to solve it I introduced 3 variables self.panning = False , self.pan_start = None and self.space_pressed = False then while checking for the key press, we check for space bar and set the variable self.space_pressed to true and then while checking for the mouse press event we set the variable self.panning to True And then finally in the mouse move event we actually pan in the canvas by moving the camera self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() - int(delta.x())) self.verticalScrollBar().setValue(self.verticalScrollBar().value() - int(delta.y()))"}, {"post_id": 17436, "ts": "2026-06-28T06:43:14Z", "hours": 2.2492, "text": "Devlog #1 - Making it Click, Draw lines & Dots Today I created a window on the screen that scales nicely to the user’s monitor and created a responsive digital canvas on which you can draw Lines and dots till now The Problem and solution I faced a problem that didn’t let me draw dots the problem was:- clicking on the canvas without dragging the mouse left absolutely nothing on the screen. The path-drawing logic expected continuous cursor updates to generate lines. Tapping the screen to place a single dot was functionally invisible. So I introduced a self.has_moved variable which is set to False by default and when the user presses the left button and moves the mouse it is set to True then we run a Check in the release event that if has_moved = False then it draws a dot otherwise it draws a line using self.last_point and self.current_point"}]...
|
Title: InkFlow by @Ved | Stardance
Devlogs:
Devlo Title: InkFlow by @Ved | Stardance
Devlogs:
Devlog #1 - Making it Click, Draw lines & Dots Today I created a window on the screen that scales nicely to the user’s monitor and created a responsive digital canvas on which you can draw Lines and dots till now The Problem and solution I faced a problem that didn’t let me draw dots the problem was:- clicking on the canvas without dragging the mouse left absolutely nothing on the screen. The path-drawing logic expected continuous cursor updates to generate lines. Tapping the screen to place a single dot was functionally invisible. So I introduced a self.has_moved variable which is set to False by default and when the user presses the left button and moves the mouse it is set to True then we run a Check in the release event that if has_moved = False then it draws a dot otherwise it draws a line using self.last_point and self.current_point
Devlog #2 - making it Pan and Zoom and Adding infinite space I implemented infinite panning, precision scroll-wheel zooming, and smoother pen aesthetics along with Infinite Canvas Challenges and Solutions The problem I faced was that It was difficult to add support for both space bar and left click(of the mouse) being pressed at the same time So to solve it I introduced 3 variables self.panning = False , self.pan_start = None and self.space_pressed = False then while checking for the key press, we check for space bar and set the variable self.space_pressed to true and then while checking for the mouse press event we set the variable self.panning to True And then finally in the mouse move event we actually pan in the canvas by moving the camera self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() - int(delta.x())) self.verticalScrollBar().setValue(self.verticalScrollBar().value() - int(delta.y()))
Devlog #3 - Improved the code formatting I divided the the working of the code into different pipelines I also added new folders to organize everything I added the folders UI and tools to organize the pipelines I divided the tools from the main Canvas.py to sub scripts in the Tools Folder, like base_tool.py and pen_tool.py Then in canvas.py I added a simple method to check the current active tool and how to call it actively.
Ships:
InkFlow A modern infinite whiteboard application built with Python and PySide6 . 🚀 Project Status InkFlow is currently in active development. The foundation of the application has been built, focusing on creating a scalable architecture that will support multiple drawing tools and future features. Features Implemented till date Pen Tool Smooth freehand drawing Rounded stroke caps Rounded joins for natural handwriting Adjustable pen width Automatic stroke creation using QPainterPath • Single Click Dot Drawing InkFlow automatically detects when the mouse is clicked without movement and draws a perfectly centered filled dot instead of creating an empty stroke. Infinite Canvas The application currently provides a large virtual drawing area using QGraphicsScene , allowing users to freely move around while drawing. Current scene size: 5000 × 5000 px This will later evolve into a dynamically expanding infinite canvas. Panning Navigate around the canvas using: Middle Mouse Button + Drag Hold Space + Left Mouse Drag The camera moves independently of the drawing system, allowing a smooth workflow similar to professional whiteboard applications. Zoom Implemented mouse-wheel zoom with: Zoom centered around the mouse cursor Geometric zoom progression Minimum zoom limit Maximum zoom limit This provides smooth navigation without distortion. Architecture One of the major goals of InkFlow is maintaining a clean and extensible architecture. Instead of placing all functionality inside a single Canvas class, responsibilities have been separated. MainWindow │ └── Canvas │ ├── Camera (Pan & Zoom) ├── Scene Management └── Tool System │ └── Active Tool Tool System InkFlow has a modular tool architecture, which makes it easier to maintain. Current hierarchy: BaseTool │ └── PenTool Each tool is responsible for implementing its own: Mouse Press Mouse Move Mouse Release This allows future tools to be added without modifying the core canvas. Tool Registry Canvas maintains a registry of available tools. Example: self . tools = { " pen " : PenTool ( self ) } The active tool is simply a reference to one of these objects. self . active_tool = self . tools [ " pen " ] This makes switching tools straightforward while preserving each tool’s internal state. Current Project Structure InkFlow/ │ ├── main.py │ ├── ui/ │ ├── main_window.py │ └── canvas.py │ ├── tools/ │ ├── base_tool.py │ └── pen_tool.py │ └── assets/ Current Development Goals Build a modular tool system Keep the codebase clean and scalable Separate UI logic from drawing logic Prepare the project for future expansion Planned Features The following features are planned for future versions: Tool Toolbar Eraser Tool Rectangle Tool Circle Tool Line Tool Arrow Tool Text Tool Selection Tool Color Picker Brush Size Controls Undo / Redo Layers Infinite Dynamic Canvas Save / Load Projects Export to PNG Export to PDF Keyboard Shortcuts Custom Themes Design Philosophy InkFlow is being designed with long-term maintainability in mind. Instead of building features as one large class, the project follows an object-oriented architecture where each component has a single responsibility. This approach makes adding new tools and features significantly easier while keeping the codebase organized and maintainable. Controls:- Panning = Mouse scroll wheel button = space bar + mouse left click button Drawing = left mouse button...
|
1793775494.5079648
|
1793861894.5079648
|
|
17960
|
My first slack bot! by @kuze1000 | Stardance
|
kuze1000
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @kuze1000 | Stardanc Title: My first slack bot! by @kuze1000 | Stardance...
|
1793436490.1237588
|
1794041290.1237588
|
|
17961
|
SpotOn by @nishanth05 | Stardance
|
nishanth05
|
1
|
2.0
|
15
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T19:07:30Z", "hours": 2.0, "multiplier": 7.23, "payout": 15, "blessing": "neutral", "text": "SpotOn is a Slack bot that brings music discovery into your workspace via slash commands. Random track picks, artist comparisons, similar artist recommendations, stats, trivia, and band name generation — all without leaving Slack. It uses the free music brainz api and trivia api. Originally the project was supposed to use the spotify developer api , it’s been long since i used the api. When i tried to Implement the commands below, i encountered the error of not having a spotify premium account 😭. Finally ended up changing everyting to the music brainz api. Making a slack bot using javascript was definitely an experience, as once i’ve made a slack bot with python. Using the actions to handle the trivia was a headache second to the artist comparing So please sure do check out the /spoton-trivia and /spoton-vs commands. Of course there are other ones, make sure to try them before deciding ✌️", "repo": "https://github.com/Nishanth-S-A/SpotOn", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B8P5DRDB3"}]...
|
[{"post_id": 8254, "ts": "2026 [{"post_id": 8254, "ts": "2026-06-13T18:47:25Z", "hours": 2.0511, "text": "Guess it’s done , SpotOn Project: SpotOn · Stack: Node.js, Slack Bolt, MusicBrainz API, OpenTDB Status: ✅ Working · Commands shipped: 6 What is SpotOn? SpotOn is a Slack bot that brings music discovery into your workspace via slash commands. Random track picks, artist comparisons, similar artist recommendations, stats, trivia, and band name generation — all without leaving Slack. The goal was simple: a bot you can actually use casually in a team channel without it feeling like a chore. What I Built CommandWhat it does/spoton-trackRandom track pick from the MusicBrainz catalogue/spoton-similar Finds artists sharing genres/tags/spoton-vs vs Head-to-head stat battle/spoton-stats Full artist profile — genres, albums, recordings/spoton-triviaInteractive music trivia with Slack buttons/spoton-bandnameGenerates a random band name + debut album title The Spotify Problem I originally built everything on the Spotify Web API. No user OAuth needed — just client credentials for public catalog data. Seemed perfect. Then the /spoton-track command started throwing 403 Forbidden. The error body said it all: “Active premium subscription required for the owner of the app.” Spotify quietly tightened their API access in late 2024. Even the Search endpoint — purely public catalog data — now requires the app owner to have a Premium account. Every command I’d built against the Search API was dead. Scrapped Spotify entirely. Switched everything to MusicBrainz. Why MusicBrainz Completely free, no API key required Massive open music database Structured data: tags, release groups, recordings, artist relationships The only rule: identify your app in the User-Agent header and stay under ~1 req/sec The tradeoff is no popularity scores or audio previews, but for everything SpotOn actually needs — artist metadata, genres, recordings, album counts — it’s more than enough. Interesting Implementation Notes Similar artists without a “related” endpoint MusicBrainz has no direct “related artists” API. The workaround: fetch the source artist’s top tags, then search for other artists matching those same tags. It’s not perfect, but the results are surprisingly good — searching tag:alternative rock AND tag:indie for Radiohead surfaces exactly the kind of artists you’d expect. Parsing /spoton-vs input Getting two artist names from a single text field is messier than it looks. Users might type: Taylor Swift vs Drake Taylor Swift, Drake oasis blur (no separator at all) The final parsing tries vs split first, then comma, then a midpoint word split as a last resort. Not bulletproof, but handles the common cases. Documenting the preferred format in /spoton-help does the rest. Trivia with interactive buttons The /spoton-trivia command uses Slack’s Block Kit action buttons for the answer choices. Answer state is stored in a Map keyed by userId-channelId, so multiple people can have active questions at once. The map entry is deleted after the user answers, keeping memory clean. One gotcha: the OpenTDB API returns HTML-encoded strings (&, ', etc.) in question and answer text. Had to add a small decode() helper to strip those before sending to Slack, otherwise the blocks render raw HTML entities. MusicBrainz rate limiting MusicBrainz asks for 1 request/second max. Commands like /spoton-stats make 3 sequential API calls (artist detail, albums, recordings). Running them with Promise.all works fine most of the time, but under load it can trigger a 503. The safe pattern is sequential calls with a sleep(300) between each — slower, but reliable. Stack Runtime: Node.js Slack: Slack Bolt with Socket Mode (no public URL needed) Music data: MusicBrainz API (free, no key) Trivia: OpenTDB API (free, no key) HTTP: axios Config: dotenv"}]...
|
Title: SpotOn by @nishanth05 | Stardance
Devlogs: Title: SpotOn by @nishanth05 | Stardance
Devlogs:
Guess it’s done , SpotOn Project: SpotOn · Stack: Node.js, Slack Bolt, MusicBrainz API, OpenTDB Status: ✅ Working · Commands shipped: 6 What is SpotOn? SpotOn is a Slack bot that brings music discovery into your workspace via slash commands. Random track picks, artist comparisons, similar artist recommendations, stats, trivia, and band name generation — all without leaving Slack. The goal was simple: a bot you can actually use casually in a team channel without it feeling like a chore. What I Built CommandWhat it does/spoton-trackRandom track pick from the MusicBrainz catalogue/spoton-similar Finds artists sharing genres/tags/spoton-vs vs Head-to-head stat battle/spoton-stats Full artist profile — genres, albums, recordings/spoton-triviaInteractive music trivia with Slack buttons/spoton-bandnameGenerates a random band name + debut album title The Spotify Problem I originally built everything on the Spotify Web API. No user OAuth needed — just client credentials for public catalog data. Seemed perfect. Then the /spoton-track command started throwing 403 Forbidden. The error body said it all: “Active premium subscription required for the owner of the app.” Spotify quietly tightened their API access in late 2024. Even the Search endpoint — purely public catalog data — now requires the app owner to have a Premium account. Every command I’d built against the Search API was dead. Scrapped Spotify entirely. Switched everything to MusicBrainz. Why MusicBrainz Completely free, no API key required Massive open music database Structured data: tags, release groups, recordings, artist relationships The only rule: identify your app in the User-Agent header and stay under ~1 req/sec The tradeoff is no popularity scores or audio previews, but for everything SpotOn actually needs — artist metadata, genres, recordings, album counts — it’s more than enough. Interesting Implementation Notes Similar artists without a “related” endpoint MusicBrainz has no direct “related artists” API. The workaround: fetch the source artist’s top tags, then search for other artists matching those same tags. It’s not perfect, but the results are surprisingly good — searching tag:alternative rock AND tag:indie for Radiohead surfaces exactly the kind of artists you’d expect. Parsing /spoton-vs input Getting two artist names from a single text field is messier than it looks. Users might type: Taylor Swift vs Drake Taylor Swift, Drake oasis blur (no separator at all) The final parsing tries vs split first, then comma, then a midpoint word split as a last resort. Not bulletproof, but handles the common cases. Documenting the preferred format in /spoton-help does the rest. Trivia with interactive buttons The /spoton-trivia command uses Slack’s Block Kit action buttons for the answer choices. Answer state is stored in a Map keyed by userId-channelId, so multiple people can have active questions at once. The map entry is deleted after the user answers, keeping memory clean. One gotcha: the OpenTDB API returns HTML-encoded strings (&, ', etc.) in question and answer text. Had to add a small decode() helper to strip those before sending to Slack, otherwise the blocks render raw HTML entities. MusicBrainz rate limiting MusicBrainz asks for 1 request/second max. Commands like /spoton-stats make 3 sequential API calls (artist detail, albums, recordings). Running them with Promise.all works fine most of the time, but under load it can trigger a 503. The safe pattern is sequential calls with a sleep(300) between each — slower, but reliable. Stack Runtime: Node.js Slack: Slack Bolt with Socket Mode (no public URL needed) Music data: MusicBrainz API (free, no key) Trivia: OpenTDB API (free, no key) HTTP: axios Config: dotenv
Ships:
SpotOn is a Slack bot that brings music discovery into your workspace via slash commands. Random track picks, artist comparisons, similar artist recommendations, stats, trivia, and band name generation — all without leaving Slack. It uses the free music brainz api and trivia api. Originally the project was supposed to use the spotify developer api , it’s been long since i used the api. When i tried to Implement the commands below, i encountered the error of not having a spotify premium account 😭. Finally ended up changing everyting to the music brainz api. Making a slack bot using javascript was definitely an experience, as once i’ve made a slack bot with python. Using the actions to handle the trivia was a headache second to the artist comparing So please sure do check out the /spoton-trivia and /spoton-vs commands. Of course there are other ones, make sure to try them before deciding ✌️...
|
1793894123.8046052
|
1793980523.8046052
|
|
17962
|
My first slack bot! by @rhenisam2008 | Stardance
|
rhenisam2008
|
1
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T18:26:04Z", "hours": 1.0, "multiplier": 2.98, "payout": 2, "blessing": "neutral", "text": "I made a bot for fun and relaxing who have less than 5 minutes. Pushing and pulling the file with git is challenging for me. I am proud that this is my first completed project.", "repo": "https://github.com/rhenisam2008-max/Slack-bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0B8P5DRDB3"}]...
|
[{"post_id": 8213, "ts": "2026 [{"post_id": 8213, "ts": "2026-06-13T17:39:43Z", "hours": 0.7911, "text": "JARVIS — A Fun ASCII Art Slack Bot We spend most of our workday inside Slack, and sometimes you just want something in your workspace that makes you smile. That’s the only reason JARVIS exists. No overthinking it, no big grand purpose — just a fun little bot that does cool things with text. JARVIS is a lightweight Slack bot built with Node.js and the Slack Bolt framework. It runs in socket mode and responds to slash commands. That’s it. It doesn’t manage your tasks, it doesn’t send you reminders, it doesn’t ping you about deadlines. It just does one thing really well — it makes text look awesome inside Slack. What It Actually Does Type /jarvis-shape and give it a shape name and a size — it draws a 3D ASCII cube, pyramid, prism, cylinder, diamond, or cone right inside a code block. The shapes are built character by character using pure JavaScript math, no libraries involved. They look surprisingly good in Slack’s monospace font. Type /jarvis-text with any name or word and it blows it up into giant 3D ASCII letters. Every letter from A to Z is hand-designed as a 4-row character glyph. You can pick from three styles — block, shadow, or banner. Type your name and suddenly you feel important. Type /jarvis-fun and pick from eight pre-built ASCII art pieces — a rocket, trophy, castle, robot, fire, crown, sword, or shield. It just drops it into the chat. No reason needed. And then there’s /jarvis-ping to check if the bot is alive, /jarvis-catfact for random cat facts, /jarvis-joke for a two-part joke from a live API, and /jarvis-help to list everything. Why We Built It Honestly? To learn. Building JARVIS gave us real hands-on experience with the Slack Bolt framework, slash command handling, socket mode setup, live API integration, and structuring a Node.js project properly with environment variables and a clean codebase. It’s a small project but it covers a lot of real ground. And beyond the learning — it’s just genuinely fun to type /jarvis-text with your name and see it explode into giant letters in your team channel. Built With Node.js · Slack Bolt · Socket Mode · Axios · dotenv · catfact.ninja API · Official Joke API"}]...
|
Title: My first slack bot! by @rhenisam2008 | Star Title: My first slack bot! by @rhenisam2008 | Stardance
Devlogs:
JARVIS — A Fun ASCII Art Slack Bot We spend most of our workday inside Slack, and sometimes you just want something in your workspace that makes you smile. That’s the only reason JARVIS exists. No overthinking it, no big grand purpose — just a fun little bot that does cool things with text. JARVIS is a lightweight Slack bot built with Node.js and the Slack Bolt framework. It runs in socket mode and responds to slash commands. That’s it. It doesn’t manage your tasks, it doesn’t send you reminders, it doesn’t ping you about deadlines. It just does one thing really well — it makes text look awesome inside Slack. What It Actually Does Type /jarvis-shape and give it a shape name and a size — it draws a 3D ASCII cube, pyramid, prism, cylinder, diamond, or cone right inside a code block. The shapes are built character by character using pure JavaScript math, no libraries involved. They look surprisingly good in Slack’s monospace font. Type /jarvis-text with any name or word and it blows it up into giant 3D ASCII letters. Every letter from A to Z is hand-designed as a 4-row character glyph. You can pick from three styles — block, shadow, or banner. Type your name and suddenly you feel important. Type /jarvis-fun and pick from eight pre-built ASCII art pieces — a rocket, trophy, castle, robot, fire, crown, sword, or shield. It just drops it into the chat. No reason needed. And then there’s /jarvis-ping to check if the bot is alive, /jarvis-catfact for random cat facts, /jarvis-joke for a two-part joke from a live API, and /jarvis-help to list everything. Why We Built It Honestly? To learn. Building JARVIS gave us real hands-on experience with the Slack Bolt framework, slash command handling, socket mode setup, live API integration, and structuring a Node.js project properly with environment variables and a clean codebase. It’s a small project but it covers a lot of real ground. And beyond the learning — it’s just genuinely fun to type /jarvis-text with your name and see it explode into giant letters in your team channel. Built With Node.js · Slack Bolt · Socket Mode · Axios · dotenv · catfact.ninja API · Official Joke API
Ships:
I made a bot for fun and relaxing who have less than 5 minutes. Pushing and pulling the file with git is challenging for me. I am proud that this is my first completed project....
|
1793854165.9092033
|
1793940565.9092033
|
|
17963
|
Blank - C UI Library by @Thepigcat | Stardance
|
Thepigcat
|
0
|
22.99
|
0
|
[]
|
[{"post_id": 39669, "ts": "202 [{"post_id": 39669, "ts": "2026-08-02T19:58:02Z", "hours": 4.7136, "text": "Devlog - Adding colors, images and clickable element Colors The colors used in blank are no longer hardcoded and can now instead be determined while building the ui. Images After resolving some issues that annoyed me in the last devlog, I was finally able to start adding more ui elements. The first of which was an image component (Displaying the fancy logo here). Clickable elements Elements are now clickable. This works through an if check in the app loop that allows you to execute code based on the id of a ui element or the mouse button used. Next up I wanna add more ui elements and also layouts so people can do things like adding side panels and stuff lol. Might also work on making the existing components and overally style prettier."}, {"post_id": 38810, "ts": "2026-08-01T11:36:56Z", "hours": 7.1017, "text": "Devlog - Rewriting the ui arranging and fixing bad multithreading code Fixing bad multithreading code I spent a lot of time recently debugging and fixing issues related to the multithreading code in blank. Most of the issues were related to missing mutex locks or use-after-frees. They would lead to random crashes at runtime without sufficient error messages. Using Thread-Sanitizer i was able to address most of them. Rewriting the layout arranging code Previously, layout arranging, the process of ordering and placing elements in the ui using a given layout, relied heavily on using ratios and relative sizes to determine the position and size of individual elements. I have now rewritten the ui element layout process to use absolute sizes which makes the system more reliable and less prone to floating point errors. I was also able to massively simplify the process, which will hopefully result in better performance overall. Next up Next, i wanna improve the memory management and rely more on arena allocators for things like ui elements and render commands. This will probably mean including mutexes to make the allocators that are used on multiple threads thread-safe. I also wanna improve the api (header) to use a single file rather than being split into multiple files."}, {"post_id": 15197, "ts": "2026-06-24T18:19:06Z", "hours": 2.3494, "text": "Devlog - Adding groups with nested layouts Groups Groups allow you to group elements with a custom layout. They are stored in an array and then submitted to the regular layout, while still stored in the group component. To achieve nested layouts i rewrote the way layouts are built to have them first calculate the minimum size of each component, then see what share of the screen they take up and then scale them so the entire screen is covered. While this is not fully functional yet, it allows for nested layouts in the first place. The group components are then flattened and submitted to the regular renderable ui components for rendering. Next up im gonna work on polishing this, adding vertical support and refining the system to properly calculate how much of the screen gets taken up."}, {"post_id": 13756, "ts": "2026-06-22T15:27:01Z", "hours": 6.6675, "text": "Devlog - Adding ui elements, layouts, refreshing and event handling UI Elements The basic system for ui-elements is now in place as can be seen by the button example. UI Elements need to be submitted, then the layout will be rebuilt and they are assigned their positions and sizes, unless specified directly. They are then rendered. Some of the next ui components will be labels, text-fields and groups UI Layouts Layouts allow you to customise the placement of components in a group or at the base ui building. Right now, only the linear layout is implemented, but in the future i plan on adding grid-layouts and more probably lol Event handling You are now able to handle events like window closing and window resizing in the app thread to rebuild the ui when required. Next up, im gonna be working on implementing ui-groups and inner layouts for them."}, {"post_id": 8107, "ts": "2026-06-13T15:06:29Z", "hours": 2.1575, "text": "Devlog : Implementing blank’s basic infrastructure I started by adding a relatively flexible backend system, that allows you to use any backend for rendering, thread-handling… by passing in a single initializer function. I also implemented very basic multi-threading, and task separation since the intention is to make it a ui with state. Next up, I will probably work on getting basic ui element submission and rendering working."}]...
|
Title: Blank - C UI Library by @Thepigcat | Starda Title: Blank - C UI Library by @Thepigcat | Stardance
Devlogs:
Devlog : Implementing blank’s basic infrastructure I started by adding a relatively flexible backend system, that allows you to use any backend for rendering, thread-handling… by passing in a single initializer function. I also implemented very basic multi-threading, and task separation since the intention is to make it a ui with state. Next up, I will probably work on getting basic ui element submission and rendering working.
Devlog - Adding ui elements, layouts, refreshing and event handling UI Elements The basic system for ui-elements is now in place as can be seen by the button example. UI Elements need to be submitted, then the layout will be rebuilt and they are assigned their positions and sizes, unless specified directly. They are then rendered. Some of the next ui components will be labels, text-fields and groups UI Layouts Layouts allow you to customise the placement of components in a group or at the base ui building. Right now, only the linear layout is implemented, but in the future i plan on adding grid-layouts and more probably lol Event handling You are now able to handle events like window closing and window resizing in the app thread to rebuild the ui when required. Next up, im gonna be working on implementing ui-groups and inner layouts for them.
Devlog - Adding groups with nested layouts Groups Groups allow you to group elements with a custom layout. They are stored in an array and then submitted to the regular layout, while still stored in the group component. To achieve nested layouts i rewrote the way layouts are built to have them first calculate the minimum size of each component, then see what share of the screen they take up and then scale them so the entire screen is covered. While this is not fully functional yet, it allows for nested layouts in the first place. The group components are then flattened and submitted to the regular renderable ui components for rendering. Next up im gonna work on polishing this, adding vertical support and refining the system to properly calculate how much of the screen gets taken up.
Devlog - Rewriting the ui arranging and fixing bad multithreading code Fixing bad multithreading code I spent a lot of time recently debugging and fixing issues related to the multithreading code in blank. Most of the issues were related to missing mutex locks or use-after-frees. They would lead to random crashes at runtime without sufficient error messages. Using Thread-Sanitizer i was able to address most of them. Rewriting the layout arranging code Previously, layout arranging, the process of ordering and placing elements in the ui using a given layout, relied heavily on using ratios and relative sizes to determine the position and size of individual elements. I have now rewritten the ui element layout process to use absolute sizes which makes the system more reliable and less prone to floating point errors. I was also able to massively simplify the process, which will hopefully result in better performance overall. Next up Next, i wanna improve the memory management and rely more on arena allocators for things like ui elements and render commands. This will probably mean including mutexes to make the allocators that are used on multiple threads thread-safe. I also wanna improve the api (header) to use a single file rather than being split into multiple files.
Devlog - Adding colors, images and clickable element Colors The colors used in blank are no longer hardcoded and can now instead be determined while building the ui. Images After resolving some issues that annoyed me in the last devlog, I was finally able to start adding more ui elements. The first of which was an image component (Displaying the fancy logo here). Clickable elements Elements are now clickable. This works through an if check in the app loop that allows you to execute code based on the id of a ui element or the mouse button used. Next up I wanna add more ui elements and also layouts so people can do things like adding side panels and stuff lol. Might also work on making the existing components and overally style prettier....
|
1793231784.852454
|
1793836584.852454
|
|
17964
|
Frictionless by @callen_lin | Stardance
|
callen_lin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @callen_lin | Stardance
|
1793558942.4116862
|
1794163742.4116862
|
|
17965
|
smartwatch by @jacobjuneau | Stardance
|
jacobjuneau
|
0
|
3.53
|
0
|
[]
|
[{"post_id": 8373, "ts": "2026 [{"post_id": 8373, "ts": "2026-06-13T22:32:10Z", "hours": 3.5278, "text": "Schematic decided on the nrf52840 for the main chip and just started adding things that i need."}]...
|
Title: smartwatch by @jacobjuneau | Stardance
Dev Title: smartwatch by @jacobjuneau | Stardance
Devlogs:
Schematic decided on the nrf52840 for the main chip and just started adding things that i need....
|
1793861465.7535872
|
1794725465.7535872
|
|
17966
|
Scope Zero by @Omar4lifex | Stardance
|
Omar4lifex
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Scope Zero by @Omar4lifex | Stardance
|
1793861522.1983814
|
1794725522.1983814
|
|
17967
|
Frictionless by @Handsome | Stardance
|
Handsome
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @Handsome | Stardance
|
1793454506.4657433
|
1794059306.4657433
|
|
17968
|
Pokédex CLI by @nightswamp | Stardance
|
nightswamp
|
0
|
1.27
|
0
|
[]
|
[{"post_id": 8197, "ts": "2026 [{"post_id": 8197, "ts": "2026-06-13T17:17:51Z", "hours": 1.2672, "text": "Many of us have grown up watching Pokémon. It holds a special place in our childhood memories. To celebrate that memory, I’m building a REPL-based Pokédex CLI. For those of you who aren’t familiar with REPL, it stands for read-eval-print loop. It is an interactive shell environment that continuously reads your input, evaluates the command, and prints the result right back to you. So far, I’ve implemented two primary commands: Help: which displays the information and usage details for all available CLI commands. Exit: safely exits the CLI Soon I will be integrating the official Pokedex API to fetch and display live data, stats, and entries for specific Pokemon"}]...
|
Title: Pokédex CLI by @nightswamp | Stardance
Dev Title: Pokédex CLI by @nightswamp | Stardance
Devlogs:
Many of us have grown up watching Pokémon. It holds a special place in our childhood memories. To celebrate that memory, I’m building a REPL-based Pokédex CLI. For those of you who aren’t familiar with REPL, it stands for read-eval-print loop. It is an interactive shell environment that continuously reads your input, evaluates the command, and prints the result right back to you. So far, I’ve implemented two primary commands: Help: which displays the information and usage details for all available CLI commands. Exit: safely exits the CLI Soon I will be integrating the official Pokedex API to fetch and display live data, stats, and entries for specific Pokemon...
|
1793458576.800593
|
1794063376.800593
|
|
17969
|
Untitled by @ElvisTang | Stardance
|
ElvisTang
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @ElvisTang | Stardance
|
1793307441.2781355
|
1793912241.2781355
|
|
17970
|
hands-free 67 ✨ by @ajmaleee__ | Stardance
|
ajmaleee__
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: hands-free 67 ✨ by @ajmaleee__ | Stardance
|
1793738916.4473338
|
1794602916.4473338
|
|
17971
|
Minecraft clock by @rustikrelmuradov | Stardance
|
rustikrelmuradov
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Minecraft clock by @rustikrelmuradov | Star Title: Minecraft clock by @rustikrelmuradov | Stardance...
|
1793292840.999264
|
1793897640.999264
|
|
17972
|
My awesome macropad! by @ayushpro1428 | Stardance
|
ayushpro1428
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ayushpro1428 | Sta Title: My awesome macropad! by @ayushpro1428 | Stardance...
|
1793789784.2411833
|
1794394584.2411833
|
|
17973
|
Tamawotchu by @stargaze | Stardance
|
stargaze
|
0
|
0.35
|
0
|
[]
|
[{"post_id": 8091, "ts": "2026 [{"post_id": 8091, "ts": "2026-06-13T14:42:59Z", "hours": 0.3531, "text": "only working on it when on edge, half completed thoughts only"}]...
|
Title: Tamawotchu by @stargaze | Stardance
Devlog Title: Tamawotchu by @stargaze | Stardance
Devlogs:
only working on it when on edge, half completed thoughts only...
|
1793454976.869479
|
1794059776.869479
|
|
17974
|
Asterion by @relorenzo2009 | Stardance
|
relorenzo2009
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Asterion by @relorenzo2009 | Stardance
|
1793296289.6713395
|
1793901089.6713395
|
|
17975
|
Black Tears - Act 0 by @mismih | Stardance
|
mismih
|
0
|
3.28
|
0
|
[]
|
[{"post_id": 8794, "ts": "2026 [{"post_id": 8794, "ts": "2026-06-14T16:30:16Z", "hours": 1.9728, "text": "Made some models for weapons (cant focus on the design cuz im not a designer + there isnt a hackatime for blender), next thing is wall run"}, {"post_id": 8265, "ts": "2026-06-13T19:08:18Z", "hours": 1.3061, "text": "Started working on the game! Made graybox where i will be making a complete character movement and weapon logic"}]...
|
Title: Black Tears - Act 0 by @mismih | Stardance
Title: Black Tears - Act 0 by @mismih | Stardance
Devlogs:
Started working on the game! Made graybox where i will be making a complete character movement and weapon logic
Made some models for weapons (cant focus on the design cuz im not a designer + there isnt a hackatime for blender), next thing is wall run...
|
1793296531.7516077
|
1793901331.7516077
|
|
17976
|
FORTE - Telemetry Rocket by @funfofacts | Stardanc FORTE - Telemetry Rocket by @funfofacts | Stardance...
|
funfofacts
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: FORTE - Telemetry Rocket by @funfofacts | S Title: FORTE - Telemetry Rocket by @funfofacts | Stardance...
|
1793321277.1125386
|
1793926077.1125386
|
|
17977
|
Lenny Face-er by @immaturegoat | Stardance
|
immaturegoat
|
1
|
2.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T15:07:56Z", "hours": 2.0, "multiplier": 2.88, "payout": 7, "blessing": "neutral", "text": "This is the Lenny Face-er, a python script that uses Tkinter and Pynput to allow you to open up a menu with 30 Lenny Faces at the press of Ctrl+Shift+Alt+L. On Mac, you can easily open up a menu for emojis, but it is much more difficult to use Lenny Faces. This project makes it much easier to find them and copy them, allowing for easy use in texting, projects, etc. Tkinter was used because I wanted a lightweight and small GUI, and Pygame seemed too heavy for this project. I used the Pynput library for detecting keypresses whenever. It works on Mac, Linux, and Windows thanks to the os library, which helps change settings of the project based on what OS you are running the script on.", "repo": "https://github.com/octaviustheking/lenny-face-er", "demo": "https://github.com/octaviustheking/lenny-face-er/releases/tag/v1.0.0"}]...
|
[{"post_id": 10637, "ts": "202 [{"post_id": 10637, "ts": "2026-06-17T14:25:20Z", "hours": 1.085, "text": "Holy cow, I fixed the scrolling issue! The code was working all along, it was just that I divided systems between Linux and Windows/Mac. I took delta and divided it by 120 for Windows AND Mac, but delta on Mac is so small that dividing it by 120 basically turns it into 0, so no scrolling occurred. I’ve fixed that, with the code shown below."}, {"post_id": 8645, "ts": "2026-06-14T11:28:58Z", "hours": 0.3194, "text": "The hotkey combination for opening the Lenny Face-er is Ctrl+Alt+Shift+L. Just added some (suspicious) code that makes it so when you press that combination again, it closes the popup. The highlighted sections in the screenshot show how it works, though it’s kind of suspicious as popup is set to None at first. (I wrote a lot in this devlog cuz the last one was… empty T-T)"}, {"post_id": 8052, "ts": "2026-06-13T13:08:13Z", "hours": 0.9331, "text": "Lenny Face-er Prototype complete"}]...
|
Title: Lenny Face-er by @immaturegoat | Stardance
Title: Lenny Face-er by @immaturegoat | Stardance
Devlogs:
Lenny Face-er Prototype complete
The hotkey combination for opening the Lenny Face-er is Ctrl+Alt+Shift+L. Just added some (suspicious) code that makes it so when you press that combination again, it closes the popup. The highlighted sections in the screenshot show how it works, though it’s kind of suspicious as popup is set to None at first. (I wrote a lot in this devlog cuz the last one was… empty T-T)
Holy cow, I fixed the scrolling issue! The code was working all along, it was just that I divided systems between Linux and Windows/Mac. I took delta and divided it by 120 for Windows AND Mac, but delta on Mac is so small that dividing it by 120 basically turns it into 0, so no scrolling occurred. I’ve fixed that, with the code shown below.
Ships:
This is the Lenny Face-er, a python script that uses Tkinter and Pynput to allow you to open up a menu with 30 Lenny Faces at the press of Ctrl+Shift+Alt+L. On Mac, you can easily open up a menu for emojis, but it is much more difficult to use Lenny Faces. This project makes it much easier to find them and copy them, allowing for easy use in texting, projects, etc. Tkinter was used because I wanted a lightweight and small GUI, and Pygame seemed too heavy for this project. I used the Pynput library for detecting keypresses whenever. It works on Mac, Linux, and Windows thanks to the os library, which helps change settings of the project based on what OS you are running the script on....
|
1793710175.7908592
|
1793796575.7908592
|
|
17978
|
My awesome macropad! by @Jeriks | Stardance
|
Jeriks
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Jeriks | Stardance
|
1793451320.875399
|
1794056120.875399
|
|
17979
|
The Remotepad! by @arthihalder | Stardance
|
arthihalder
|
1
|
2.15
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T10:42:23Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hackpad name: Remotepad GitHub Repo: https://github.com/bsastudio601/Remotepad Description: Its a 9 key macropad with an encoder and rgb lightning. I have planes to use it to control my rover and other projects.", "repo": "https://github.com/bsastudio601/Remotepad", "demo": ""}]...
|
[{"post_id": 69929, "ts": "202 [{"post_id": 69929, "ts": "2026-09-18T02:38:18Z", "hours": 0.9667, "text": "So this is the last dev log I received the kit a few days ago and finally put it all together though the firmware took ma a few tries. Im not installing the case right now cause i couldnnt find any priting sevice nearby but will print one once i get a 3d printer from hc !"}, {"post_id": 27667, "ts": "2026-07-13T13:11:37Z", "hours": 1.1861, "text": "hmm"}, {"post_id": 8802, "ts": "2026-06-14T16:49:18Z", "hours": 0.3014, "text": "starting the work on my custom macropad! this is my first iteration i might change the design in future :)"}]...
|
Title: The Remotepad! by @arthihalder | Stardance
Title: The Remotepad! by @arthihalder | Stardance
Devlogs:
starting the work on my custom macropad! this is my first iteration i might change the design in future :)
hmm
So this is the last dev log I received the kit a few days ago and finally put it all together though the firmware took ma a few tries. Im not installing the case right now cause i couldnnt find any priting sevice nearby but will print one once i get a 3d printer from hc !
Ships:
Hackpad name: Remotepad GitHub Repo: https://github.com/bsastudio601/Remotepad Description: Its a 9 key macropad with an encoder and rgb lightning. I have planes to use it to control my rover and other projects....
|
1793714311.8982608
|
1793800711.8982608
|
|
17980
|
Pegserve by @Anthonly | Stardance
|
Anthonly
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pegserve by @Anthonly | Stardance
|
1793350242.062889
|
1793955042.062889
|
|
17981
|
My first slack bot! by @Zoya | Stardance
|
Zoya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Zoya | Stardance
|
1793526721.6082363
|
1794131521.6082363
|
|
17982
|
My very own WebOS by @thrx11 | Stardance
|
thrx11
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @thrx11 | Stardance
|
1793397352.5637832
|
1794002152.5637832
|
|
17983
|
Studify by @Haani | Stardance
|
Haani
|
0
|
1.0
|
0
|
[]
|
[{"post_id": 8695, "ts": "2026 [{"post_id": 8695, "ts": "2026-06-14T13:22:18Z", "hours": 1.0, "text": "An mobile app for the students who just can manager their time and studies!"}]...
|
Title: Studify by @Haani | Stardance
Devlogs:
An Title: Studify by @Haani | Stardance
Devlogs:
An mobile app for the students who just can manager their time and studies!...
|
1792932675.9059663
|
1793796675.9059663
|
|
17984
|
star struck by @minha | Stardance
|
minha
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: star struck by @minha | Stardance
|
1793883235.9776742
|
1794488035.9776742
|
|
17985
|
Air Gesture Windows Control by @Isha7390 | Stardan Air Gesture Windows Control by @Isha7390 | Stardance...
|
Isha7390
|
0
|
14.99
|
0
|
[]
|
[{"post_id": 8370, "ts": "2026 [{"post_id": 8370, "ts": "2026-06-13T22:25:18Z", "hours": 14.9858, "text": "I added UI and the ability for users to map a custom combination of gestures to certain actions."}]...
|
Title: Air Gesture Windows Control by @Isha7390 | Title: Air Gesture Windows Control by @Isha7390 | Stardance
Devlogs:
I added UI and the ability for users to map a custom combination of gestures to certain actions....
|
1793443907.364301
|
1794048707.364301
|
|
17986
|
Untitled project by @Magnum | Stardance
|
Magnum
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Magnum | Stardance
|
1793224236.6216583
|
1793829036.6216583
|
|
17987
|
smart ambulance by @anshpatel9720 | Stardance
|
anshpatel9720
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: smart ambulance by @anshpatel9720 | Stardan Title: smart ambulance by @anshpatel9720 | Stardance...
|
1793580542.3312855
|
1794444542.3312855
|
|
17988
|
uBeeper by @Nima | Stardance
|
Nima
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: uBeeper by @Nima | Stardance
|
1793213455.137256
|
1793818255.137256
|
|
17989
|
LimitlessTalking by @Jace | Stardance
|
Jace
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: LimitlessTalking by @Jace | Stardance
|
1793515661.2541842
|
1794120461.2541842
|
|
17990
|
My very own WebOS by @imranerah511 | Stardance
|
imranerah511
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @imranerah511 | Starda Title: My very own WebOS by @imranerah511 | Stardance...
|
1793267287.1022525
|
1793872087.1022525
|
|
17991
|
My very own WebOS by @Harini27 | Stardance
|
Harini27
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Harini27 | Stardance
|
1793274905.0448184
|
1793879705.0448184
|
|
17992
|
SyNxOS by @habaja | Stardance
|
habaja
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SyNxOS by @habaja | Stardance
|
1793217222.5276096
|
1793822022.5276096
|
|
17993
|
RPi 5 Robot Arm by @nirvaan | Stardance
|
nirvaan
|
0
|
1.49
|
0
|
[]
|
[{"post_id": 8176, "ts": "2026 [{"post_id": 8176, "ts": "2026-06-13T16:56:29Z", "hours": 0.4375, "text": "What have I done so far: Added the Gemini AI provider Made a go to object function so the pan/tilt kit can move to the right angle of the object"}, {"post_id": 8133, "ts": "2026-06-13T16:03:56Z", "hours": 1.0511, "text": "What did I do: wired up the project wrote the basic code to test servos and the camera"}]...
|
Title: RPi 5 Robot Arm by @nirvaan | Stardance
De Title: RPi 5 Robot Arm by @nirvaan | Stardance
Devlogs:
What did I do: wired up the project wrote the basic code to test servos and the camera
What have I done so far: Added the Gemini AI provider Made a go to object function so the pan/tilt kit can move to the right angle of the object...
|
1793444028.3528504
|
1794048828.3528504
|
|
17994
|
Palette Forge by @DimensionLess | Stardance
|
DimensionLess
|
1
|
5.48
|
31
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T11:53:40Z", "hours": 4.0, "multiplier": 8.22, "payout": 31, "blessing": "neutral", "text": "Every time a developer builds a UI, they waste hours just picking colors. You look at a reference image, try to guess the hex codes, check if they look good together, test if the text is readable, and repeat until something works. It’s frustrating and eats into time that should be spent actually building. PaletteForge fixes this in one step. Upload any image and instantly get a complete color system — extracted colors, assigned roles, accessibility checks, font suggestions, and a presentation theme. Thirty seconds instead of two hours.", "repo": "https://github.com/6255127/Pallet-Forge", "demo": "https://6255127.github.io/Pallet-Forge/"}]...
|
[{"post_id": 19856, "ts": "202 [{"post_id": 19856, "ts": "2026-07-01T08:06:32Z", "hours": 0.4772, "text": "i added some new feature like figma tokens s as it is very useful when using figma and made sure all the export features are working properly"}, {"post_id": 19319, "ts": "2026-06-30T16:24:44Z", "hours": 1.0075, "text": "I fixed the Readme and also the UI , I used 21st.dev as for my UI and removed the unnecessary features and polished the app"}, {"post_id": 8604, "ts": "2026-06-14T09:40:04Z", "hours": 3.7442, "text": "Every time a developer builds a UI, they waste hours just picking colors. You look at a reference image, try to guess the hex codes, check if they look good together, test if the text is readable, and repeat until something works. It’s frustrating and eats into time that should be spent actually building. PaletteForge fixes this in one step. Upload any image and instantly get a complete color system — extracted colors, assigned roles, accessibility checks, font suggestions, and a presentation theme. Thirty seconds instead of two hours."}]...
|
Title: Palette Forge by @DimensionLess | Stardance Title: Palette Forge by @DimensionLess | Stardance
Devlogs:
Every time a developer builds a UI, they waste hours just picking colors. You look at a reference image, try to guess the hex codes, check if they look good together, test if the text is readable, and repeat until something works. It’s frustrating and eats into time that should be spent actually building. PaletteForge fixes this in one step. Upload any image and instantly get a complete color system — extracted colors, assigned roles, accessibility checks, font suggestions, and a presentation theme. Thirty seconds instead of two hours.
I fixed the Readme and also the UI , I used 21st.dev as for my UI and removed the unnecessary features and polished the app
i added some new feature like figma tokens s as it is very useful when using figma and made sure all the export features are working properly
Ships:
Every time a developer builds a UI, they waste hours just picking colors. You look at a reference image, try to guess the hex codes, check if they look good together, test if the text is readable, and repeat until something works. It’s frustrating and eats into time that should be spent actually building. PaletteForge fixes this in one step. Upload any image and instantly get a complete color system — extracted colors, assigned roles, accessibility checks, font suggestions, and a presentation theme. Thirty seconds instead of two hours....
|
1793731675.489097
|
1793818075.489097
|
|
17995
|
My very own WebOS by @kv_me | Stardance
|
kv_me
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @kv_me | Stardance
|
1792936438.5399134
|
1793800438.5399134
|
|
17996
|
WiFi QR Generator by @Greg_ios | Stardance
|
Greg_ios
|
1
|
2.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T07:22:34Z", "hours": 2.0, "multiplier": 1.37, "payout": 3, "blessing": "neutral", "text": "A simple and efficient utility to generate QR codes for your WiFi network, allowing guests to connect instantly by scanning the code with their smartphones. This project comes in two versions: a Command Line Interface (CLI) and a Graphical User Interface (GUI).", "repo": "https://github.com/travletothefurureprogramming/WiFi-QR-Generator", "demo": "https://github.com/travletothefurureprogramming/WiFi-QR-Generator/releases/tag/v1.0.0"}]...
|
[{"post_id": 27596, "ts": "202 [{"post_id": 27596, "ts": "2026-07-13T09:54:32Z", "hours": 0.4175, "text": "Enchanse CLI app using questionary and start making a clean README with clear explanation on how to use it"}, {"post_id": 8672, "ts": "2026-06-14T12:31:46Z", "hours": 0.2517, "text": "Add some error handling⚠️ For example:"}, {"post_id": 8663, "ts": "2026-06-14T12:00:59Z", "hours": 0.45, "text": "I have add the ability to show the password and to print the QR but the print has some problems. Also from now you can select where to save the qr when you press generate"}, {"post_id": 8108, "ts": "2026-06-13T15:06:53Z", "hours": 0.4167, "text": "Make a basic GUI😀😀😀😀😀😀"}, {"post_id": 8088, "ts": "2026-06-13T14:41:36Z", "hours": 0.5336, "text": "Making the main generator in terminal!!!! Next Steps: GUI using CustomTkinter😀😀😀"}]...
|
Title: WiFi QR Generator by @Greg_ios | Stardance
Title: WiFi QR Generator by @Greg_ios | Stardance
Devlogs:
Making the main generator in terminal!!!! Next Steps: GUI using CustomTkinter😀😀😀
Make a basic GUI😀😀😀😀😀😀
I have add the ability to show the password and to print the QR but the print has some problems. Also from now you can select where to save the qr when you press generate
Add some error handling⚠️ For example:
Enchanse CLI app using questionary and start making a clean README with clear explanation on how to use it
Ships:
A simple and efficient utility to generate QR codes for your WiFi network, allowing guests to connect instantly by scanning the code with their smartphones. This project comes in two versions: a Command Line Interface (CLI) and a Graphical User Interface (GUI)....
|
1793793222.8853643
|
1793879622.8853643
|
|
17997
|
My awesome macropad! by @Bhaveshkumar | Stardance
|
Bhaveshkumar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Bhaveshkumar | Sta Title: My awesome macropad! by @Bhaveshkumar | Stardance...
|
1793519437.1757991
|
1794124237.1757991
|
|
17998
|
My awesome macropad! by @sarveshram | Stardance
|
sarveshram
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sarveshram | Stard Title: My awesome macropad! by @sarveshram | Stardance...
|
1793537532.140353
|
1794142332.140353
|
|
17999
|
Crypto trading bot by @dhairya_09 | Stardance
|
dhairya_09
|
0
|
2.48
|
0
|
[]
|
[{"post_id": 8288, "ts": "2026 [{"post_id": 8288, "ts": "2026-06-13T19:39:36Z", "hours": 2.4786, "text": "Devlog 01 — Building a Systematic Trading Bot June 13, 2026 The why I’ve always been interested in markets but what drew me to algorithmic trading specifically was the idea that you could remove emotion from the equation entirely and replace it with a testable, falsifiable system. Either the edge exists in the data or it doesn’t. What I built The bot runs on Freqtrade, an open source crypto trading framework, on Binance USDT-M futures. Everything is Dockerised and runs locally on my laptop. The core strategy is a mean-reversion long that enters dip positions in altcoins when BTC is in a confirmed uptrend, using RSI, Bollinger Bands, and an ADX regime filter to avoid trading in choppy conditions. The research process was more rigorous than I expected going in. Every strategy candidate goes through a multi-gate evaluation: full history backtest, out-of-sample holdout, walk-forward validation across multiple windows, per-pair concentration checks, and a fee sensitivity re-run at double the maker rate. Anything that fails a gate gets documented and dropped, not iterated on endlessly. What the numbers look like The current live system backtests at around 715% over 5 years across 39 pairs, with out-of-sample results of roughly 188% CAGR over the most recent 23 months. A Monte Carlo bootstrap of the out-of-sample trade history gives a median 1-year CAGR around 79% with a 2% chance of a losing year. The bot is currently in dry-run, meaning it trades with paper money to validate that live behaviour matches backtest expectations before any real capital goes in. What I learned The biggest lesson was around leverage semantics. Early in the project I discovered that Freqtrade applies stoploss and ROI values to the leveraged profit ratio, not the price move. A stoploss of -7% at 5x leverage is actually a -1.4% price move. Every stop in the original version of the bot was sized wrong because of this. Catching it and rebuilding the risk model from scratch was the most important thing I did on this project. The second lesson was that hyperopt, the built-in parameter optimisation tool, actively makes things worse if used before you have a real edge. I ran a 150-epoch optimisation that produced a strategy 4x worse out-of-sample than the hand-tuned defaults. Now I only run it after a candidate passes all evaluation gates on its original parameters. What’s next Observing the dry-run for 4 to 6 weeks and comparing live trade distribution against backtest expectations before considering real capital. Also researching a funding-rate carry strategy as a second uncorrelated bot."}]...
|
Title: Crypto trading bot by @dhairya_09 | Stardan Title: Crypto trading bot by @dhairya_09 | Stardance
Devlogs:
Devlog 01 — Building a Systematic Trading Bot June 13, 2026 The why I’ve always been interested in markets but what drew me to algorithmic trading specifically was the idea that you could remove emotion from the equation entirely and replace it with a testable, falsifiable system. Either the edge exists in the data or it doesn’t. What I built The bot runs on Freqtrade, an open source crypto trading framework, on Binance USDT-M futures. Everything is Dockerised and runs locally on my laptop. The core strategy is a mean-reversion long that enters dip positions in altcoins when BTC is in a confirmed uptrend, using RSI, Bollinger Bands, and an ADX regime filter to avoid trading in choppy conditions. The research process was more rigorous than I expected going in. Every strategy candidate goes through a multi-gate evaluation: full history backtest, out-of-sample holdout, walk-forward validation across multiple windows, per-pair concentration checks, and a fee sensitivity re-run at double the maker rate. Anything that fails a gate gets documented and dropped, not iterated on endlessly. What the numbers look like The current live system backtests at around 715% over 5 years across 39 pairs, with out-of-sample results of roughly 188% CAGR over the most recent 23 months. A Monte Carlo bootstrap of the out-of-sample trade history gives a median 1-year CAGR around 79% with a 2% chance of a losing year. The bot is currently in dry-run, meaning it trades with paper money to validate that live behaviour matches backtest expectations before any real capital goes in. What I learned The biggest lesson was around leverage semantics. Early in the project I discovered that Freqtrade applies stoploss and ROI values to the leveraged profit ratio, not the price move. A stoploss of -7% at 5x leverage is actually a -1.4% price move. Every stop in the original version of the bot was sized wrong because of this. Catching it and rebuilding the risk model from scratch was the most important thing I did on this project. The second lesson was that hyperopt, the built-in parameter optimisation tool, actively makes things worse if used before you have a real edge. I ran a 150-epoch optimisation that produced a strategy 4x worse out-of-sample than the hand-tuned defaults. Now I only run it after a candidate passes all evaluation gates on its original parameters. What’s next Observing the dry-run for 4 to 6 weeks and comparing live trade distribution against backtest expectations before considering real capital. Also researching a funding-rate carry strategy as a second uncorrelated bot....
|
1793379307.023615
|
1793984107.023615
|
|
18000
|
My very own WebOS by @urcielg | Stardance
|
urcielg
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @urcielg | Stardance
|
1793353876.2841077
|
1793958676.2841077
|