|
43696
|
Minecraft-WEB EDITION by @Mrkalidas | Stardance
|
Mrkalidas
|
1
|
11.0
|
29
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T03:27:42Z", "hours": 11.0, "multiplier": 2.88, "payout": 29, "blessing": "neutral", "text": "The hardest part was figuring out which block faces to actually draw. Render every side of every block and the game grinds to a halt the moment you can see any real distance, so each block checks its six neighbors and only draws a face if something isn’t blocking it. What I’m most proud of: there’s not a single image or audio file anywhere in this project. Every texture is painted onto a canvas by code, and every sound effect is generated live in the browser — pitch and tone shifting depending on what you’re breaking, plus soft ambient notes that only play during the day. To test it: it’s fully browser-based, nothing to install. WASD to move, click once to lock your mouse and look around, left click breaks blocks, right click places them, scroll wheel switches your held item. Live version’s up at kalidas-blip.github.io/The-Minecraft-WEB-EDITION, or grab the source and just open index.html", "repo": "https://github.com/kalidas-blip/The-Minecraft-WEB-EDITION", "demo": "https://kalidas-blip.github.io/The-Minecraft-WEB-EDITION/"}]...
|
[{"post_id": 43050, "ts": "202 [{"post_id": 43050, "ts": "2026-08-08T03:17:15Z", "hours": 10.9497, "text": "Devlog — Minecraft Web EditionOkay, doing this. A Minecraft-style game that runs in the browser. No art files, no build tools — one HTML page, one JS file, a free 3D library. If it can’t run by just opening a file, I’ve overcomplicated it.Day 1: Nothing shows up on screen yet, on purpose. First I picked an older, stable version of the 3D library so I could load it with one line and skip all setup. Then I built a tiny messaging system — different parts of the game (menus, sound, the world) send out “this happened” messages instead of being tangled together directly. Next, a random number generator that gives the same results every time for the same starting seed, so a world can be rebuilt exactly. The part I was nervous about was the terrain math — what turns randomness into hills that look like hills instead of jagged noise. I tested it with plain numbers before touching any graphics, since debugging math and a broken 3D scene at once sounded miserable. Last thing: one big list of every block type — solid or not, see-through or not, what color. Almost everything else reads from that list.Day 2: Time to make it look real. There are zero image files anywhere in this project — every texture is drawn straight onto a canvas by code and combined into one sheet the game pulls from. A few blocks needed fixes, like leaves needing to look solid, and water, glass, and ice needing to be see-through. The hardest part: deciding which faces of each block to draw. Drawing every side of every block would grind the game to a halt, so each block checks its six neighbors and only draws a face if something isn’t blocking it. Water got its own see-through layer so it blends properly. Then movement — checking each direction one at a time, stopping you before you’d walk into a block — and controls: mouse locks for looking around, keyboard to move, scroll to switch items, click to break or place. By the end of day two I could walk around a world that felt real. Biggest win of the whole project.Day 3: Making it feel alive, not just technically working. Added simple creatures that wander around, an inventory, and crafting that checks what you’re holding against a recipe list. Sound turned out fun, also file-free — every effect is generated on the spot, tone and pitch shifting by what you’re breaking, and even the background music is just random soft notes playing quietly during the day. Genuinely proud of that one. Set up lighting so the world doesn’t look flat, and made every menu a simple on-screen box instead of building it into the 3D world — way easier, and you can’t tell the difference playing it.Honest note, caught while writing this: somewhere along the way I left a leftover scrap of code in the HTML file. Won’t break anything, but it’ll show up as stray text on the page. Still on my list to delete."}]...
|
Title: Minecraft-WEB EDITION by @Mrkalidas | Stard Title: Minecraft-WEB EDITION by @Mrkalidas | Stardance
Devlogs:
Devlog — Minecraft Web EditionOkay, doing this. A Minecraft-style game that runs in the browser. No art files, no build tools — one HTML page, one JS file, a free 3D library. If it can’t run by just opening a file, I’ve overcomplicated it.Day 1: Nothing shows up on screen yet, on purpose. First I picked an older, stable version of the 3D library so I could load it with one line and skip all setup. Then I built a tiny messaging system — different parts of the game (menus, sound, the world) send out “this happened” messages instead of being tangled together directly. Next, a random number generator that gives the same results every time for the same starting seed, so a world can be rebuilt exactly. The part I was nervous about was the terrain math — what turns randomness into hills that look like hills instead of jagged noise. I tested it with plain numbers before touching any graphics, since debugging math and a broken 3D scene at once sounded miserable. Last thing: one big list of every block type — solid or not, see-through or not, what color. Almost everything else reads from that list.Day 2: Time to make it look real. There are zero image files anywhere in this project — every texture is drawn straight onto a canvas by code and combined into one sheet the game pulls from. A few blocks needed fixes, like leaves needing to look solid, and water, glass, and ice needing to be see-through. The hardest part: deciding which faces of each block to draw. Drawing every side of every block would grind the game to a halt, so each block checks its six neighbors and only draws a face if something isn’t blocking it. Water got its own see-through layer so it blends properly. Then movement — checking each direction one at a time, stopping you before you’d walk into a block — and controls: mouse locks for looking around, keyboard to move, scroll to switch items, click to break or place. By the end of day two I could walk around a world that felt real. Biggest win of the whole project.Day 3: Making it feel alive, not just technically working. Added simple creatures that wander around, an inventory, and crafting that checks what you’re holding against a recipe list. Sound turned out fun, also file-free — every effect is generated on the spot, tone and pitch shifting by what you’re breaking, and even the background music is just random soft notes playing quietly during the day. Genuinely proud of that one. Set up lighting so the world doesn’t look flat, and made every menu a simple on-screen box instead of building it into the 3D world — way easier, and you can’t tell the difference playing it.Honest note, caught while writing this: somewhere along the way I left a leftover scrap of code in the HTML file. Won’t break anything, but it’ll show up as stray text on the page. Still on my list to delete.
Ships:
The hardest part was figuring out which block faces to actually draw. Render every side of every block and the game grinds to a halt the moment you can see any real distance, so each block checks its six neighbors and only draws a face if something isn’t blocking it. What I’m most proud of: there’s not a single image or audio file anywhere in this project. Every texture is painted onto a canvas by code, and every sound effect is generated live in the browser — pitch and tone shifting depending on what you’re breaking, plus soft ambient notes that only play during the day. To test it: it’s fully browser-based, nothing to install. WASD to move, click once to lock your mouse and look around, left click breaks blocks, right click places them, scroll wheel switches your held item. Live version’s up at kalidas-blip.github.io/The-Minecraft-WEB-EDITION, or grab the source and just open index.html...
|
1793771643.4550052
|
1794635643.4550052
|
|
11705
|
Aternos Discord Bot by @albertphu3 | Stardance
|
albertphu3
|
2
|
0.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T17:07:22Z", "hours": 0.0, "multiplier": 1.56, "payout": 0, "blessing": "neutral", "text": "Introduced new fetaures and windows support (BETA)", "repo": "https://github.com/albertphu07/neomc-an-Aternos-Discord-Bot", "demo": "https://discord.gg/kPVNEQzDBn"}, {"ship_num": 2, "ts": "2026-06-09T15:46:51Z", "hours": 0.0, "multiplier": 7.23, "payout": 2, "blessing": "neutral", "text": "Aternos Python Discord Bot that streamlines the Aternos experience! Allows for discord friend groups to quickly start and lightly manage a server! Requires some level of programming knowledge.", "repo": "https://github.com/albertphu07/neomc-an-Aternos-Discord-Bot", "demo": "https://discord.gg/kPVNEQzDBn"}]...
|
[{"post_id": 11936, "ts": "202 [{"post_id": 11936, "ts": "2026-06-19T13:59:41Z", "hours": 0.3119, "text": "Added new feature like help command"}, {"post_id": 5286, "ts": "2026-06-09T00:30:45Z", "hours": 0.2669, "text": "I love to play minecraft with my friends but i had one issue with Aternos not all my friends wanted to spend the time to start or create an Aternos account themselves so i created a discord bot for any discord friend group to use even larger servers! Simplifying the constant pings you used to get to start the server to a simple !start !stop !restart (etc) command! Hope Yall Like it!"}]...
|
Title: Aternos Discord Bot by @albertphu3 | Starda Title: Aternos Discord Bot by @albertphu3 | Stardance
Devlogs:
I love to play minecraft with my friends but i had one issue with Aternos not all my friends wanted to spend the time to start or create an Aternos account themselves so i created a discord bot for any discord friend group to use even larger servers! Simplifying the constant pings you used to get to start the server to a simple !start !stop !restart (etc) command! Hope Yall Like it!
Added new feature like help command
Ships:
Aternos Python Discord Bot that streamlines the Aternos experience! Allows for discord friend groups to quickly start and lightly manage a server! Requires some level of programming knowledge.
Introduced new fetaures and windows support (BETA)...
|
1793771642.2122705
|
1793858042.2122705
|
|
31788
|
Mochi-Math-Treats by @juhi | Stardance
|
juhi
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T04:40:11Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "cute calc created to validate our maths calculations", "repo": "https://github.com/Juhi3921/Mochi-Math-Treats", "demo": "https://mochi-math-treats.vercel.app/"}]...
|
[{"post_id": 23940, "ts": "202 [{"post_id": 23940, "ts": "2026-07-07T04:38:52Z", "hours": 4.0, "text": "make use of calc if ur maths is weak"}]...
|
Title: Mochi-Math-Treats by @juhi | Stardance
Dev Title: Mochi-Math-Treats by @juhi | Stardance
Devlogs:
make use of calc if ur maths is weak
Ships:
cute calc created to validate our maths calculations...
|
1793771641.3416855
|
1794635641.3416855
|
|
34236
|
My own site! by @Abhinav_C3 | Stardance
|
Abhinav_C3
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-04T03:54:33Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a simple personal website to challenge myself and practice my web development skills. The most difficult part was completing it without using outside resources such as AI or websites like W3Schools. Because of that, I kept the design and features relatively simple so I could fully understand everything I was building. This is one of the first websites I’ve ever made, so I’m proud that I was able to complete it on my own. My goal wasn’t to create something complex but it was to prove to myself that I could build a website from scratch and gain hands-on experience. This project gave me a solid foundation, and I’m excited to continue improving my coding skills and make more projects in the future.", "repo": "https://github.com/Abhinav-Challagundla/my-website", "demo": "https://abhinav-challagundla.github.io/my-website/"}]...
|
[{"post_id": 29088, "ts": "202 [{"post_id": 29088, "ts": "2026-07-15T19:03:43Z", "hours": 0.3744, "text": "I added some more code to it and understood how to build my README now my GitHub page looks cleaner."}, {"post_id": 28718, "ts": "2026-07-15T04:29:58Z", "hours": 0.7094, "text": "I am working on my first website right now. Its pretty simple but I plan to add more to it like pictures and different fonts."}]...
|
Title: My own site! by @Abhinav_C3 | Stardance
De Title: My own site! by @Abhinav_C3 | Stardance
Devlogs:
I am working on my first website right now. Its pretty simple but I plan to add more to it like pictures and different fonts.
I added some more code to it and understood how to build my README now my GitHub page looks cleaner.
Ships:
I created a simple personal website to challenge myself and practice my web development skills. The most difficult part was completing it without using outside resources such as AI or websites like W3Schools. Because of that, I kept the design and features relatively simple so I could fully understand everything I was building. This is one of the first websites I’ve ever made, so I’m proud that I was able to complete it on my own. My goal wasn’t to create something complex but it was to prove to myself that I could build a website from scratch and gain hands-on experience. This project gave me a solid foundation, and I’m excited to continue improving my coding skills and make more projects in the future....
|
1793771640.4816537
|
1794635640.4816537
|
|
38894
|
My very own WebOS by @npminh0908 | Stardance
|
npminh0908
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @npminh0908 | Stardanc Title: My very own WebOS by @npminh0908 | Stardance...
|
1793771639.5547647
|
1794376439.5547647
|
|
33611
|
Apogee by @reimunyancat | Stardance
|
reimunyancat
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-09T06:34:28Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Apogee, a mission-control-style new tab page. There’s a live clock, a command bar with quick jumps (g for Google, yt for YouTube, gh owner/repo goes straight to a repo), the ISS’s live position on a little map, and NASA’s Astronomy Picture of the Day as the background. To try it: type “help” in the command bar, or “gh reimunyancat/Apogee”. Watch the ISS dot, it really is moving, every 5 seconds.", "repo": "https://github.com/reimunyancat/Apogee", "demo": "https://reimunyancat.github.io/Apogee/"}]...
|
[{"post_id": 43775, "ts": "202 [{"post_id": 43775, "ts": "2026-08-09T06:32:23Z", "hours": 0.9158, "text": "Devlog #3 What I did • NASA APOD is in — the astronomy picture of the day as the page background, with its title and date in the widget • README, GitHub Pages, ship Where Apogee stands • Done and deployed. Clock, greeting, command bar, live ISS, daily NASA background. • It quietly became the page I actually open my browser to. Next up Nothing on the list. Maybe a settings panel someday, maybe I’ll just enjoy the view."}, {"post_id": 43737, "ts": "2026-08-09T04:43:07Z", "hours": 1.1403, "text": "Devlog #2 What I did • The command bar is alive: g , yt , gh , w , npm jumps, plain URLs open directly, anything else falls through to Google • gh got a special case — gh owner/repo skips the search page and goes straight to the repo • History chips under the input: last 6 commands, stored in localStorage, deduped • Live ISS tracking: the wheretheiss.at API polled every 5 seconds, with latitude / longitude / altitude / velocity readouts and a dot gliding across a mini map Where Apogee stands • Clock, greeting, command bar, history, and a satellite that actually moves • The APOD widget still says “Loading…” because nothing is loading it yet Next up NASA APOD: fetch the astronomy picture of the day, set it as the page background, and cache it in localStorage so I don’t burn through the DEMO_KEY rate limit."}, {"post_id": 43012, "ts": "2026-08-08T01:30:26Z", "hours": 1.82, "text": "Devlog #1 What I did • Repo scaffold: index.html , style.css , app.js , README • index.html — the console markup: clock, command bar, and the ISS / APOD widget skeletons • style.css — dark console theme. Rewrote it three times because every draft kept looking AI-generated (glassmorphism, neon glow, the whole checklist). Final version is deliberately plain: system monospace, translucent black boxes, white 1px borders, lime accent • app.js first chunk — live clock plus a greeting that changes with the time of day Problems • The clock sat on --:--: -- for a full second after every load. setInterval doesn’t fire until the first interval passes, so tick() now runs once immediately before the interval starts. • 9:5:3 is not a time of day. padStart(2, '0') on each unit fixed the padding. Where Apogee stands • Clock ticks and the greeting follows the hour • Command bar, ISS dot and APOD background are still just decoration Next up The command bar: search-engine jumps ( g , yt , gh , w , npm ), direct URL passthrough, and a localStorage history under the input."}]...
|
Title: Apogee by @reimunyancat | Stardance
Devlog Title: Apogee by @reimunyancat | Stardance
Devlogs:
Devlog #1 What I did • Repo scaffold: index.html , style.css , app.js , README • index.html — the console markup: clock, command bar, and the ISS / APOD widget skeletons • style.css — dark console theme. Rewrote it three times because every draft kept looking AI-generated (glassmorphism, neon glow, the whole checklist). Final version is deliberately plain: system monospace, translucent black boxes, white 1px borders, lime accent • app.js first chunk — live clock plus a greeting that changes with the time of day Problems • The clock sat on --:--: -- for a full second after every load. setInterval doesn’t fire until the first interval passes, so tick() now runs once immediately before the interval starts. • 9:5:3 is not a time of day. padStart(2, '0') on each unit fixed the padding. Where Apogee stands • Clock ticks and the greeting follows the hour • Command bar, ISS dot and APOD background are still just decoration Next up The command bar: search-engine jumps ( g , yt , gh , w , npm ), direct URL passthrough, and a localStorage history under the input.
Devlog #2 What I did • The command bar is alive: g , yt , gh , w , npm jumps, plain URLs open directly, anything else falls through to Google • gh got a special case — gh owner/repo skips the search page and goes straight to the repo • History chips under the input: last 6 commands, stored in localStorage, deduped • Live ISS tracking: the wheretheiss.at API polled every 5 seconds, with latitude / longitude / altitude / velocity readouts and a dot gliding across a mini map Where Apogee stands • Clock, greeting, command bar, history, and a satellite that actually moves • The APOD widget still says “Loading…” because nothing is loading it yet Next up NASA APOD: fetch the astronomy picture of the day, set it as the page background, and cache it in localStorage so I don’t burn through the DEMO_KEY rate limit.
Devlog #3 What I did • NASA APOD is in — the astronomy picture of the day as the page background, with its title and date in the widget • README, GitHub Pages, ship Where Apogee stands • Done and deployed. Clock, greeting, command bar, live ISS, daily NASA background. • It quietly became the page I actually open my browser to. Next up Nothing on the list. Maybe a settings panel someday, maybe I’ll just enjoy the view.
Ships:
I made Apogee, a mission-control-style new tab page. There’s a live clock, a command bar with quick jumps (g for Google, yt for YouTube, gh owner/repo goes straight to a repo), the ISS’s live position on a little map, and NASA’s Astronomy Picture of the Day as the background. To try it: type “help” in the command bar, or “gh reimunyancat/Apogee”. Watch the ISS dot, it really is moving, every 5 seconds....
|
1793771638.6971824
|
1794635638.6971824
|
|
46399
|
Margen by @jupeme6 | Stardance
|
jupeme6
|
2
|
42.0
|
393
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T11:27:08Z", "hours": 22.0, "multiplier": 10.32, "payout": 225, "blessing": "neutral", "text": "What did you make? A markdown note editor called Margen with a digital typewriter aesthetic. Three columns: sidebar with notes, raw markdown editor, live preview. The parser is written from scratch, no library. Six betas added LaTeX support with KaTeX, a formula toolbar, dark mode, ES/EN i18n, code highlighting, PWA offline, import/export, folders with colors, linked notes via [[wiki-style]] syntax, and formula OCR via Tesseract.js. Local-first, no account, no server. What was challenging? The markdown parser broke on multi-line constructs. Rewrote it line-by-line. KaTeX loads async so had to chain CSS then JS then auto-render. Formula OCR needed a text-to-LaTeX converter since Tesseract is for text not math. What are you proud of? The parser from scratch, the formula toolbar for non-LaTeX users, and the whole thing working offline as a PWA. What should people know so they can test? Open the demo. Choose language on first launch. Click + for new note. Type markdown, see live preview. Press ? for cheat sheet. Click “formulas” for math buttons. Click camera to scan a formula. Create folders with colors. Link notes with [[Title]]. Gear icon for dark mode and language. Live demo: https://notjuangamer10.github.io/margen/ Source: https://github.com/notjuangamer10/margen", "repo": "https://github.com/NOTJuangamer10/margen", "demo": "https://notjuangamer10.github.io/margen/"}, {"ship_num": 2, "ts": "2026-08-13T14:13:11Z", "hours": 20.0, "multiplier": 8.34, "payout": 168, "blessing": "neutral", "text": "What did you make? A markdown note editor called Margen, built with a “digital typewriter” aesthetic. The app is a three-column layout: a sidebar with the list of notes, a raw markdown editor pane, and a live preview pane that renders the markdown as you type. The markdown parser is written from scratch, no marked.js or any library, just a chain of regex and line-by-line processing. Built in four planned betas, currently on Beta 3. Beta 1 was the basics: editor, preview, note list, search, auto-save. Beta 2 fixed a bug where opening a note to read it would mark it as modified, added a markdown cheat sheet accessible via a button, and rewrote the markdown parser which had bugs with lists, blockquotes and code blocks. Beta 3 added LaTeX support via KaTeX for math formulas, a formula toolbar with 16 buttons that insert LaTeX at the cursor so you don’t need to know LaTeX syntax, a dark mode with a warm dark palette, and an ES/EN language toggle. Everything is local-first, stored in localStorage, no account, no server, no tracking. The goal is a clean, offline place to write university notes with formulas, without the bloat of Notion or the online-only dependency of most editors. What was challenging? The markdown parser was the hardest part. My first version used a single regex per element type, which broke on multi-line constructs like lists and blockquotes. The blockquote bug was sneaky: after escaping HTML, the > character becomes >, but my regex was looking for > literally, so blockquotes never matched. Rewrote the parser to process line by line, opening and closing ul/ol/blockquote tags as it goes, and protecting code blocks in a temporary array so other regexes don’t touch them. The LaTeX integration had a loading order issue. KaTeX loads from CDN asynchronously, so the first renderMathInElement call would fail because the library wasn’t ready yet. Had to chain the loads: first KaTeX CSS, then KaTeX JS, then the auto-render extension, and only then try to render. If a formula has a syntax error, I set throwOnError to false so it shows the raw LaTeX instead of breaking the whole preview. The dirty flag bug from Beta 2 was a design problem. Before, every time you opened a note it would save with modificada=now and jump to the top of the sidebar, which made browsing notes frustrating. Had to track whether the user actually changed anything before marking a note as modified. What are you proud of? The markdown parser, written entirely from scratch, no library. About 150 lines of regex and line-by-line processing, handles headers, bold, italic, lists, code blocks, inline code, links, images, blockquotes and horizontal rules. The formula toolbar with 16 buttons that insert LaTeX at the cursor position, so you can write math without knowing LaTeX syntax. And the “digital typewriter” aesthetic: Bitter serif for rendered content, Inter for UI, JetBrains Mono for the raw editor, thin dividing lines instead of cards or shadows. What should people know so they can test your project? Open the demo URL. A welcome note with markdown examples appears on first launch. Click the + button in the sidebar to create a new note. Type markdown in the left pane, see it rendered live in the right pane. Click the ? button to open a markdown cheat sheet. Click the “formulas” button in the editor header to open a toolbar with 16 math buttons (square root, integral, fraction, etc.) that insert LaTeX at the cursor. Click the “ajustes” button to switch between light/dark mode and ES/EN language. Notes auto-save to localStorage, nothing is sent anywhere. Live demo: https://notjuangamer10.github.io/margen/ Source: https://github.com/notjuangamer10/margen", "repo": "https://github.com/NOTJuangamer10/margen", "demo": "https://notjuangamer10.github.io/margen/"}]...
|
[{"post_id": 53666, "ts": "202 [{"post_id": 53666, "ts": "2026-08-24T10:30:30Z", "hours": 5.8731, "text": "Margen Beta 6, the final version. Three new features.Folders with colors. You can create folders (subjects) and assign notes to them. Each folder gets a color from a preset palette. The sidebar shows a folder list above the notes, click a folder to filter. A selector in the editor header lets you assign or change the folder of the current note. Useful for organizing by subject: Calculus, Physics, Programming.Linked notes. You can now link notes together using double brackets like [[Note Title]]. The parser finds the note by title and creates a clickable link in the preview. Click it and the linked note opens. If the note doesn’t exist, it shows in red with strikethrough. Useful for connecting related topics across subjects.Formula OCR. A camera button in the editor header lets you upload a photo of a math formula. Tesseract.js extracts the text and a basic converter turns common math notation into LaTeX: ^ becomes ^{}, sqrt becomes \\sqrt{}, int becomes \\int, Greek letters get backslashed, etc. The result is inserted at the cursor wrapped in $$ for block math. It’s not perfect OCR (Tesseract is designed for text, not math) but it gives you a starting point that you can edit manually.Calling Margen complete. Six betas across editor, parser, cheat sheet, LaTeX, dark mode, i18n, code highlighting, PWA, import, export, onboarding, shortcuts, focus mode, word count, folders, linked notes and formula OCR."}, {"post_id": 53355, "ts": "2026-08-23T21:25:38Z", "hours": 7.2656, "text": "Margen 5.2. Onboarding, power features, and translation fixes.Language prompt on first launch. New users see a modal asking them to choose Spanish or English before the app loads. This was the top complaint from reviewers, who said the language toggle was hard to find.Onboarding tour. First-time visitors get a welcome screen explaining how Margen works: type markdown on the left, see it rendered on the right, press + for new note, press ? for cheat sheet, press “formulas” for math buttons. Also lists the keyboard shortcuts. Dismissible with one click.Keyboard shortcuts. Ctrl+B for bold, Ctrl+I for italic, Ctrl+N for new note, Ctrl+E for focus mode, Ctrl+S for save. The shortcuts wrap the selected text or insert empty markers if nothing is selected.Focus mode. A toggle button (or Ctrl+E) hides the sidebar so you can write without distractions. The editor and preview center on screen with a max width for comfortable reading.Word counter. A small character and word count appears in the editor header, updating live as you type.Translation fixes. The welcome note and the markdown cheat sheet now respect the language setting and switch between Spanish and English fully. Relative dates like “ahora mismo” now show as “just now” in English."}, {"post_id": 52997, "ts": "2026-08-23T11:47:00Z", "hours": 4.8347, "text": "Margen 5.1. Fixes based on reviewer feedback.Full i18n. Before, switching to English left several strings in Spanish because only parts of the UI were translated. Now everything visible translates: buttons, placeholders, footer, header, cheat sheet, settings panel, export/import labels. The language toggle updates the UI in real time without needing a reload.Strikethrough support. Added text syntax to the markdown parser for strikethrough text. Also added it to the cheat sheet.Auto-detect language. On first launch, Margen now checks the browser’s language setting and defaults to English or Spanish accordingly. The user can still override it in settings.Export as .md. The export button now opens a small menu with three options: export as HTML (downloads a standalone file, no new tab), export as Markdown (.md file), and print to PDF. Previously it only exported HTML and opened a new tab, which was annoying."}, {"post_id": 52215, "ts": "2026-08-22T09:50:08Z", "hours": 3.8311, "text": "Beta 4 of Margen, the final version. Four additions. Code syntax highlighting via highlight.js. Code blocks in the preview now get colored based on language. Works in dark mode too. Export and import. An export button downloads the current note as a standalone HTML file with markdown, LaTeX and code already rendered, and opens the print dialog so you can save it as PDF. An import button lets you load an existing .md file as a new note. PWA installable. A service worker caches the core files so the app works offline on desktop and Android. The manifest is generated dynamically. CDN assets like KaTeX and highlight.js are not cached to avoid bloat, so formulas and code highlighting need internet the first time, but the app itself, your notes and the markdown parser all work offline. Calling Margen done. Four betas: basic editor, parser fix and cheat sheet, LaTeX and dark mode, now code highlighting, import, export and PWA."}, {"post_id": 46300, "ts": "2026-08-13T13:07:03Z", "hours": 5.9975, "text": "Beta 3 of Margen adds LaTeX support, dark mode and multi-language. LaTeX is the big one. KaTeX loads from CDN the first time you need it, then renders $…$ as inline math and $$…$$ as block math. So you can write $E=mc^2$ inline or a full integral in a block. If a formula has an error it just shows the raw text instead of breaking the preview. The formula toolbar was important to me because I don’t know LaTeX syntax by heart. A “formulas” button in the editor header opens a bar with 16 buttons: square root, integral, fraction, superscript, subscript, sum, limit, Greek letters, infinity, plus-minus, inequalities, arrows. Click one and it inserts the LaTeX at the cursor position, then you just fill in the blanks. No need to remember that integral is \\int_{}^{} or that fraction is \\frac{}{}. Dark mode uses a warm dark palette instead of the usual cold gray, so it still feels like the typewriter aesthetic. The toggle is in a settings panel in the sidebar, along with an ES/EN language switch that translates the whole UI. Next version will be the last: code syntax highlighting, PDF export, and PWA installable for offline use on desktop and Android. But I’m starting to get tired, so i wil be on vacation for the next week!"}, {"post_id": 45569, "ts": "2026-08-12T04:40:53Z", "hours": 6.3206, "text": "Beta 2 of Margen fixes a usability bug and adds helpful features. Fixed the modified timestamp bug. Before, every time you opened a note to read it, it would save with modificada=now and jump to the top of the sidebar list. Now there is a dirty flag that tracks whether you actually changed anything. Opening a note to read it does not mark it as modified. The sidebar list stays stable when you are just browsing. Added a markdown cheat sheet. A ? button in the sidebar opens a floating panel with the full syntax: headers, bold, italic, lists, code blocks, links, images, blockquotes, horizontal rules. Useful for when you forget how to do something without leaving the editor. Also added a welcome note that appears on first launch with examples of every markdown feature rendered in the preview. You can delete it if you want. Changed the typography from Source Serif 4 to Bitter, a slab serif that gives a more typewriter feel without being monospaced. Still legible, but more character. I personally like this version, this is like, the base of what i want to build, i would leave it like this and thats it, but I feel that i can get better at coding if i just add more things, it would be more usefull"}, {"post_id": 45210, "ts": "2026-08-11T15:15:38Z", "hours": 7.8731, "text": "Started a new project called Margen, a markdown note editor for university notes. The idea came from wanting a clean, offline place to write notes with formulas, without the bloat of Notion or the online-only dependency of most editors. Beta 1 is the basics. A three-column layout: sidebar with the list of notes, editor pane with a monospace textarea, and a live preview pane that renders markdown as you type. The markdown parser is written from scratch, no marked.js or any library, just a chain of regex replaces handling headers, bold, italic, lists, code blocks, inline code, links, images, blockquotes and horizontal rules. The design is “digital typewriter”: white background, serif typography for the rendered content, monospace for the raw editor, thin dividing lines instead of cards or shadows. The aesthetic is deliberately calm and distraction-free, like iA Writer or Bear. Notes auto-save to localStorage 400ms after you stop typing. There is also a Ctrl+S shortcut for manual save. The sidebar shows title, first line preview and relative date for each note, and filters instantly as you type in the search bar. Next version will add subjects (folders), tags, and better organization."}]...
|
Title: Margen by @jupeme6 | Stardance
Devlogs:
St Title: Margen by @jupeme6 | Stardance
Devlogs:
Started a new project called Margen, a markdown note editor for university notes. The idea came from wanting a clean, offline place to write notes with formulas, without the bloat of Notion or the online-only dependency of most editors. Beta 1 is the basics. A three-column layout: sidebar with the list of notes, editor pane with a monospace textarea, and a live preview pane that renders markdown as you type. The markdown parser is written from scratch, no marked.js or any library, just a chain of regex replaces handling headers, bold, italic, lists, code blocks, inline code, links, images, blockquotes and horizontal rules. The design is “digital typewriter”: white background, serif typography for the rendered content, monospace for the raw editor, thin dividing lines instead of cards or shadows. The aesthetic is deliberately calm and distraction-free, like iA Writer or Bear. Notes auto-save to localStorage 400ms after you stop typing. There is also a Ctrl+S shortcut for manual save. The sidebar shows title, first line preview and relative date for each note, and filters instantly as you type in the search bar. Next version will add subjects (folders), tags, and better organization.
Beta 2 of Margen fixes a usability bug and adds helpful features. Fixed the modified timestamp bug. Before, every time you opened a note to read it, it would save with modificada=now and jump to the top of the sidebar list. Now there is a dirty flag that tracks whether you actually changed anything. Opening a note to read it does not mark it as modified. The sidebar list stays stable when you are just browsing. Added a markdown cheat sheet. A ? button in the sidebar opens a floating panel with the full syntax: headers, bold, italic, lists, code blocks, links, images, blockquotes, horizontal rules. Useful for when you forget how to do something without leaving the editor. Also added a welcome note that appears on first launch with examples of every markdown feature rendered in the preview. You can delete it if you want. Changed the typography from Source Serif 4 to Bitter, a slab serif that gives a more typewriter feel without being monospaced. Still legible, but more character. I personally like this version, this is like, the base of what i want to build, i would leave it like this and thats it, but I feel that i can get better at coding if i just add more things, it would be more usefull
Beta 3 of Margen adds LaTeX support, dark mode and multi-language. LaTeX is the big one. KaTeX loads from CDN the first time you need it, then renders $…$ as inline math and $$…$$ as block math. So you can write $E=mc^2$ inline or a full integral in a block. If a formula has an error it just shows the raw text instead of breaking the preview. The formula toolbar was important to me because I don’t know LaTeX syntax by heart. A “formulas” button in the editor header opens a bar with 16 buttons: square root, integral, fraction, superscript, subscript, sum, limit, Greek letters, infinity, plus-minus, inequalities, arrows. Click one and it inserts the LaTeX at the cursor position, then you just fill in the blanks. No need to remember that integral is \int_{}^{} or that fraction is \frac{}{}. Dark mode uses a warm dark palette instead of the usual cold gray, so it still feels like the typewriter aesthetic. The toggle is in a settings panel in the sidebar, along with an ES/EN language switch that translates the whole UI. Next version will be the last: code syntax highlighting, PDF export, and PWA installable for offline use on desktop and Android. But I’m starting to get tired, so i wil be on vacation for the next week!
Beta 4 of Margen, the final version. Four additions. Code syntax highlighting via highlight.js. Code blocks in the preview now get colored based on language. Works in dark mode too. Export and import. An export button downloads the current note as a standalone HTML file with markdown, LaTeX and code already rendered, and opens the print dialog so you can save it as PDF. An import button lets you load an existing .md file as a new note. PWA installable. A service worker caches the core files so the app works offline on desktop and Android. The manifest is generated dynamically. CDN assets like KaTeX and highlight.js are not cached to avoid bloat, so formulas and code highlighting need internet the first time, but the app itself, your notes and the markdown parser all work offline. Calling Margen done. Four betas: basic editor, parser fix and cheat sheet, LaTeX and dark mode, now code highlighting, import, export and PWA.
Margen 5.1. Fixes based on reviewer feedback.Full i18n. Before, switching to English left several strings in Spanish because only parts of the UI were translated. Now everything visible translates: buttons, placeholders, footer, header, cheat sheet, settings panel, export/import labels. The language toggle updates the UI in real time without needing a reload.Strikethrough support. Added text syntax to the markdown parser for strikethrough text. Also added it to the cheat sheet.Auto-detect language. On first launch, Margen now checks the browser’s language setting and defaults to English or Spanish accordingly. The user can still override it in settings.Export as .md. The export button now opens a small menu with three options: export as HTML (downloads a standalone file, no new tab), export as Markdown (.md file), and print to PDF. Previously it only exported HTML and opened a new tab, which was annoying.
Margen 5.2. Onboarding, power features, and translation fixes.Language prompt on first launch. New users see a modal asking them to choose Spanish or English before the app loads. This was the top complaint from reviewers, who said the language toggle was hard to find.Onboarding tour. First-time visitors get a welcome screen explaining how Margen works: type markdown on the left, see it rendered on the right, press + for new note, press ? for cheat sheet, press “formulas” for math buttons. Also lists the keyboard shortcuts. Dismissible with one click.Keyboard shortcuts. Ctrl+B for bold, Ctrl+I for italic, Ctrl+N for new note, Ctrl+E for focus mode, Ctrl+S for save. The shortcuts wrap the selected text or insert empty markers if nothing is selected.Focus mode. A toggle button (or Ctrl+E) hides the sidebar so you can write without distractions. The editor and preview center on screen with a max width for comfortable reading.Word counter. A small character and word count appears in the editor header, updating live as you type.Translation fixes. The welcome note and the markdown cheat sheet now respect the language setting and switch between Spanish and English fully. Relative dates like “ahora mismo” now show as “just now” in English.
Margen Beta 6, the final version. Three new features.Folders with colors. You can create folders (subjects) and assign notes to them. Each folder gets a color from a preset palette. The sidebar shows a folder list above the notes, click a folder to filter. A selector in the editor header lets you assign or change the folder of the current note. Useful for organizing by subject: Calculus, Physics, Programming.Linked notes. You can now link notes together using double brackets like [[Note Title]]. The parser finds the note by title and creates a clickable link in the preview. Click it and the linked note opens. If the note doesn’t exist, it shows in red with strikethrough. Useful for connecting related topics across subjects.Formula OCR. A camera button in the editor header lets you upload a photo of a math formula. Tesseract.js extracts the text and a basic converter turns common math notation into LaTeX: ^ becomes ^{}, sqrt becomes \sqrt{}, int becomes \int, Greek letters get backslashed, etc. The result is inserted at the cursor wrapped in $$ for block math. It’s not perfect OCR (Tesseract is designed for text, not math) but it gives you a starting point that you can edit manually.Calling Margen complete. Six betas across editor, parser, cheat sheet, LaTeX, dark mode, i18n, code highlighting, PWA, import, export, onboarding, shortcuts, focus mode, word count, folders, linked notes and formula OCR.
Ships:
What did you make? A markdown note editor called Margen, built with a “digital typewriter” aesthetic. The app is a three-column layout: a sidebar with the list of notes, a raw markdown editor pane, and a live preview pane that renders the markdown as you type. The markdown parser is written from scratch, no marked.js or any library, just a chain of regex and line-by-line processing. Built in four planned betas, currently on Beta 3. Beta 1 was the basics: editor, preview, note list, search, auto-save. Beta 2 fixed a bug where opening a note to read it would mark it as modified, added a markdown cheat sheet accessible via a button, and rewrote the markdown parser which had bugs with lists, blockquotes and code blocks. Beta 3 added LaTeX support via KaTeX for math formulas, a formula toolbar with 16 buttons that insert LaTeX at the cursor so you don’t need to know LaTeX syntax, a dark mode with a warm dark palette, and an ES/EN language toggle. Everything is local-first, stored in localStorage, no account, no server, no tracking. The goal is a clean, offline place to write university notes with formulas, without the bloat of Notion or the online-only dependency of most editors. What was challenging? The markdown parser was the hardest part. My first version used a single regex per element type, which broke on multi-line constructs like lists and blockquotes. The blockquote bug was sneaky: after escaping HTML, the > character becomes >, but my regex was looking for > literally, so blockquotes never matched. Rewrote the parser to process line by line, opening and closing ul/ol/blockquote tags as it goes, and protecting code blocks in a temporary array so other regexes don’t touch them. The LaTeX integration had a loading order issue. KaTeX loads from CDN asynchronously, so the first renderMathInElement call would fail because the library wasn’t ready yet. Had to chain the loads: first KaTeX CSS, then KaTeX JS, then the auto-render extension, and only then try to render. If a formula has a syntax error, I set throwOnError to false so it shows the raw LaTeX instead of breaking the whole preview. The dirty flag bug from Beta 2 was a design problem. Before, every time you opened a note it would save with modificada=now and jump to the top of the sidebar, which made browsing notes frustrating. Had to track whether the user actually changed anything before marking a note as modified. What are you proud of? The markdown parser, written entirely from scratch, no library. About 150 lines of regex and line-by-line processing, handles headers, bold, italic, lists, code blocks, inline code, links, images, blockquotes and horizontal rules. The formula toolbar with 16 buttons that insert LaTeX at the cursor position, so you can write math without knowing LaTeX syntax. And the “digital typewriter” aesthetic: Bitter serif for rendered content, Inter for UI, JetBrains Mono for the raw editor, thin dividing lines instead of cards or shadows. What should people know so they can test your project? Open the demo URL. A welcome note with markdown examples appears on first launch. Click the + button in the sidebar to create a new note. Type markdown in the left pane, see it rendered live in the right pane. Click the ? button to open a markdown cheat sheet. Click the “formulas” button in the editor header to open a toolbar with 16 math buttons (square root, integral, fraction, etc.) that insert LaTeX at the cursor. Click the “ajustes” button to switch between light/dark mode and ES/EN language. Notes auto-save to localStorage, nothing is sent anywhere. Live demo: https://notjuangamer10.github.io/margen/ Source: https://github.com/notjuangamer10/margen
What did you make? A markdown note editor called Margen with a digital typewriter aesthetic. Three columns: sidebar with notes, raw markdown editor, live preview. The parser is written from scratch, no library. Six betas added LaTeX support with KaTeX, a formula toolbar, dark mode, ES/EN i18n, code highlighting, PWA offline, import/export, folders with colors, linked notes via [[wiki-style]] syntax, and formula OCR via Tesseract.js. Local-first, no account, no server. What was challenging? The markdown parser broke on multi-line constructs. Rewrote it line-by-line. KaTeX loads async so had to chain CSS then JS then auto-render. Formula OCR needed a text-to-LaTeX converter since Tesseract is for text not math. What are you proud of? The parser from scratch, the formula toolbar for non-LaTeX users, and the whole thing working offline as a PWA. What should people know so they can test? Open the demo. Choose language on first launch. Click + for new note. Type markdown, see live preview. Press ? for cheat sheet. Click “formulas” for math buttons. Click camera to scan a formula. Create folders with colors. Link notes with [[Title]]. Gear icon for dark mode and language. Live demo: https://notjuangamer10.github.io/margen/ Source: https://github.com/notjuangamer10/margen...
|
1793771637.8226168
|
1794635637.8226168
|
|
906
|
the a380 websitr by @sushan_kommireddi | Stardance
|
sushan_kommireddi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: the a380 websitr by @sushan_kommireddi | St Title: the a380 websitr by @sushan_kommireddi | Stardance...
|
1793771636.935179
|
1794376436.935179
|
|
39877
|
My own site! by @ilfattorino | Stardance
|
ilfattorino
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T00:05:35Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "it is just a normal site, i made many things that were and are being way much more difficult. Thanks", "repo": "https://github.com/effettot/myself/", "demo": "https://effettot.github.io/myself/"}]...
|
[{"post_id": 34898, "ts": "202 [{"post_id": 34898, "ts": "2026-07-26T00:02:02Z", "hours": 0.4653, "text": "Devlog #1 — Building my portfolio Started working on my personal portfolio site today. Nothing fancy just HTML, CSS and vanilla JS, no frameworks. What’s in it: A short “who I am” section A projects grid linking to what I’ve built so far (Decimation MOD, One ID, and this site itself) A simple contact section with links to GitHub and Stardance That’s it for now."}]...
|
Title: My own site! by @ilfattorino | Stardance
D Title: My own site! by @ilfattorino | Stardance
Devlogs:
Devlog #1 — Building my portfolio Started working on my personal portfolio site today. Nothing fancy just HTML, CSS and vanilla JS, no frameworks. What’s in it: A short “who I am” section A projects grid linking to what I’ve built so far (Decimation MOD, One ID, and this site itself) A simple contact section with links to GitHub and Stardance That’s it for now.
Ships:
it is just a normal site, i made many things that were and are being way much more difficult. Thanks...
|
1793771636.07181
|
1794635636.07181
|
|
36267
|
My Website/Portifolio by @Mateus-M15 | Stardance
|
Mateus-M15
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-23T02:51:24Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a personal portfolio and interactive digital archive built with a retro Frutiger Aero aesthetic, that for a while i wanted to. The entire layout, structure, and styling were made by me. What was challenging: Making everythin work as it should, many times i forgot to use the display flex atibute, and dumbs things like forgeting to close an “}” What I am proud of: How it looks, it’s not the 100% i tought it whould be, but it’s an start. How I used AI: I made the html and Css. AI was used only as an assistant to help write and optimize the mathematical logic and collision routines for the DVD bouncing canvas simulation in the Fun Zone. and bug fixes. How to test: Navigate through the left menu tabs to explore the portfolio sections and featured projects. Head over to the “Fun Zone” tab to watch the DVD bouncing logo physics, track edge collisions, and try to catch a exact corner hit!", "repo": "https://github.com/m15dev/my-website", "demo": "http://m15dev.com/"}]...
|
[{"post_id": 33295, "ts": "202 [{"post_id": 33295, "ts": "2026-07-23T02:44:02Z", "hours": 2.1983, "text": "DevLog #008 Hellooo ;D it’s pretty much done, yay, well the main website it’s done and works, i’ll keep updating it, but atleast it’s finished now, added a cool button ;D and the other menus, and now you can visit it, stay safe, byeee ;P"}, {"post_id": 32741, "ts": "2026-07-22T02:46:58Z", "hours": 1.2594, "text": "DevLog #005 Well, i didn’t finished my site today ;c, no internet, and i wasn’t at home soo, not much, but i did some coding on the menu switching, and introduction menu, ;D see ya next"}, {"post_id": 32118, "ts": "2026-07-21T01:53:35Z", "hours": 3.2192, "text": "DevLog #004 Sup ;3, today i added a profile picture and a windows 7 pfp border, mostly because i always used win7 and it still has a charm, but i took some time couse i forgot to close a “}” such a headache, but hey now i just need to add my projects, i’ts almost done, maybe tomorrow i finish it, say cool, bye :D"}, {"post_id": 31575, "ts": "2026-07-20T02:37:29Z", "hours": 1.5442, "text": "DevLog #003 Hello ;D, so today i took a look and fix some typos i made, hehe, uuh added this cool glassmorphism like efect, using background-blur, made some buttons and drew what i plan to make my website, didn’t had much time today, but it’s something :D, see yaa soon, take care !"}, {"post_id": 31019, "ts": "2026-07-19T02:32:44Z", "hours": 0.3519, "text": "DevLog #002 I’ve added a background image that i liked, i planed on adding a button so maybe the person seeing my webpage could change the background by clicking it, still need to do that, and more, i didn’t had much time today to work on this, but it’s something >;3"}, {"post_id": 30482, "ts": "2026-07-18T03:01:54Z", "hours": 1.0194, "text": "DevLog #001 I’m making a website for me, been a while i wanted to make one, now i have the perfect excuse, im gonna make it frutiger aero like, and other things that i like, look:"}]...
|
Title: My Website/Portifolio by @Mateus-M15 | Star Title: My Website/Portifolio by @Mateus-M15 | Stardance
Devlogs:
DevLog #001 I’m making a website for me, been a while i wanted to make one, now i have the perfect excuse, im gonna make it frutiger aero like, and other things that i like, look:
DevLog #002 I’ve added a background image that i liked, i planed on adding a button so maybe the person seeing my webpage could change the background by clicking it, still need to do that, and more, i didn’t had much time today to work on this, but it’s something >;3
DevLog #003 Hello ;D, so today i took a look and fix some typos i made, hehe, uuh added this cool glassmorphism like efect, using background-blur, made some buttons and drew what i plan to make my website, didn’t had much time today, but it’s something :D, see yaa soon, take care !
DevLog #004 Sup ;3, today i added a profile picture and a windows 7 pfp border, mostly because i always used win7 and it still has a charm, but i took some time couse i forgot to close a “}” such a headache, but hey now i just need to add my projects, i’ts almost done, maybe tomorrow i finish it, say cool, bye :D
DevLog #005 Well, i didn’t finished my site today ;c, no internet, and i wasn’t at home soo, not much, but i did some coding on the menu switching, and introduction menu, ;D see ya next
DevLog #008 Hellooo ;D it’s pretty much done, yay, well the main website it’s done and works, i’ll keep updating it, but atleast it’s finished now, added a cool button ;D and the other menus, and now you can visit it, stay safe, byeee ;P
Ships:
I created a personal portfolio and interactive digital archive built with a retro Frutiger Aero aesthetic, that for a while i wanted to. The entire layout, structure, and styling were made by me. What was challenging: Making everythin work as it should, many times i forgot to use the display flex atibute, and dumbs things like forgeting to close an “}” What I am proud of: How it looks, it’s not the 100% i tought it whould be, but it’s an start. How I used AI: I made the html and Css. AI was used only as an assistant to help write and optimize the mathematical logic and collision routines for the DVD bouncing canvas simulation in the Fun Zone. and bug fixes. How to test: Navigate through the left menu tabs to explore the portfolio sections and featured projects. Head over to the “Fun Zone” tab to watch the DVD bouncing logo physics, track edge collisions, and try to catch a exact corner hit!...
|
1793771635.2194047
|
1794635635.2194047
|
|
31933
|
My awesome macropad! by @miralem | Stardance
|
miralem
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @miralem | Stardanc Title: My awesome macropad! by @miralem | Stardance...
|
1793771634.3080096
|
1794376434.3080096
|
|
53559
|
Calculator by @lavanyagajbhiye | Stardance
|
lavanyagajbhiye
|
1
|
7.46
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T07:43:45Z", "hours": 6.0, "multiplier": 1.28, "payout": 7, "blessing": "neutral", "text": "CALCULATOR So basically I made a basic calculator as I am pretty new to these things. The design is made in css, html and javascript. I am pretty proud of it as the project encountered countless bugs but I was able to finish it and make it good and in a working condition. HOPE everybody likes it.", "repo": "https://github.com/Leonardoduty/Calculator", "demo": "https://leonardoduty.github.io/Calculator/"}]...
|
[{"post_id": 57338, "ts": "202 [{"post_id": 57338, "ts": "2026-08-29T13:45:41Z", "hours": 1.4592, "text": "DEVLOG #3 this is probably the last devlog of this series, so I added a space theme to the calculator and added a bunch of features mainly I added the keydown events and A history menu. These are all the QOL updates. HOPE all of you enjoy. Also a shoutout to all the people who are genuinely enjoying these devlogs and liking them!"}, {"post_id": 57140, "ts": "2026-08-29T07:40:12Z", "hours": 4.2325, "text": "DEVLOG #2 so, got the javascript working and msot importantly it took me a lot of time this is because the javascript bugged and also problem with the styling everything works and the calculator can be used in you daily tasks."}, {"post_id": 55356, "ts": "2026-08-27T04:18:32Z", "hours": 1.3636, "text": "DEVLOG 1, So today I basically made the project structure created the css, js and html and finnally coded in the css and html I mainly worked on getting that calculator feel and making it good. Future plans are to make the javascript working. Stay tuned for 2nd Devlog."}]...
|
Title: Calculator by @lavanyagajbhiye | Stardance
Title: Calculator by @lavanyagajbhiye | Stardance
Devlogs:
DEVLOG 1, So today I basically made the project structure created the css, js and html and finnally coded in the css and html I mainly worked on getting that calculator feel and making it good. Future plans are to make the javascript working. Stay tuned for 2nd Devlog.
DEVLOG #2 so, got the javascript working and msot importantly it took me a lot of time this is because the javascript bugged and also problem with the styling everything works and the calculator can be used in you daily tasks.
DEVLOG #3 this is probably the last devlog of this series, so I added a space theme to the calculator and added a bunch of features mainly I added the keydown events and A history menu. These are all the QOL updates. HOPE all of you enjoy. Also a shoutout to all the people who are genuinely enjoying these devlogs and liking them!
Ships:
CALCULATOR So basically I made a basic calculator as I am pretty new to these things. The design is made in css, html and javascript. I am pretty proud of it as the project encountered countless bugs but I was able to finish it and make it good and in a working condition. HOPE everybody likes it....
|
1793771633.4408526
|
1794635633.4408526
|
|
2353
|
My first slack bot! by @harshit | Stardance
|
harshit
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-03T18:32:49Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Vozo Bot, a custom Slack bot using Node.js, Slack Bolt, and Socket Mode. The bot responds to custom slash commands and is hosted on Hack Club Nest so it stays online 24/7. Features: /vozo-ping — Check bot latency /vozo-help — View available commands /vozo-joke — Get a random joke /vozo-catfact — Get a random cat fact The most challenging part was setting up the Slack app, configuring the tokens securely, connecting the bot with Socket Mode, and deploying it to Nest. I also had to learn how to use GitHub, SSH into a Linux server, and run the bot as a systemd service. I’m proud that the bot is fully deployed and continues running even when my laptop is turned off. To test the project, use any of the slash commands: /vozo-ping /vozo-help /vozo-joke /vozo-catfact Source code is available on GitHub, and the bot is hosted on Hack Club Nest.", "repo": "https://github.com/harshitsuthar839-sys/vozobot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B8NHYPG01"}]...
|
[{"post_id": 1586, "ts": "2026 [{"post_id": 1586, "ts": "2026-06-03T18:20:05Z", "hours": 0.36, "text": "Building Vozo Bot Today I created my first Slack bot called Vozo Bot using Node.js and Slack Bolt. What I worked on: Set up a Slack App and enabled Socket Mode Created custom slash commands: /vozo-ping /vozo-help /vozo-joke /vozo-catfact Tested all commands in Slack Uploaded the project to GitHub Applied for and received a Nest container Deployed the bot to Nest and configured it with systemd so it runs 24/7 Next steps: Add more features and improve responses Continue testing and polishing the bot"}]...
|
Title: My first slack bot! by @harshit | Stardance Title: My first slack bot! by @harshit | Stardance
Devlogs:
Building Vozo Bot Today I created my first Slack bot called Vozo Bot using Node.js and Slack Bolt. What I worked on: Set up a Slack App and enabled Socket Mode Created custom slash commands: /vozo-ping /vozo-help /vozo-joke /vozo-catfact Tested all commands in Slack Uploaded the project to GitHub Applied for and received a Nest container Deployed the bot to Nest and configured it with systemd so it runs 24/7 Next steps: Add more features and improve responses Continue testing and polishing the bot
Ships:
I built Vozo Bot, a custom Slack bot using Node.js, Slack Bolt, and Socket Mode. The bot responds to custom slash commands and is hosted on Hack Club Nest so it stays online 24/7. Features: /vozo-ping — Check bot latency /vozo-help — View available commands /vozo-joke — Get a random joke /vozo-catfact — Get a random cat fact The most challenging part was setting up the Slack app, configuring the tokens securely, connecting the bot with Socket Mode, and deploying it to Nest. I also had to learn how to use GitHub, SSH into a Linux server, and run the bot as a systemd service. I’m proud that the bot is fully deployed and continues running even when my laptop is turned off. To test the project, use any of the slash commands: /vozo-ping /vozo-help /vozo-joke /vozo-catfact Source code is available on GitHub, and the bot is hosted on Hack Club Nest....
|
1793771632.5753129
|
1794635632.5753129
|
|
56254
|
HoopsOS by @XDabXking | Stardance
|
XDabXking
|
1
|
20.32
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-03T13:40:06Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "HoopsOS is a basketball themed web OS I built with HTML, CSS, and JavaScript. It has a bunch of apps like a scoreboard, stat tracker, playbook, calculator, schedule, games, browser, terminal, weather, and more. I also added things like draggable windows, desktop widgets, customization, a taskbar, notifications, and a basketball-themed boot-up screen. The whole thing runs in your browser, so there’s nothing to install. It’s basically my take on what a basketball operating system could look like.", "repo": "https://github.com/madhavsingla2013-dev/HoopsOS", "demo": "https://hoops-os.netlify.app/"}]...
|
[{"post_id": 64346, "ts": "202 [{"post_id": 64346, "ts": "2026-09-08T17:25:54Z", "hours": 0.6758, "text": "Removed most of apps, backgrounds, styling, features etc, i kinda made the code really really simple bc ‘it looked to ai while other projects get nominated for super star and looked 100x better then my project’…"}, {"post_id": 64096, "ts": "2026-09-08T08:56:05Z", "hours": 2.7756, "text": "added new logos to the apps, to lazy to aline the logo for paint, fixed sm stuff, re wrote sm stuff, mosty the same drill, And i finally rolled a good number in the rng (1,755,790)"}, {"post_id": 63788, "ts": "2026-09-07T19:03:20Z", "hours": 1.7322, "text": "Put in a new color scheme, re wrote few lines, fixed few bugs and thats all"}, {"post_id": 63595, "ts": "2026-09-07T14:50:48Z", "hours": 1.1819, "text": "Ain’t no way i spent the last 5h of my life re writing css js for it to be called ai bc i removed few comments ages ago."}, {"post_id": 63005, "ts": "2026-09-06T15:55:29Z", "hours": 5.5192, "text": "i re did the full css fixed few bugs removed few animations and confetti, ya thats all"}, {"post_id": 61772, "ts": "2026-09-04T20:59:04Z", "hours": 3.4353, "text": "I didint do much, im re doing all the css and animatons as its getting flaged for ai, Back is 0%"}, {"post_id": 60809, "ts": "2026-09-03T12:50:48Z", "hours": 1.7614, "text": "RE WORKED EVERYTHINGGG!!!!! Soo i first added few more backgrounds from here added notifications, paint, Hoops Shootout, Weather, Browser(has few errors but ima lazy to fix them) AND I ADD (drumroll please)…. TERMINALLL. i also changed the gallery name to hall of fame and couldn’t fix the youtube api , And ya thats all i added few more stuff but yk im lazy ."}, {"post_id": 59801, "ts": "2026-09-01T18:57:11Z", "hours": 1.7478, "text": "I made bigger starting windows as stuff tends to cut of in the old size, Editable Schedule so its not a fixed one and has some use, Draggable desktop icons so u can now click and drag any icon on the desktop to reposition it, added a right click desktop menu with: Arrange icons Refresh New note Display settings or Personalize Settings Terminal (COMING SOON- i hope so) I need to fix few bugs with the background, add images to the player gallery and need to fix the youtube API"}, {"post_id": 59005, "ts": "2026-08-31T16:11:11Z", "hours": 1.4456, "text": "I added few more backgrounds, color customization and a mascot that follows your mouse or is roaming aroud, I also added few more apps and fixed few bug while trying to add few youtube videos"}, {"post_id": 58067, "ts": "2026-08-30T12:39:08Z", "hours": 0.4617, "text": "New projects called HoopsOS or HoopOS, made few apps and ya"}]...
|
Title: HoopsOS by @XDabXking | Stardance
Devlogs: Title: HoopsOS by @XDabXking | Stardance
Devlogs:
New projects called HoopsOS or HoopOS, made few apps and ya
I added few more backgrounds, color customization and a mascot that follows your mouse or is roaming aroud, I also added few more apps and fixed few bug while trying to add few youtube videos
I made bigger starting windows as stuff tends to cut of in the old size, Editable Schedule so its not a fixed one and has some use, Draggable desktop icons so u can now click and drag any icon on the desktop to reposition it, added a right click desktop menu with: Arrange icons Refresh New note Display settings or Personalize Settings Terminal (COMING SOON- i hope so) I need to fix few bugs with the background, add images to the player gallery and need to fix the youtube API
RE WORKED EVERYTHINGGG!!!!! Soo i first added few more backgrounds from here added notifications, paint, Hoops Shootout, Weather, Browser(has few errors but ima lazy to fix them) AND I ADD (drumroll please)…. TERMINALLL. i also changed the gallery name to hall of fame and couldn’t fix the youtube api , And ya thats all i added few more stuff but yk im lazy .
I didint do much, im re doing all the css and animatons as its getting flaged for ai, Back is 0%
i re did the full css fixed few bugs removed few animations and confetti, ya thats all
Ain’t no way i spent the last 5h of my life re writing css js for it to be called ai bc i removed few comments ages ago.
Put in a new color scheme, re wrote few lines, fixed few bugs and thats all
added new logos to the apps, to lazy to aline the logo for paint, fixed sm stuff, re wrote sm stuff, mosty the same drill, And i finally rolled a good number in the rng (1,755,790)
Removed most of apps, backgrounds, styling, features etc, i kinda made the code really really simple bc ‘it looked to ai while other projects get nominated for super star and looked 100x better then my project’…
Ships:
HoopsOS is a basketball themed web OS I built with HTML, CSS, and JavaScript. It has a bunch of apps like a scoreboard, stat tracker, playbook, calculator, schedule, games, browser, terminal, weather, and more. I also added things like draggable windows, desktop widgets, customization, a taskbar, notifications, and a basketball-themed boot-up screen. The whole thing runs in your browser, so there’s nothing to install. It’s basically my take on what a basketball operating system could look like....
|
1793771631.7278347
|
1794635631.7278347
|
|
13866
|
Plant Care Taker by @ttf2010 | Stardance
|
ttf2010
|
0
|
13.62
|
0
|
[]
|
[{"post_id": 18094, "ts": "202 [{"post_id": 18094, "ts": "2026-06-29T03:03:56Z", "hours": 2.4797, "text": "Just started working on the Care Plan for the code. Basically, it takes info from the user’s environment and the logs they have submitted to create a custom care plan that will boost growth for plants. It will be pretty simple for now. However, I want it to eventually work without asking questions. I want it to use sensors and data about the real world, location, climate, and the plant to create custom plans."}, {"post_id": 14540, "ts": "2026-06-23T18:05:29Z", "hours": 4.5525, "text": "Just finished working on an issue in my code. Basically, I wanted to utilize the name of the user’s plant to save info of plant under the plant name as a variable. I didn’t know how to do this effectively without sparking a heap of errors. I learned a lot while doing this. That’s what I love about learning how to code on my own, it allows me to experience errors and fix them through gaining extra info. Anyways I found out I can utilize an empty dictionary and add in all the data in the object as a value under the plant name saved as a key. I know it sounds simple, but it was so satisfying figuring it out."}, {"post_id": 10448, "ts": "2026-06-17T05:34:55Z", "hours": 2.5553, "text": "Spent a lot of time working on about 6 bugs. The bigs were messing up the models that were meant to perform different tasks based on the plant’s information. Luckily I have now fixed it and going to sleep lol."}, {"post_id": 8907, "ts": "2026-06-14T20:31:48Z", "hours": 0.5572, "text": "Just read about OOP on Python and decided to give it a go in this code. A lot of things became much easier to add in and code using this. Now storing data and using functions is much more possible and takes way less time!"}, {"post_id": 8494, "ts": "2026-06-14T03:53:26Z", "hours": 3.4714, "text": "Been working on this plant care taker. I like to plant with my mom and I thought this might be a good idea to keep info about our plants. It can also detect problems based on growth patterns, soil, climate, etc. I’ve been working on it for a while but it’s pretty basic and inefficient. I want it to be more complex, ai-like, and be able to work without human supervision."}]...
|
Title: Plant Care Taker by @ttf2010 | Stardance
D Title: Plant Care Taker by @ttf2010 | Stardance
Devlogs:
Been working on this plant care taker. I like to plant with my mom and I thought this might be a good idea to keep info about our plants. It can also detect problems based on growth patterns, soil, climate, etc. I’ve been working on it for a while but it’s pretty basic and inefficient. I want it to be more complex, ai-like, and be able to work without human supervision.
Just read about OOP on Python and decided to give it a go in this code. A lot of things became much easier to add in and code using this. Now storing data and using functions is much more possible and takes way less time!
Spent a lot of time working on about 6 bugs. The bigs were messing up the models that were meant to perform different tasks based on the plant’s information. Luckily I have now fixed it and going to sleep lol.
Just finished working on an issue in my code. Basically, I wanted to utilize the name of the user’s plant to save info of plant under the plant name as a variable. I didn’t know how to do this effectively without sparking a heap of errors. I learned a lot while doing this. That’s what I love about learning how to code on my own, it allows me to experience errors and fix them through gaining extra info. Anyways I found out I can utilize an empty dictionary and add in all the data in the object as a value under the plant name saved as a key. I know it sounds simple, but it was so satisfying figuring it out.
Just started working on the Care Plan for the code. Basically, it takes info from the user’s environment and the logs they have submitted to create a custom care plan that will boost growth for plants. It will be pretty simple for now. However, I want it to eventually work without asking questions. I want it to use sensors and data about the real world, location, climate, and the plant to create custom plans....
|
1793771630.5650365
|
1794376430.5650365
|
|
50360
|
THE OBSERVER by @lakshay99_b | Stardance
|
lakshay99_b
|
1
|
2.27
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T09:44:00Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I finally shipped THE OBSERVER 🚀 I built The Observer as an astronomy-focused new-tab dashboard that turns a normal browser tab into a small digital observatory. I wanted it to feel alive, so I connected it with real space data like NASA’s Astronomy Picture of the Day, the ISS position, people currently in space, and upcoming launches. I also built the animated starfield, solar-system visualization, bookmarks, field notes, search, settings, and the rest of the interface myself using HTML, CSS and vanilla JavaScript. The most challenging part was getting all the different pieces to work together reliably. Working with multiple APIs, handling asynchronous data, dealing with loading/error states, creating the Canvas animations, and making the layout work across screen sizes taught me a lot more than I expected. I’m especially proud of the fact that this isn’t a one-click AI-generated website or a template that I simply customized. I spent the time designing the UI, writing the code, connecting the APIs, debugging things that broke, and iterating until it became something I was actually happy to ship. If you’re reviewing/testing it: open the deployed site and give it a moment to load the live data. Try the NASA picture, ISS tracker, people-in-space section, upcoming launch countdown, planet cards, search, bookmarks, settings, and Field Notes. You can also refresh the page to check that your saved settings and notes persist. This is the version I’m submitting for review, but I don’t consider it the end of The Observer. There are still plenty of things I’d love to improve and add. Thanks for checking out my project. 🌌 — Lakshay", "repo": "https://github.com/lakshay99b-dotcom/the-observer", "demo": "https://the-observer-angvey.vercel.app"}]...
|
[{"post_id": 51037, "ts": "202 [{"post_id": 51037, "ts": "2026-08-20T15:00:08Z", "hours": 0.2667, "text": "Spent some time cleaning up the top part of the page. Moved the search bar under the clock so it sits more like a normal new tab page. Made it wider too. Before it was stuck on the side and felt a bit awkward. Also shifted the GitHub / Stardance / YouTube buttons below the search bar and added simple icons to them. Looks cleaner now. Tried adding a space background image. First one I picked was too bright and made the text hard to read, so I darkened it with an overlay. It’s better now but I might still change the image later if I find a nicer one. Notes and name still save properly. APOD and ISS are working. Not a huge update, just small things that were bothering me. Feels a bit more usable now."}, {"post_id": 50859, "ts": "2026-08-20T09:43:10Z", "hours": 0.4308, "text": "JUST PLAYING THE FINAL CARD this is devlog#5 and now i am happy that this is finally at the stage of completenes."}, {"post_id": 50358, "ts": "2026-08-19T15:12:39Z", "hours": 0.3822, "text": "devlog#3 this might be going to be my last devlog for my this project. I FINALLY ADDED A VIDEO FETCHER FOR NASA’S VIDEO ADD IT IS ALMOST COMPLETE. FEATURES -search for anything -real time, date -nasa’s images and videoes -iss position tracker -launch tracker -name of humans currently in orbit although i know i was posting very less devlogs, but actually i am so stuck in code that i don’t remeber to do this."}, {"post_id": 50332, "ts": "2026-08-19T14:31:10Z", "hours": 0.4181, "text": "The Observer — Bringing the Solar System to Life 🌌The Observer is starting to feel like an actual space exploration tool.In this build, I’ve been working on the interactive solar-system visualization, where planets are displayed with their connections and can be explored to reveal information about them.The current version includes:🪐 Interactive planet visualization⭐ Animated background stars🌍 Planet information such as radius, gravity, mass and moons🛰️ Live ISS position data📍 ISS latitude, longitude, altitude and velocity💻 A completely browser-based interfaceThis screenshot is also a good reminder that development isn’t always clean 😅 — while building the star-field animation and resizing system, I ran into a JavaScript error in the console. I’m currently debugging it and improving the system so the visualization remains stable across different screen sizes.The goal for The Observer isn’t just to make something that looks like space.I want to turn it into a small interactive window into our actual universe — combining real astronomical data, visualization and exploration in one place.Still building. 🚀 #Stardance #HackClub #TheObserver #WebDevelopment #JavaScript #Space #Astronomy #BuildInPublic"}, {"post_id": 50170, "ts": "2026-08-19T08:52:18Z", "hours": 1.1272, "text": "this is my devlog#1 i today worked for nearly an hour messing with code and output. Currently the output in not attractive but i am just trying to improve it."}]...
|
Title: THE OBSERVER by @lakshay99_b | Stardance
D Title: THE OBSERVER by @lakshay99_b | Stardance
Devlogs:
this is my devlog#1 i today worked for nearly an hour messing with code and output. Currently the output in not attractive but i am just trying to improve it.
The Observer — Bringing the Solar System to Life 🌌The Observer is starting to feel like an actual space exploration tool.In this build, I’ve been working on the interactive solar-system visualization, where planets are displayed with their connections and can be explored to reveal information about them.The current version includes:🪐 Interactive planet visualization⭐ Animated background stars🌍 Planet information such as radius, gravity, mass and moons🛰️ Live ISS position data📍 ISS latitude, longitude, altitude and velocity💻 A completely browser-based interfaceThis screenshot is also a good reminder that development isn’t always clean 😅 — while building the star-field animation and resizing system, I ran into a JavaScript error in the console. I’m currently debugging it and improving the system so the visualization remains stable across different screen sizes.The goal for The Observer isn’t just to make something that looks like space.I want to turn it into a small interactive window into our actual universe — combining real astronomical data, visualization and exploration in one place.Still building. 🚀 #Stardance #HackClub #TheObserver #WebDevelopment #JavaScript #Space #Astronomy #BuildInPublic
devlog#3 this might be going to be my last devlog for my this project. I FINALLY ADDED A VIDEO FETCHER FOR NASA’S VIDEO ADD IT IS ALMOST COMPLETE. FEATURES -search for anything -real time, date -nasa’s images and videoes -iss position tracker -launch tracker -name of humans currently in orbit although i know i was posting very less devlogs, but actually i am so stuck in code that i don’t remeber to do this.
JUST PLAYING THE FINAL CARD this is devlog#5 and now i am happy that this is finally at the stage of completenes.
Spent some time cleaning up the top part of the page. Moved the search bar under the clock so it sits more like a normal new tab page. Made it wider too. Before it was stuck on the side and felt a bit awkward. Also shifted the GitHub / Stardance / YouTube buttons below the search bar and added simple icons to them. Looks cleaner now. Tried adding a space background image. First one I picked was too bright and made the text hard to read, so I darkened it with an overlay. It’s better now but I might still change the image later if I find a nicer one. Notes and name still save properly. APOD and ISS are working. Not a huge update, just small things that were bothering me. Feels a bit more usable now.
Ships:
I finally shipped THE OBSERVER 🚀 I built The Observer as an astronomy-focused new-tab dashboard that turns a normal browser tab into a small digital observatory. I wanted it to feel alive, so I connected it with real space data like NASA’s Astronomy Picture of the Day, the ISS position, people currently in space, and upcoming launches. I also built the animated starfield, solar-system visualization, bookmarks, field notes, search, settings, and the rest of the interface myself using HTML, CSS and vanilla JavaScript. The most challenging part was getting all the different pieces to work together reliably. Working with multiple APIs, handling asynchronous data, dealing with loading/error states, creating the Canvas animations, and making the layout work across screen sizes taught me a lot more than I expected. I’m especially proud of the fact that this isn’t a one-click AI-generated website or a template that I simply customized. I spent the time designing the UI, writing the code, connecting the APIs, debugging things that broke, and iterating until it became something I was actually happy to ship. If you’re reviewing/testing it: open the deployed site and give it a moment to load the live data. Try the NASA picture, ISS tracker, people-in-space section, upcoming launch countdown, planet cards, search, bookmarks, settings, and Field Notes. You can also refresh the page to check that your saved settings and notes persist. This is the version I’m submitting for review, but I don’t consider it the end of The Observer. There are still plenty of things I’d love to improve and add. Thanks for checking out my project. 🌌 — Lakshay...
|
1793771629.402229
|
1794635629.402229
|
|
19093
|
RJ GARMENT by @ttyChud | Stardance
|
ttyChud
|
1
|
9.0
|
68
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T09:12:03Z", "hours": 9.0, "multiplier": 7.23, "payout": 68, "blessing": "neutral", "text": "clothing website, I made for a local cloth shop uses ogl and some nice dame animations no money was made, I made this out of my good will", "repo": "https://github.com/Himanshu121865/rjgarment", "demo": "https://rjgarment.vercel.app/"}]...
|
[{"post_id": 9149, "ts": "2026 [{"post_id": 9149, "ts": "2026-06-15T10:05:59Z", "hours": 9.4556, "text": "I made a clothing website for a local store In my area. Even tho i don’t like web devlopment much but it was kinda fun. now going back to working on run terminals"}]...
|
Title: RJ GARMENT by @ttyChud | Stardance
Devlogs Title: RJ GARMENT by @ttyChud | Stardance
Devlogs:
I made a clothing website for a local store In my area. Even tho i don’t like web devlopment much but it was kinda fun. now going back to working on run terminals
Ships:
clothing website, I made for a local cloth shop uses ogl and some nice dame animations no money was made, I made this out of my good will...
|
1793771628.5263774
|
1794635628.5263774
|
|
689
|
My first slack bot! by @0 | Stardance
|
0
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @0 | Stardance
|
1793771627.6412585
|
1794376427.6412585
|
|
10911
|
SubBake by @reimunyancat | Stardance
|
reimunyancat
|
1
|
32.89
|
411
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T00:02:46Z", "hours": 22.0, "multiplier": 18.46, "payout": 411, "blessing": "neutral", "text": "SubBake is a desktop app that embeds subtitles into video files. Drop in a video and a subtitle file, and it muxes the subtitle in as a proper track — colors, timing, and all — without re-encoding anything. There is also a live web demo if you would rather try it in a browser. What it does: It reads SMI, SRT, ASS, SSA, VTT and SUP subtitles and writes MKV, MP4 or WebM. SMI fansubs keep their per-speaker colors, because they get converted to ASS instead of being flattened into SRT. The GUI takes drag and drop or a plain click, auto-matches videos to same-named subtitle files, and shows live per-file progress straight from FFmpeg’s output. FFmpeg comes bundled, so the whole thing is one executable with nothing to install, and the UI speaks English and Korean without a restart. The web demo runs the exact same pipeline on my home server. Upload both files, watch the bar, download the result. Everything you upload is deleted automatically after an hour. The hardest part was invisible. One subtitle cue kept showing a hollow box between two lines, and every character in those lines came back clean. The culprit turned out to be a blank line in the source file, which my converter faithfully translated into an empty subtitle line that the player rendered as a box. The fix was collapsing consecutive newlines into one. Sometimes the bug is a blank line. To test it: grab the release, drop a video and its subtitle onto the window, and hit Start SubBake. Or open reimunyancat.com/subbake and do the same thing with zero install.", "repo": "https://github.com/reimunyancat/SubBake", "demo": "https://reimunyancat.com/subbake/"}]...
|
[{"post_id": 52292, "ts": "202 [{"post_id": 52292, "ts": "2026-08-22T12:29:12Z", "hours": 8.9519, "text": "Devlog #6 Last time ended with the review finally seeing subtitles — burn mode drew them into the pixels, and the preview proved the output wasn’t empty. The review came back with a new problem, and this one was in the desktop app. The reviewer dragged a video in, then dragged its subtitle in a moment later, and nothing happened. No pair, no row, no error. Just a log line nobody reads. “I dropped the video, then the subtitle. Nothing happened.” The flow made sense to me. Any sane user would load the video and subtitles together. The app matched files by stem and folder, so the names matched — but the pair never appeared. I reproduced it immediately: drop the .mkv, 0 pairs. Drop the .srt, 0 pairs. Drop them together, 1 pair. The order wasn’t the problem — the batch was. It was by design. That was the problem. The drop handler split the incoming paths into videos and subtitles and matched them within that single batch : Both file types had to arrive in the same drop or the matcher had nothing to join. It wasn’t a bug — it worked exactly as written. My own testing had always dropped both files at once, so I never saw it. The code was correct and exactly wrong. To make it worse, that same logic was copy-pasted in four places: the drop handler, the file dialog, the drop-area click, and the folder scan. Four copies, one flaw. Deferred matching The fix was to stop matching batches and start matching state. Files now accumulate into pending queues, and every drop re-runs the matcher against everything pending. Drop the video, drop the subtitle five minutes later — the second drop finds the first and pairs them. All four entry points now route through one _ingest() method, so the deferred-matching rule can’t drift between copies again. Then I almost made it worse My first pass at leftovers had a shortcut: sort the unmatched files by name and zip them into pairs. Five videos and two subtitles? Two pairs, formed by name order, not by any actual correspondence. The names could be completely unrelated — the wrong subtitle would get muxed in silently. That’s the exact failure class I was trying to kill. So the shortcut got a guard: auto-pairing only happens when exactly one video and one subtitle are left unmatched, and everything else stays in the pending queue where the user can see it. While I was in there: dropping the same file twice no longer stacks duplicates in the queue, and the waiting notice now shows whenever anything is still pending — not just when a drop matched nothing. The log panel expands on its own so the “waiting for a matching subtitle” state is visible instead of hidden. TMI It was quite a struggle at first; I hadn’t properly watched the review video, so while testing it myself, I kept wondering, “Wait, it works fine—why do people say it doesn’t?” It turned out the issue was incredibly simple. I made a few minor quality-of-life improvements, but since they were so small, I decided to skip mentioning them. I actually wanted to do more, but I’ve already spent nine hours on this, so I’m wrapping things up now."}, {"post_id": 50793, "ts": "2026-08-20T05:49:47Z", "hours": 1.9336, "text": "Devlog #5 SubBake was released, the web demo went live, and then the review came back: “can’t see no subtitles.” That’s a bug report against a shipped product — the whole point of the app is subtitles, and the review had no way to see them. I couldn’t argue with it: the output carried no visible proof. This devlog is about hunting that bug down and making sure the subtitles can never be invisible again. The fix two There was no rendering at all, nothing to prove a subtitle existed. So the fix attacked both sides. Burn mode re-encodes the video with subtitles drawn into the frames, so the text becomes part of the picture — impossible to miss. And the preview gives real playback with a VTT attached to the <video> element, so muxed output shows its subtitles too. The web API grew a mode parameter ( mux | burn ), the burn path got progress and cancel wired through the existing worker machinery, and the GUI picked up a matching checkbox. Burn mode also rejects SUP input outright — bitmap subtitles can’t be rasterized by libass, and a silent fallback would just recreate the “nothing visible” bug. The output file was empty, and nobody noticed While testing burn with a +1s offset, the job failed with a cryptic libass error: Unable to open /tmp/... . The real cause was in the remux step. The remux command — the one that shifts timestamps with itsoffset before burning — was missing -y . The output path already existed because it came from NamedTemporaryFile , and ffmpeg refuses to overwrite without -y . Worse, it exited with returncode 0 while writing nothing, so the “did it succeed?” check passed. A zero-byte file then went into libass. Two small ordering bugs The preview VTT was extracted with a hardcoded \"ffmpeg\" while the rest of the server resolves a bundled binary via find_ffmpeg() . On a machine without ffmpeg on PATH, preview breaks exactly where the reviewer looks. Switched to the shared resolver. The <track> element was appended after video.load() . The track never registered, so even correct VTT extraction showed nothing. Order matters: attach the track, set the source, then load. Proof The bug report was about visibility, so the fix had to be verified the same way. I burned two different subtitle files into the same video and compared raw RGB. Everything above the subtitle band matched; rows 174–239 differed by ~14,000 pixels — the only difference between the two outputs was the burned text. Then an offset burn: at t=0.5s the frame matched the original (subtitle hadn’t appeared yet), at t=2.5s the text was present. Korean needed one more thing in production: the server had no CJK fonts, so Korean subtitles would burn as tofu boxes. Installed noto-fonts-cjk , re-ran the Korean burn — 12,152 pixels of band difference, and the black outline count jumped from 1385 to 1581. Real glyphs, not boxes."}, {"post_id": 46613, "ts": "2026-08-13T23:46:01Z", "hours": 7.2458, "text": "Devlog #4 Last time SubBake had a face and working hands. This time it learned to speak two languages, moved into a real server, and nearly broke me on the way in. The deployment deserves its own section, because nothing about it went right the first time. One language became two Every user-facing string had been hardcoded in English while I built the thing. Now it all funnels through one translation table — t(\"btn.start\") instead of \"Start SubBake\" — with a language combo in the corner that re-renders the whole window live, no restart. The trick that makes it work: widgets register a callback on a global listener list, and flipping the language calls every one of them. One slight downside is that the font changes when using Korean, which alters the layout; however, I was already so exhausted from dealing with the language settings that I didn’t have the energy to tweak it. I might adjust it later if I have the time, but I trust it will be fine since most people will likely be viewing it in English. Click, not just drag The drop zone now opens a file picker on click, with mixed multi-select for files and folders. Qt’s native dialog refuses to do that, so the code forces the Qt built-in dialog, switches it to directory mode, and then flips every internal list view to extended selection. It feels like a hack because it is one. It works beautifully. The web demo To ensure you can easily test and enjoy the project, I have deployed it using a domain in addition to providing the build files. SubBake now lives at a public URL — a FastAPI wrapper around the same core/ modules (imported, not copied), served from my home server VM, fronted by nginx, reached through a Cloudflare tunnel. Upload a video and a subtitle, watch the progress bar, download the result. Files vanish on a timer. So, the bottom line is that while you can download the Windows and Linux-compatible executables from GitHub to run the project, you can also test it using the URL provided here (the code is identical in both cases)."}, {"post_id": 45534, "ts": "2026-08-12T02:31:32Z", "hours": 8.4511, "text": "Devlog #3 Last time SubBake could mux subtitles with colors intact, but only through python -c one-liners. This time it got a face. It also got that face redesigned, because the first one looked like it was generated by an AI. More on that later. The shell The GUI is PySide6: a drag-and-drop area, a queue table, options row, a progress bar, and a collapsible log panel. Dropping a folder scans it recursively and pairs videos with same-named subtitles. The pairing is just (parent folder, lowercase stem) as a dictionary key, which quietly handles nested folders with identical filenames. Everything is a thread problem FFmpeg muxing is blocking, and a Qt window must never block. So every job is a QRunnable on a QThreadPool capped at 4. The catch: worker threads cannot touch widgets, at all, or the app crashes. So workers never see the UI — they emit signals ( progress , file_progress , finished , log ) and the GUI thread applies them. One trap cost me a real headache: the pool auto-deletes finished runnables by default. My cancel button keeps references to running tasks so it can flag them — which becomes a dangling pointer the moment auto-delete kicks in. The fix is one line you only learn by crashing: self.setAutoDelete(False) Cancel itself is two different operations pretending to be one button. thread_pool.clear() drops queued tasks, but anything already running needs a cancel() flag that FFmpeg checks between progress updates. The progress bar’s total also has to be recalculated mid-flight, or cancelling leaves the bar lying about how much is left. The tray icon that isn’t a file I didn’t want to ship an icon asset for a tray icon nobody looks at, so the app paints one at runtime — a 32×32 QPixmap filled with one flat color. Zero files, zero resource management, and honestly nobody can tell. Where SubBake stands A real window: drag-and-drop, queue table, live per-file progress, cancel, tray notification when done Four files mux in parallel without freezing the UI, and cancelling mid-run doesn’t corrupt anything Flat neutral theme, zero emoji, no gradients Still English-only, still launched from a terminal Next up Two things remain before this is a product: a language toggle (every string already funnels through one translation table, so it’s a refactor, not a rewrite), and PyInstaller packaging so normal humans can double-click it. Then the web demo, which is a story of its own."}, {"post_id": 43308, "ts": "2026-08-08T14:36:11Z", "hours": 3.5961, "text": "Devlog #2 Last time: a parser pipeline that couldn’t bake anything. Now SubBake actually muxes subtitles into video — and I collected three of the dumbest bugs I’ve ever fought along the way. The muxer was the easy part core/muxer.py runs FFmpeg as a subprocess with -progress pipe:1 and reads out_time_us lines off stdout for live progress. Video and audio are stream-copied, so a 24-minute episode remuxes in seconds. The sharp edges were plumbing: stderr needs its own drain thread or the pipe buffer fills and FFmpeg just stops, and the container picks your subtitle codec — MKV copies the track as-is, MP4 demands mov_text , WebM demands webvtt . One ffmpeg -i later: Stream #0:2(kor): Subtitle: subrip (default) , title “Korean”. It works. SRT ate my colors Then I actually watched the result. The original fansub had per-speaker colors; my output was all white. Of course — my SMI parser stripped every HTML tag, including <font color=\"#FF80C0\"> , and SRT has no styling anyway. So the plan changed: SMI now converts to ASS. The parser keeps font tags, and a new core/ass_converter.py writes a proper ASS document. Writing the font regex by hand nearly broke me This regex took longer than the entire muxer: _FONT_COLOR_RE = re.compile( r'<font\\s+[^>]*color\\s*=\\s*[\"\\']?([^\"\\'>\\s]+)[\"\\']?[^>]*>', re.IGNORECASE, ) The job sounds trivial: find opening <font> tags, capture the color. My first draft, <font color=\"(.*?)\"> , fell apart immediately — real fansub files write color=\"Red\" (a name, not hex), color=#FF80C0 (no quotes), and <font face=\"Arial\" color=\"...\"> (color isn’t the first attribute). The class [^\"\\'>\\s]+ exists because the value must stop at a quote, a space, or the tag end — and nesting quote escapes inside a Python raw string is its own hell. I built it the way everyone builds regexes: one character class at a time in a tester, pasting real SMI lines until nothing exploded. Nobody writes this in one shot; anyone who claims otherwise is lying. Then the colors came out wrong — red and blue swapped. ASS stores colors as &HBBGGRR& , a byte order from the 80s, so every RGB value gets flipped first. That cost me a long “why is the pink line blue” stare. The giant subtitle First ASS render: billboard-sized subtitles. Fontsize 36 sounds fine until you learn what PlayResX / PlayResY do — ASS declares a design resolution and the renderer scales it to the real video. I designed for 640×360 and played at 1080p: a 3× upscale, 108-pixel letters. Now I declare PlayRes 1920×1080 and the size holds at any resolution. I verified by burning test frames, because I no longer trust my own reasoning about this format. The mystery box Last ghost: a hollow rectangle between the pink Japanese line and the Korean translation. Every codepoint in those lines was clean, and re-rendering the same structure in isolation showed nothing. The culprit was the blank line — the SMI source separates the two languages with an empty line, my converter turned it into \\N\\N , and my player draws an empty subtitle line as a hollow box. Collapsing consecutive newlines fixed it, and as a bonus the output now looks exactly like the original presentation. Sometimes the bug is a blank line. That sentence is going on my gravestone. Where SubBake stands Muxing works end to end: stream copy, live progress, clean cancel, per-container codecs SMI→ASS with per-speaker colors, verified on a real episode Sane subtitle size at any resolution; phantom box gone Still no GUI — everything runs through python -c one-liners Next up The interface: a PySide6 shell with drag-and-drop, a queue table, and worker threads — the point where this becomes an app instead of modules I poke from a terminal. Qt will be perfectly calm and reasonable. (It will not be.)"}, {"post_id": 41919, "ts": "2026-08-06T13:11:24Z", "hours": 2.9786, "text": "Devlog #1 SubBake is a desktop app I’m building that embeds subtitle files (SMI / SRT / ASS / SSA / VTT / SUP) into MKV, MP4 and WebM as real subtitle tracks. Python + PySide6, FFmpeg bundled, GPL v3. This devlog covers the first stretch: empty repo to a working conversion pipeline. What I did Repo scaffold, GPL license, and a .gitignore that keeps the 300 MB ffmpeg/ folder out of git download_ffmpeg.py — downloads a static FFmpeg build for Windows / Linux / macOS, unpacks it, deletes the leftovers core/ffmpeg_locator.py — finds that binary later (bundled, PyInstaller temp dir, or PATH) Parsers for SMI and VTT, an SRT writer, encoding detection, and a matcher that pairs videos with their subtitle files Problems The SMI parser found 12 cues in a whole episode. I’d forgotten re.DOTALL , so any dialogue with a line break killed the match early. One flag later, hundreds of cues. Opened my test subtitle in VS Code and panicked - the entire file was mojibake. Took me a minute to realize the file is CP949 and the editor was just displaying it as UTF-8. The converter had already decoded it correctly. Editor lied, pipeline didn’t. The “throw it at the converter” test Grabbed a real SMI off the internet (a K-ON episode) and ran it through. 385 cues, first one at 00:00 31,458, Korean perfectly intact. The side-by-side screenshot says it best: left is the mojibake original, right is the clean SRT that came out. That’s the encoding fallback doing its job. Where SubBake stands FFmpeg downloads and gets located on all three OSes SMI / VTT → SRT conversion verified on real data No muxer, no GUI — it still can’t bake anything Next up core/muxer.py : run FFmpeg as a subprocess, stream the progress output, handle cancel, and pick the right subtitle codec per container (mov_text / webvtt / copy). Devlog #2 should have actual player screenshots instead of terminal text."}]...
|
Title: SubBake by @reimunyancat | Stardance
Devlo Title: SubBake by @reimunyancat | Stardance
Devlogs:
Devlog #1 SubBake is a desktop app I’m building that embeds subtitle files (SMI / SRT / ASS / SSA / VTT / SUP) into MKV, MP4 and WebM as real subtitle tracks. Python + PySide6, FFmpeg bundled, GPL v3. This devlog covers the first stretch: empty repo to a working conversion pipeline. What I did Repo scaffold, GPL license, and a .gitignore that keeps the 300 MB ffmpeg/ folder out of git download_ffmpeg.py — downloads a static FFmpeg build for Windows / Linux / macOS, unpacks it, deletes the leftovers core/ffmpeg_locator.py — finds that binary later (bundled, PyInstaller temp dir, or PATH) Parsers for SMI and VTT, an SRT writer, encoding detection, and a matcher that pairs videos with their subtitle files Problems The SMI parser found 12 cues in a whole episode. I’d forgotten re.DOTALL , so any dialogue with a line break killed the match early. One flag later, hundreds of cues. Opened my test subtitle in VS Code and panicked - the entire file was mojibake. Took me a minute to realize the file is CP949 and the editor was just displaying it as UTF-8. The converter had already decoded it correctly. Editor lied, pipeline didn’t. The “throw it at the converter” test Grabbed a real SMI off the internet (a K-ON episode) and ran it through. 385 cues, first one at 00:00 31,458, Korean perfectly intact. The side-by-side screenshot says it best: left is the mojibake original, right is the clean SRT that came out. That’s the encoding fallback doing its job. Where SubBake stands FFmpeg downloads and gets located on all three OSes SMI / VTT → SRT conversion verified on real data No muxer, no GUI — it still can’t bake anything Next up core/muxer.py : run FFmpeg as a subprocess, stream the progress output, handle cancel, and pick the right subtitle codec per container (mov_text / webvtt / copy). Devlog #2 should have actual player screenshots instead of terminal text.
Devlog #2 Last time: a parser pipeline that couldn’t bake anything. Now SubBake actually muxes subtitles into video — and I collected three of the dumbest bugs I’ve ever fought along the way. The muxer was the easy part core/muxer.py runs FFmpeg as a subprocess with -progress pipe:1 and reads out_time_us lines off stdout for live progress. Video and audio are stream-copied, so a 24-minute episode remuxes in seconds. The sharp edges were plumbing: stderr needs its own drain thread or the pipe buffer fills and FFmpeg just stops, and the container picks your subtitle codec — MKV copies the track as-is, MP4 demands mov_text , WebM demands webvtt . One ffmpeg -i later: Stream #0:2(kor): Subtitle: subrip (default) , title “Korean”. It works. SRT ate my colors Then I actually watched the result. The original fansub had per-speaker colors; my output was all white. Of course — my SMI parser stripped every HTML tag, including <font color="#FF80C0"> , and SRT has no styling anyway. So the plan changed: SMI now converts to ASS. The parser keeps font tags, and a new core/ass_converter.py writes a proper ASS document. Writing the font regex by hand nearly broke me This regex took longer than the entire muxer: _FONT_COLOR_RE = re.compile( r'<font\s+[^>]*color\s*=\s*["\']?([^"\'>\s]+)["\']?[^>]*>', re.IGNORECASE, ) The job sounds trivial: find opening <font> tags, capture the color. My first draft, <font color="(.*?)"> , fell apart immediately — real fansub files write color="Red" (a name, not hex), color=#FF80C0 (no quotes), and <font face="Arial" color="..."> (color isn’t the first attribute). The class [^"\'>\s]+ exists because the value must stop at a quote, a space, or the tag end — and nesting quote escapes inside a Python raw string is its own hell. I built it the way everyone builds regexes: one character class at a time in a tester, pasting real SMI lines until nothing exploded. Nobody writes this in one shot; anyone who claims otherwise is lying. Then the colors came out wrong — red and blue swapped. ASS stores colors as &HBBGGRR& , a byte order from the 80s, so every RGB value gets flipped first. That cost me a long “why is the pink line blue” stare. The giant subtitle First ASS render: billboard-sized subtitles. Fontsize 36 sounds fine until you learn what PlayResX / PlayResY do — ASS declares a design resolution and the renderer scales it to the real video. I designed for 640×360 and played at 1080p: a 3× upscale, 108-pixel letters. Now I declare PlayRes 1920×1080 and the size holds at any resolution. I verified by burning test frames, because I no longer trust my own reasoning about this format. The mystery box Last ghost: a hollow rectangle between the pink Japanese line and the Korean translation. Every codepoint in those lines was clean, and re-rendering the same structure in isolation showed nothing. The culprit was the blank line — the SMI source separates the two languages with an empty line, my converter turned it into \N\N , and my player draws an empty subtitle line as a hollow box. Collapsing consecutive newlines fixed it, and as a bonus the output now looks exactly like the original presentation. Sometimes the bug is a blank line. That sentence is going on my gravestone. Where SubBake stands Muxing works end to end: stream copy, live progress, clean cancel, per-container codecs SMI→ASS with per-speaker colors, verified on a real episode Sane subtitle size at any resolution; phantom box gone Still no GUI — everything runs through python -c one-liners Next up The interface: a PySide6 shell with drag-and-drop, a queue table, and worker threads — the point where this becomes an app instead of modules I poke from a terminal. Qt will be perfectly calm and reasonable. (It will not be.)
Devlog #3 Last time SubBake could mux subtitles with colors intact, but only through python -c one-liners. This time it got a face. It also got that face redesigned, because the first one looked like it was generated by an AI. More on that later. The shell The GUI is PySide6: a drag-and-drop area, a queue table, options row, a progress bar, and a collapsible log panel. Dropping a folder scans it recursively and pairs videos with same-named subtitles. The pairing is just (parent folder, lowercase stem) as a dictionary key, which quietly handles nested folders with identical filenames. Everything is a thread problem FFmpeg muxing is blocking, and a Qt window must never block. So every job is a QRunnable on a QThreadPool capped at 4. The catch: worker threads cannot touch widgets, at all, or the app crashes. So workers never see the UI — they emit signals ( progress , file_progress , finished , log ) and the GUI thread applies them. One trap cost me a real headache: the pool auto-deletes finished runnables by default. My cancel button keeps references to running tasks so it can flag them — which becomes a dangling pointer the moment auto-delete kicks in. The fix is one line you only learn by crashing: self.setAutoDelete(False) Cancel itself is two different operations pretending to be one button. thread_pool.clear() drops queued tasks, but anything already running needs a cancel() flag that FFmpeg checks between progress updates. The progress bar’s total also has to be recalculated mid-flight, or cancelling leaves the bar lying about how much is left. The tray icon that isn’t a file I didn’t want to ship an icon asset for a tray icon nobody looks at, so the app paints one at runtime — a 32×32 QPixmap filled with one flat color. Zero files, zero resource management, and honestly nobody can tell. Where SubBake stands A real window: drag-and-drop, queue table, live per-file progress, cancel, tray notification when done Four files mux in parallel without freezing the UI, and cancelling mid-run doesn’t corrupt anything Flat neutral theme, zero emoji, no gradients Still English-only, still launched from a terminal Next up Two things remain before this is a product: a language toggle (every string already funnels through one translation table, so it’s a refactor, not a rewrite), and PyInstaller packaging so normal humans can double-click it. Then the web demo, which is a story of its own.
Devlog #4 Last time SubBake had a face and working hands. This time it learned to speak two languages, moved into a real server, and nearly broke me on the way in. The deployment deserves its own section, because nothing about it went right the first time. One language became two Every user-facing string had been hardcoded in English while I built the thing. Now it all funnels through one translation table — t("btn.start") instead of "Start SubBake" — with a language combo in the corner that re-renders the whole window live, no restart. The trick that makes it work: widgets register a callback on a global listener list, and flipping the language calls every one of them. One slight downside is that the font changes when using Korean, which alters the layout; however, I was already so exhausted from dealing with the language settings that I didn’t have the energy to tweak it. I might adjust it later if I have the time, but I trust it will be fine since most people will likely be viewing it in English. Click, not just drag The drop zone now opens a file picker on click, with mixed multi-select for files and folders. Qt’s native dialog refuses to do that, so the code forces the Qt built-in dialog, switches it to directory mode, and then flips every internal list view to extended selection. It feels like a hack because it is one. It works beautifully. The web demo To ensure you can easily test and enjoy the project, I have deployed it using a domain in addition to providing the build files. SubBake now lives at a public URL — a FastAPI wrapper around the same core/ modules (imported, not copied), served from my home server VM, fronted by nginx, reached through a Cloudflare tunnel. Upload a video and a subtitle, watch the progress bar, download the result. Files vanish on a timer. So, the bottom line is that while you can download the Windows and Linux-compatible executables from GitHub to run the project, you can also test it using the URL provided here (the code is identical in both cases).
Devlog #5 SubBake was released, the web demo went live, and then the review came back: “can’t see no subtitles.” That’s a bug report against a shipped product — the whole point of the app is subtitles, and the review had no way to see them. I couldn’t argue with it: the output carried no visible proof. This devlog is about hunting that bug down and making sure the subtitles can never be invisible again. The fix two There was no rendering at all, nothing to prove a subtitle existed. So the fix attacked both sides. Burn mode re-encodes the video with subtitles drawn into the frames, so the text becomes part of the picture — impossible to miss. And the preview gives real playback with a VTT attached to the <video> element, so muxed output shows its subtitles too. The web API grew a mode parameter ( mux | burn ), the burn path got progress and cancel wired through the existing worker machinery, and the GUI picked up a matching checkbox. Burn mode also rejects SUP input outright — bitmap subtitles can’t be rasterized by libass, and a silent fallback would just recreate the “nothing visible” bug. The output file was empty, and nobody noticed While testing burn with a +1s offset, the job failed with a cryptic libass error: Unable to open /tmp/... . The real cause was in the remux step. The remux command — the one that shifts timestamps with itsoffset before burning — was missing -y . The output path already existed because it came from NamedTemporaryFile , and ffmpeg refuses to overwrite without -y . Worse, it exited with returncode 0 while writing nothing, so the “did it succeed?” check passed. A zero-byte file then went into libass. Two small ordering bugs The preview VTT was extracted with a hardcoded "ffmpeg" while the rest of the server resolves a bundled binary via find_ffmpeg() . On a machine without ffmpeg on PATH, preview breaks exactly where the reviewer looks. Switched to the shared resolver. The <track> element was appended after video.load() . The track never registered, so even correct VTT extraction showed nothing. Order matters: attach the track, set the source, then load. Proof The bug report was about visibility, so the fix had to be verified the same way. I burned two different subtitle files into the same video and compared raw RGB. Everything above the subtitle band matched; rows 174–239 differed by ~14,000 pixels — the only difference between the two outputs was the burned text. Then an offset burn: at t=0.5s the frame matched the original (subtitle hadn’t appeared yet), at t=2.5s the text was present. Korean needed one more thing in production: the server had no CJK fonts, so Korean subtitles would burn as tofu boxes. Installed noto-fonts-cjk , re-ran the Korean burn — 12,152 pixels of band difference, and the black outline count jumped from 1385 to 1581. Real glyphs, not boxes.
Devlog #6 Last time ended with the review finally seeing subtitles — burn mode drew them into the pixels, and the preview proved the output wasn’t empty. The review came back with a new problem, and this one was in the desktop app. The reviewer dragged a video in, then dragged its subtitle in a moment later, and nothing happened. No pair, no row, no error. Just a log line nobody reads. “I dropped the video, then the subtitle. Nothing happened.” The flow made sense to me. Any sane user would load the video and subtitles together. The app matched files by stem and folder, so the names matched — but the pair never appeared. I reproduced it immediately: drop the .mkv, 0 pairs. Drop the .srt, 0 pairs. Drop them together, 1 pair. The order wasn’t the problem — the batch was. It was by design. That was the problem. The drop handler split the incoming paths into videos and subtitles and matched them within that single batch : Both file types had to arrive in the same drop or the matcher had nothing to join. It wasn’t a bug — it worked exactly as written. My own testing had always dropped both files at once, so I never saw it. The code was correct and exactly wrong. To make it worse, that same logic was copy-pasted in four places: the drop handler, the file dialog, the drop-area click, and the folder scan. Four copies, one flaw. Deferred matching The fix was to stop matching batches and start matching state. Files now accumulate into pending queues, and every drop re-runs the matcher against everything pending. Drop the video, drop the subtitle five minutes later — the second drop finds the first and pairs them. All four entry points now route through one _ingest() method, so the deferred-matching rule can’t drift between copies again. Then I almost made it worse My first pass at leftovers had a shortcut: sort the unmatched files by name and zip them into pairs. Five videos and two subtitles? Two pairs, formed by name order, not by any actual correspondence. The names could be completely unrelated — the wrong subtitle would get muxed in silently. That’s the exact failure class I was trying to kill. So the shortcut got a guard: auto-pairing only happens when exactly one video and one subtitle are left unmatched, and everything else stays in the pending queue where the user can see it. While I was in there: dropping the same file twice no longer stacks duplicates in the queue, and the waiting notice now shows whenever anything is still pending — not just when a drop matched nothing. The log panel expands on its own so the “waiting for a matching subtitle” state is visible instead of hidden. TMI It was quite a struggle at first; I hadn’t properly watched the review video, so while testing it myself, I kept wondering, “Wait, it works fine—why do people say it doesn’t?” It turned out the issue was incredibly simple. I made a few minor quality-of-life improvements, but since they were so small, I decided to skip mentioning them. I actually wanted to do more, but I’ve already spent nine hours on this, so I’m wrapping things up now.
Ships:
SubBake is a desktop app that embeds subtitles into video files. Drop in a video and a subtitle file, and it muxes the subtitle in as a proper track — colors, timing, and all — without re-encoding anything. There is also a live web demo if you would rather try it in a browser. What it does: It reads SMI, SRT, ASS, SSA, VTT and SUP subtitles and writes MKV, MP4 or WebM. SMI fansubs keep their per-speaker colors, because they get converted to ASS instead of being flattened into SRT. The GUI takes drag and drop or a plain click, auto-matches videos to same-named subtitle files, and shows live per-file progress straight from FFmpeg’s output. FFmpeg comes bundled, so the whole thing is one executable with nothing to install, and the UI speaks English and Korean without a restart. The web demo runs the exact same pipeline on my home server. Upload both files, watch the bar, download the result. Everything you upload is deleted automatically after an hour. The hardest part was invisible. One subtitle cue kept showing a hollow box between two lines, and every character in those lines came back clean. The culprit turned out to be a blank line in the source file, which my converter faithfully translated into an empty subtitle line that the player rendered as a box. The fix was collapsing consecutive newlines into one. Sometimes the bug is a blank line. To test it: grab the release, drop a video and its subtitle onto the window, and hit Start SubBake. Or open reimunyancat.com/subbake and do the same thing with zero install....
|
1793771626.7908494
|
1794635626.7908494
|
|
19135
|
My first slack bot! by @Something231 | Stardance
|
Something231
|
1
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T14:48:05Z", "hours": 1.0, "multiplier": 1.06, "payout": 1, "blessing": "neutral", "text": "Made a simple first slack bot, its my first time using javascript so i just gave it an api command to read 8 ball fortunes, and a command to fetch stoic quotes, as well as a command to ‘uwuify’ any text given.", "repo": "https://github.com/Something231/Slack-Bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 9224, "ts": "2026 [{"post_id": 9224, "ts": "2026-06-15T14:32:24Z", "hours": 0.7667, "text": "Created my first slack bot, added a stoic quote generator, eight ball reading generator and an ‘uwuify’ command. I’m quite happy with it given that I’ve never used js before."}]...
|
Title: My first slack bot! by @Something231 | Star Title: My first slack bot! by @Something231 | Stardance
Devlogs:
Created my first slack bot, added a stoic quote generator, eight ball reading generator and an ‘uwuify’ command. I’m quite happy with it given that I’ve never used js before.
Ships:
Made a simple first slack bot, its my first time using javascript so i just gave it an api command to read 8 ball fortunes, and a command to fetch stoic quotes, as well as a command to ‘uwuify’ any text given....
|
1793771625.635642
|
1793858025.635642
|
|
4850
|
My Website by @ray120424 | Stardance
|
ray120424
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My Website by @ray120424 | Stardance
|
1793771624.7634335
|
1794376424.7634335
|
|
40213
|
Heaven Roaster by @Sunisha_ | Stardance
|
Sunisha_
|
1
|
15.0
|
61
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-09T11:35:42Z", "hours": 15.0, "multiplier": 4.0, "payout": 61, "blessing": "neutral", "text": "I made a website for an authentic coffee shop where I tried to create my own UI design and different ideas for different sections of the website. The menu carousel was the hardest part of the project and took most of the time. With different ideas and tutorials I completed the carousel after hours of work and am the proudest of it for working so smoothly. The other hard part was trying to give functionality to the website with JS because I was quiet new to it and had to look for a lot of tutorials and interrogate AI and other sources for help which took a LOT of time and I mean a LOT. Furthermore, this website was quite a challenge for me as it was pushing all my buttons and making me go crazy. Jokes apart the website was a fun experience as I learned different tricks and ideas innovating my old ideas as I went on. The website is made to be as user-friendly and aesthetic as possible.", "repo": "https://github.com/Suni-sha/Heaven-Roaster", "demo": "https://heaven-roaster-ashen.vercel.app/"}]...
|
[{"post_id": 43868, "ts": "202 [{"post_id": 43868, "ts": "2026-08-09T09:57:02Z", "hours": 5.2869, "text": "After series of mistakes and errors I can finally conclude that I am done with the project …..The carousel is working fine and the menu section is done. All the other essential parts are added and the website is good to go now. You can go and venture around yourself and see some of the effects and functions. 😉 That’s all for the devlog , you can check it out on my github and everything will be linked ."}, {"post_id": 40220, "ts": "2026-08-03T16:59:53Z", "hours": 2.8425, "text": "The review section is done and the contact section just needs a little aligning. I’m trying to make the review section a little functional and then comes the footer. After that I’m going to complete the menu and go ahead with any additional ideas. That’s all. See yaaaaa :3"}, {"post_id": 38385, "ts": "2026-07-31T18:48:06Z", "hours": 3.4811, "text": "After a few hours of work I’m done with the carousel-menu on the home page and the firstpage is doneeeeeee …..further menu still needs to be managed and there are a lot of interesting things that I’m already excited to show you after it’s totally done(and somehow it works T^T). The menu in the homepage just shows some special drinks that Heaven Roaster has to offer and the rest of the menu items are in a separate page . That’s all the work for today . See ya in the next devlog ….I’ll try to update it to ya’ll as soon as possible . :3"}, {"post_id": 37117, "ts": "2026-07-29T16:31:42Z", "hours": 2.3739, "text": "The first page is coming together slowly but surely…. I’ve got the basic structure down for the about section, it needs a lil more touch-up and it’ll be good to go. The navbar isn’t fully functional yet and the alignments are a lil off too but it’ll be better till the next devlog. (The lady in the picture is our ceo .😉) The rest is self explanatory as you may see here ….this took about 2 hrs. Do read the about section for more info about the website. See ya next time………:3"}, {"post_id": 36494, "ts": "2026-07-28T17:12:18Z", "hours": 1.2853, "text": "So, I am creating a website for an authentic coffee shop (imaginary ofc) that is going to display the small and detailed bits of the actual shop. With a little concept in my mind I will be trying my best on this website …to give it a life and a purpose. The main function of the website is going to be the showcase of the shop, online platform to order coffee or drinks as well as a little surprise that I’ll tell you about in further devlogs. :3 Further more about the website for now is that I created a simple navbar and added a picture which was found in some other website but was altered using gemini. Anything and everything else will we talked about in another devlog so stay connected. That’s all byeeeeeeeeeeeeee."}]...
|
Title: Heaven Roaster by @Sunisha_ | Stardance
De Title: Heaven Roaster by @Sunisha_ | Stardance
Devlogs:
So, I am creating a website for an authentic coffee shop (imaginary ofc) that is going to display the small and detailed bits of the actual shop. With a little concept in my mind I will be trying my best on this website …to give it a life and a purpose. The main function of the website is going to be the showcase of the shop, online platform to order coffee or drinks as well as a little surprise that I’ll tell you about in further devlogs. :3 Further more about the website for now is that I created a simple navbar and added a picture which was found in some other website but was altered using gemini. Anything and everything else will we talked about in another devlog so stay connected. That’s all byeeeeeeeeeeeeee.
The first page is coming together slowly but surely…. I’ve got the basic structure down for the about section, it needs a lil more touch-up and it’ll be good to go. The navbar isn’t fully functional yet and the alignments are a lil off too but it’ll be better till the next devlog. (The lady in the picture is our ceo .😉) The rest is self explanatory as you may see here ….this took about 2 hrs. Do read the about section for more info about the website. See ya next time………:3
After a few hours of work I’m done with the carousel-menu on the home page and the firstpage is doneeeeeee …..further menu still needs to be managed and there are a lot of interesting things that I’m already excited to show you after it’s totally done(and somehow it works T^T). The menu in the homepage just shows some special drinks that Heaven Roaster has to offer and the rest of the menu items are in a separate page . That’s all the work for today . See ya in the next devlog ….I’ll try to update it to ya’ll as soon as possible . :3
The review section is done and the contact section just needs a little aligning. I’m trying to make the review section a little functional and then comes the footer. After that I’m going to complete the menu and go ahead with any additional ideas. That’s all. See yaaaaa :3
After series of mistakes and errors I can finally conclude that I am done with the project …..The carousel is working fine and the menu section is done. All the other essential parts are added and the website is good to go now. You can go and venture around yourself and see some of the effects and functions. 😉 That’s all for the devlog , you can check it out on my github and everything will be linked .
Ships:
I made a website for an authentic coffee shop where I tried to create my own UI design and different ideas for different sections of the website. The menu carousel was the hardest part of the project and took most of the time. With different ideas and tutorials I completed the carousel after hours of work and am the proudest of it for working so smoothly. The other hard part was trying to give functionality to the website with JS because I was quiet new to it and had to look for a lot of tutorials and interrogate AI and other sources for help which took a LOT of time and I mean a LOT. Furthermore, this website was quite a challenge for me as it was pushing all my buttons and making me go crazy. Jokes apart the website was a fun experience as I learned different tricks and ideas innovating my old ideas as I went on. The website is made to be as user-friendly and aesthetic as possible....
|
1793771623.9155486
|
1794635623.9155486
|
|
41038
|
My own site! by @unknown_lizzard | Stardance
|
unknown_lizzard
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-28T14:03:05Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made my own personal site, i’m very proud of the css(w3scool) helped me alot, the site is live!", "repo": "https://github.com/Mateooo93/my-website", "demo": "https://mateooo93.github.io/my-website/"}]...
|
[{"post_id": 36395, "ts": "202 [{"post_id": 36395, "ts": "2026-07-28T14:01:07Z", "hours": 0.4103, "text": "my personal site! this is my own personal site, its very simple and uses high quality css elements!, it includes an about me, and some links to my other github projects."}]...
|
Title: My own site! by @unknown_lizzard | Stardanc Title: My own site! by @unknown_lizzard | Stardance
Devlogs:
my personal site! this is my own personal site, its very simple and uses high quality css elements!, it includes an about me, and some links to my other github projects.
Ships:
i made my own personal site, i’m very proud of the css(w3scool) helped me alot, the site is live!...
|
1793771623.0273635
|
1794635623.0273635
|
|
22269
|
Untitled by @andrea_dezzo08 | Stardance
|
andrea_dezzo08
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @andrea_dezzo08 | Stardance
|
1793771622.1367457
|
1794376422.1367457
|
|
41014
|
TabTiler by @wiiuavi | Stardance
|
wiiuavi
|
1
|
7.0
|
76
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-02T12:53:26Z", "hours": 7.0, "multiplier": 8.56, "payout": 76, "blessing": "neutral", "text": "I made a chrome extension, inspired by minecraft’s splitscreen, to utilise your chrome window to it’s fullest! no more juggling multiple monitors/windows, Its easy to control everything from just 1 tab! (or if u wanna make it easy to binge subway surfers while watching cake cutting vids and working!)", "repo": "https://github.com/wiiuavi/TabTiler", "demo": "https://github.com/wiiuavi/TabTiler/releases/tag/v2"}]...
|
[{"post_id": 37869, "ts": "202 [{"post_id": 37869, "ts": "2026-07-30T20:53:53Z", "hours": 0.4097, "text": "made readme, the releases, attempted to fix close og tabs setting bug, it stopped working, wasnt able to fix other than tht im ready to ship, WWW"}, {"post_id": 37312, "ts": "2026-07-29T22:32:32Z", "hours": 0.6575, "text": "so i did waht i said id do in previous devlog, ia slo didn’t realise that scrolling fully didnt work (fixed that) fixed quite a few bugs, gave it an icon/logo made a lot more bugs, the icons were not alligned due to diff size names, the names showed up as URLs, fixed most of them! i like how this turned out, ik ill use it a lot and hope other do too! readme tmrw and that should be it!"}, {"post_id": 37273, "ts": "2026-07-29T21:06:48Z", "hours": 4.2853, "text": "i was going to make another devlog before this but it was late and i forgot I added a dashboard, you can reopen previous layouts (e.g. a “review” layout which may have ur teams outlook and compay dashboard or something), or del them I added 2 toggles to the dashboard, incl hiding scrollbars, (cus i found it kinda annoying and not maximising screenspace) and if u wanna keep the tabs u tile open (as they have to reload when you tile them, and maybe you were uploading files or something idk) and added warnings for these things too added all the fixes in the previous devlog aside from newtab, it refuses to show. also did the zoom thing Things i want to improve: a: writing this, its messy, b: the dashboard button doesnt work when on a quad/duo til, will fix c: the whole home button to open a newtab is clutter. ill likely change the home icon to a search one and u can choose to google search whatever is in the box rather than url also may make “slot 1 2 ect” show the tab name itself tho tbh its basically done edit: not all the screenshots are showing, which is kinda annoying"}, {"post_id": 36346, "ts": "2026-07-28T12:16:58Z", "hours": 2.0531, "text": "I made a second working copy of tabtiler! the first one, I used the screensize to split the tabs up into windows, and removed the searchbar/bookmarks dialouge. This came a lot of issues. the windows topbar dialouge was still visible, and there was a clear gap between windows that was visible. There was also no point in using the extension to arrange the windows if each tab was its own, it would be much more useful if the user did so themselves how they liked. it also covered the chrome window itself, so i cant switch to other tabs as easily! there was also the issue of being able to close each half individually, it was a mess. attached is screenshots of the vision i want. (drawn in ms paint) and what ive achieved so far. my issues incl: Scale. this should be an easy fix, but i need a way to scale the tabs individually and default them at 25% or 50% size accordingly. Empty tabs, should be able to open existing tabs or newtabs in them. Opening tabs, rn selecting tabs will cause them to reload. if i dont find a fix for this imma have to show a warning that forms may be lost! Shifting tabs, need to add a way to shift a quadtab back into a normal one, if you need more space for it. Dragging items, currently cant drag text/images to other tabs. Opening tabs in existing slots, incase you find a need for the empty space theres a lot more, but i cba to write this any more, soo yea thats tab tiler."}]...
|
Title: TabTiler by @wiiuavi | Stardance
Devlogs:
Title: TabTiler by @wiiuavi | Stardance
Devlogs:
I made a second working copy of tabtiler! the first one, I used the screensize to split the tabs up into windows, and removed the searchbar/bookmarks dialouge. This came a lot of issues. the windows topbar dialouge was still visible, and there was a clear gap between windows that was visible. There was also no point in using the extension to arrange the windows if each tab was its own, it would be much more useful if the user did so themselves how they liked. it also covered the chrome window itself, so i cant switch to other tabs as easily! there was also the issue of being able to close each half individually, it was a mess. attached is screenshots of the vision i want. (drawn in ms paint) and what ive achieved so far. my issues incl: Scale. this should be an easy fix, but i need a way to scale the tabs individually and default them at 25% or 50% size accordingly. Empty tabs, should be able to open existing tabs or newtabs in them. Opening tabs, rn selecting tabs will cause them to reload. if i dont find a fix for this imma have to show a warning that forms may be lost! Shifting tabs, need to add a way to shift a quadtab back into a normal one, if you need more space for it. Dragging items, currently cant drag text/images to other tabs. Opening tabs in existing slots, incase you find a need for the empty space theres a lot more, but i cba to write this any more, soo yea thats tab tiler.
i was going to make another devlog before this but it was late and i forgot I added a dashboard, you can reopen previous layouts (e.g. a “review” layout which may have ur teams outlook and compay dashboard or something), or del them I added 2 toggles to the dashboard, incl hiding scrollbars, (cus i found it kinda annoying and not maximising screenspace) and if u wanna keep the tabs u tile open (as they have to reload when you tile them, and maybe you were uploading files or something idk) and added warnings for these things too added all the fixes in the previous devlog aside from newtab, it refuses to show. also did the zoom thing Things i want to improve: a: writing this, its messy, b: the dashboard button doesnt work when on a quad/duo til, will fix c: the whole home button to open a newtab is clutter. ill likely change the home icon to a search one and u can choose to google search whatever is in the box rather than url also may make “slot 1 2 ect” show the tab name itself tho tbh its basically done edit: not all the screenshots are showing, which is kinda annoying
so i did waht i said id do in previous devlog, ia slo didn’t realise that scrolling fully didnt work (fixed that) fixed quite a few bugs, gave it an icon/logo made a lot more bugs, the icons were not alligned due to diff size names, the names showed up as URLs, fixed most of them! i like how this turned out, ik ill use it a lot and hope other do too! readme tmrw and that should be it!
made readme, the releases, attempted to fix close og tabs setting bug, it stopped working, wasnt able to fix other than tht im ready to ship, WWW
Ships:
I made a chrome extension, inspired by minecraft’s splitscreen, to utilise your chrome window to it’s fullest! no more juggling multiple monitors/windows, Its easy to control everything from just 1 tab! (or if u wanna make it easy to binge subway surfers while watching cake cutting vids and working!)...
|
1793771621.2879882
|
1794635621.2879882
|
|
34385
|
Funny Screen Cleaner by @issu | Stardance
|
issu
|
1
|
17.51
|
90
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T15:12:53Z", "hours": 17.0, "multiplier": 9.02, "payout": 90, "blessing": "neutral", "text": "I made a small fun web app that feels like a mini browser game. It is a foggy dirty screen where a tiny cleaner character tries to clean dust, water drops and fingerprints, and when you move your mouse you actually wipe the screen. It is built only with HTML, CSS and JavaScript, no frameworks. The hardest part was the canvas and the wipe effect. I had to figure out how to draw fog, dust and drops on the canvas and then erase them smoothly with the mouse without breaking everything. It was also challenging to move the cleaner character and switch its images for different moods (walking, cleaning, dancing, slipping, sleeping, angry, drinking coffee) while keeping the layout responsive and the themes (cozy, cyberpunk, cartoon) working. I am proud that this is my first “bigger” front‑end project that actually looks like a small game and not just a basic page. It has animations, canvas, theme switching, buttons that really do something and a funny character with small speech bubbles, all written by me as a beginner. I am also proud that I kept the code simple enough that other beginners can read it and learn about DOM, CSS gradients, canvas drawing and responsive design from a single project. What should people know to test it? Use a mouse or touch to move over the dirty screen and watch the fog, dust and drops get wiped. Click the buttons to clean, add more dirt, and change themes (cozy, cyberpunk, cartoon). Wait for or trigger random events to see the cleaner character do funny actions and show speech bubbles. Try it on both desktop and mobile to see the responsive layout.", "repo": "https://github.com/avision488/funnyscreencleaner", "demo": "https://avision488.github.io/funnyscreencleaner/"}]...
|
[{"post_id": 27786, "ts": "202 [{"post_id": 27786, "ts": "2026-07-13T17:23:25Z", "hours": 0.5072, "text": "added cozy, cyberpunk and cartoon themes. replaced the pointer with the mob. updated the overall css by chnaging the cleaning area, added borders, modified screen styles and shades. also updated the js with the character movemnet refinement, increment in delay time, move mevemnet smoothnes."}, {"post_id": 27722, "ts": "2026-07-13T15:05:14Z", "hours": 17.3697, "text": "This is a small fun web app I made using only HTML, CSS and JavaScript. In this app there is a tiny cleaner character who tries to clean a dirty foggy screen with dust, drops and fingerprints, and when the user moves the mouse the screen gets wiped. What is inside the app foggy screen effect with gradients, blur and low‑contrast colours dust and dirt spots sitting on top of the fog water drops and fingerprints drawn on the canva swipe effect with mouse so the dirty layer gets erased as you move funny cleaner character who walks, cleans, dances, slips, sleeps and gets angryrandom funny events with small speech bubbles and jokes3 themes: cozy, cyberpunk and cartoon, changed by CSS variables and JS buttons to clean, add dirt, change theme and trigger events responsive layout that works on desktop and mobile screens. What I learned from this project From this project I learned how to connect HTML, CSS and JavaScript together for one web app, instead of writing them separately. I learned how to use more advanced gradients, shadows and colours in CSS to create a foggy dirty screen feeling. I also learned how to add images with the img tag in HTML and then reuse those same image files in JavaScript for animations. I practiced changing the background and theme using CSS variables and JS, so I can switch between cozy, cyberpunk and cartoon styles with simple code. Another big thing I learned was how to use the canvas: drawing fog, dust and water drops there and then erasing them with the mouse to make a wipe effect. I moved the cleaner character on the screen and changed its images for different moods like walking, cleaning, dancing, slipping, sleeping, drinking coffee and being angry. I also showed small speech bubbles with funny text using JS and made the layout responsive so it works on both desktop and mobile. For me this project feels like a cute mini browser game, not just a normal website. It is simple to understand and fun to play, but inside it uses animation, canvas, DOM, buttons and theme changing, so beginners can study it and learn many front‑end ideas. This is the first time in my life I tried to make such a big project in a more polished and structured way. I know it is not perfect, but I learned a lot and I tried my best to make it clean, fun and educational. I hope reviewers will enjoy playing with the foggy screen and watching the little cleaner work hard. Thank you for reading."}]...
|
Title: Funny Screen Cleaner by @issu | Stardance
Title: Funny Screen Cleaner by @issu | Stardance
Devlogs:
This is a small fun web app I made using only HTML, CSS and JavaScript. In this app there is a tiny cleaner character who tries to clean a dirty foggy screen with dust, drops and fingerprints, and when the user moves the mouse the screen gets wiped. What is inside the app foggy screen effect with gradients, blur and low‑contrast colours dust and dirt spots sitting on top of the fog water drops and fingerprints drawn on the canva swipe effect with mouse so the dirty layer gets erased as you move funny cleaner character who walks, cleans, dances, slips, sleeps and gets angryrandom funny events with small speech bubbles and jokes3 themes: cozy, cyberpunk and cartoon, changed by CSS variables and JS buttons to clean, add dirt, change theme and trigger events responsive layout that works on desktop and mobile screens. What I learned from this project From this project I learned how to connect HTML, CSS and JavaScript together for one web app, instead of writing them separately. I learned how to use more advanced gradients, shadows and colours in CSS to create a foggy dirty screen feeling. I also learned how to add images with the img tag in HTML and then reuse those same image files in JavaScript for animations. I practiced changing the background and theme using CSS variables and JS, so I can switch between cozy, cyberpunk and cartoon styles with simple code. Another big thing I learned was how to use the canvas: drawing fog, dust and water drops there and then erasing them with the mouse to make a wipe effect. I moved the cleaner character on the screen and changed its images for different moods like walking, cleaning, dancing, slipping, sleeping, drinking coffee and being angry. I also showed small speech bubbles with funny text using JS and made the layout responsive so it works on both desktop and mobile. For me this project feels like a cute mini browser game, not just a normal website. It is simple to understand and fun to play, but inside it uses animation, canvas, DOM, buttons and theme changing, so beginners can study it and learn many front‑end ideas. This is the first time in my life I tried to make such a big project in a more polished and structured way. I know it is not perfect, but I learned a lot and I tried my best to make it clean, fun and educational. I hope reviewers will enjoy playing with the foggy screen and watching the little cleaner work hard. Thank you for reading.
added cozy, cyberpunk and cartoon themes. replaced the pointer with the mob. updated the overall css by chnaging the cleaning area, added borders, modified screen styles and shades. also updated the js with the character movemnet refinement, increment in delay time, move mevemnet smoothnes.
Ships:
I made a small fun web app that feels like a mini browser game. It is a foggy dirty screen where a tiny cleaner character tries to clean dust, water drops and fingerprints, and when you move your mouse you actually wipe the screen. It is built only with HTML, CSS and JavaScript, no frameworks. The hardest part was the canvas and the wipe effect. I had to figure out how to draw fog, dust and drops on the canvas and then erase them smoothly with the mouse without breaking everything. It was also challenging to move the cleaner character and switch its images for different moods (walking, cleaning, dancing, slipping, sleeping, angry, drinking coffee) while keeping the layout responsive and the themes (cozy, cyberpunk, cartoon) working. I am proud that this is my first “bigger” front‑end project that actually looks like a small game and not just a basic page. It has animations, canvas, theme switching, buttons that really do something and a funny character with small speech bubbles, all written by me as a beginner. I am also proud that I kept the code simple enough that other beginners can read it and learn about DOM, CSS gradients, canvas drawing and responsive design from a single project. What should people know to test it? Use a mouse or touch to move over the dirty screen and watch the fog, dust and drops get wiped. Click the buttons to clean, add more dirt, and change themes (cozy, cyberpunk, cartoon). Wait for or trigger random events to see the cleaner character do funny actions and show speech bubbles. Try it on both desktop and mobile to see the responsive layout....
|
1793771620.4093215
|
1794635620.4093215
|
|
31015
|
BKpad by @Nanobi | Stardance
|
Nanobi
|
1
|
23.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-27T10:17:14Z", "hours": 23.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The BKpad The BKpad is a macropad designed for you to write emojis like UwU, OwO, Hmmm or Oh . You can also change your sound level, and because the BKpad is illuminated, you can change its brightness! The first shipment I did was when I finished the design but nothing was real, just in my computer :o As I see, it was not a real ship but just to verify what I did At this moment, there were several key points, all done without AI: I started by designing the idea in gimp As said in the guide, I learned and used KiCad to design my custom-shaped PCB, prayed the Blahaj everything would work and now I can say that the pcb works perfectly With the PCB, I then designed in fusion360 (I never tested CAD solutions like this but it was fun) the case, shaped like a cat head :3 Then, the hardest part for me: THE FIRMWARE. I blindly started with KMK, a circuitpython library. I did my best, it was hard, but with the documentation and some search, I got a result: a file that I thought would work! Now, for the second part… I received all the parts, paid €15 of taxes for a $14 package, received the pcb, fully paid with the grant, and a case I tested with my potentiometer the pcb connections: It was working I soldered all the components ( just not the switches, not before clipping the upper case part into them) I flashed my code, and not a single thing was working! Go see on my devlog of the S2, but generally the KMK documentation was wrong about some things, and the others were just not working. I had to take a decision: Go QMK and code in C (In my life, it was just Python so it was a little hard I took my KMK code, I took Mediapad’s QMK one, and asked AI to translate my KMK code to QMK using the same base as the mediapad’s one. the AI just translated, but did not create anything new ( I really don’t want to use this but I was not capable of this ) I then experimented on this, asked an AI to explain me the first error reports that I had and then I created myself every functionalities emojis, reactions when clicking, led animations, combo that opens my game, a controller mode made for my game, BKball , and everything I could do (it was enjoyable) Then I did a shooting photo in my garden (I hope it to be fancy) I made everything I planned to do, the github is full of information, the code is documented, the game I made with the keyboard is finished too. I am really happy and will come back next year for stardance. Maybe a BKclock? Now I just want to get the blahaj if I have enough stardust :) Thanks for reading this very long message! Goodbye!", "repo": "https://github.com/Nan0b1/BKpad", "demo": ""}]...
|
[{"post_id": 83196, "ts": "202 [{"post_id": 83196, "ts": "2026-10-27T09:13:00Z", "hours": 1.2183, "text": "Devlog 3 s2 Three devlogs are not a lot considering this one is a small one but the 2 earlier is a big recap of what happened. I wasn’t sure about what I was doing so I waited until it worked to present it (this was an error excuse me ) What is my project? The BKpad is a macroboard made for you to type emojis, change your volume, and play BKball , by turning the rotary encoders. These two projects are what I did all my free time during month, and I’m proud of them What interesting? I added demonstration videos in the readme The website and github haves pictures of it working If you want to dig into the code, it’s more easy now: I normalized the documentation when you type his eyes combo, it opens the new BKball’s website hosted on github pages I cleaned the repo. There are only 4 files in production. 2 to print, one for JLCPCB and one to drag and drop into the microcontroller for it to work. I finished the “product” so this adventure finishes there… What’s next? I’ll ship everything, get feedback, maybe have the Blahaj in the shop and save everything I posted there! I hope I can do the stardance program next year Thanks for reading"}, {"post_id": 81969, "ts": "2026-10-23T07:39:28Z", "hours": 8.4719, "text": "Devlog 2 s2 !!! (18 hours of work sorryyy) This devlog is a software one :3 The story… KMK I first flashed Circuit python, downloaded my project (which was done on KMK ) onto the controller, and started the macropad. Nothing worked (But really nothing, like I was the CEO of Nothing lol) I then tested one other project’s KMK code, and the OLED worked (It was the only thing working) I had to fall to lose it all, but in the end, it doesn’t even matter . (The framework’s functionalities weren’t working ) KMK was trying to cycle in None , and all the magical stuff they did was not working even though I did the things needed that the documentation wasn’t talking about. QMK I tried so hard and got so far, but in the end, it doesn’t even matter (The library was deprecacted and dead ) I had to switch to QMK and it’s in C (Never wrote in C), leaving many hours of python work beside me TwT To start, I needed a working basis to experiment on and implement my functionalities. Thanks to Mediapad’s QMK source code and my python KMK file, I asked AI to merge them. I globally translated my python file to C, so the AI did not add any new functionalities :o ! With the basis I had, I first needed to flash my code QMK compilation tool is too mysterious for me so I asked a last time VScode’s ai to make me a CMD script that compiles automatically. (I tried by hand before btw, with no success) Then I stopped using of VScode’s AI. I added many functionalities, and my Lumo AI was used only for the first debugs I had to do + one function but then only Brave search AI overview was used. Here are all the functionalities I added: OwO UwU Oh Hm prints on your computer independently that if you are on QWERTY or AZERTY (you can toggle the parameter with a combo). Else, it would have just written UzU or OzO a combo that opens you BKball’s website (by typing win+R then the link then enter, it is very safe :3) And put the keypad into controller mode , made specifically for this precise game, while setting the pad’s color theme to automn a combo to enter bootloader mode (especially useful for me instead of opening the case to click a button of the controller whenever I change the code!) each LED have its own color, and a smooth hand made non periodical animation make the pad more living You can control the luminosity of the pad by turning the right potentiometer and your system volume using the left one (it even changes the OLED’s brighness even if it’s not very noticable) when you click or turn a button, its red cheeks becomes brighter and his mouth expression changes ( 5 different images for the mouth, 2 for the AZERTY/QWERTY indicator and one for the Game Mode, all made in GIMP) it stores the luminosity and pc layout between uses so you don’t get blind each time you boot it ip in the dark Final words I am happy with how the project has gone and how I could make it a reality :o If you wonder why I say 18 hours instead of the 9 written: I linked a 9 hour hackatime project after doing it and I hope the time didn’t vanished but I am really worried that I won’t have this time counted :( Why did I waited this much? I want to send a devlog with real new things, not just “I added a README”, I did add READMEs but it’s a normal thing to do and it wasn’t worth talking about, then I may have forgotten a bit :3 This devlog took me 4 days to write so thanks for reading!"}, {"post_id": 77313, "ts": "2026-10-06T14:55:01Z", "hours": 12.8356, "text": "Devlog 1 s2 This is my first “ after-shipment MakeLog ”, I am so happy to have my components that I actually forgot to devlog properly, so this one is for the physical build What is the BKpad? This custom shaped macropad lets you write emojis, change your system volume, and is the best controller for BKball, my game :D What did I do this time? I received all the pieces!!! I now have: the custom PCB all the pieces from the kit The case (rip the lost one) With all that, I soldered the components, I tested the connections, I cut 0.5mm on each hole of the case, the translucent material is not very precise :3 I got to make the pcb go into the case then I soldered the keys. I later had to make the inserts go in ! (don’t look to the 0.5mm not in the hole ) I had to resolder my first led and then everything was nice. It was super nice to have a “pro” soldering station (8898 JCD on aliexpress hehe). Finally, I had to find a cable which could go in my case. Xiaomi cables are too big, some other wasn’t “data” . A no name one was good, so if I upgrade the design I will have to think about make more space inside What’s next? ( I already did this but I prefer to cut the process in clear steps) I will have to test the firmware, modify it, find it is deprecated then sell my soul to the demon Goodbye :D"}, {"post_id": 53195, "ts": "2026-08-23T17:10:45Z", "hours": 7.8597, "text": "Devlog 6 What is my project? The BKpad is a small keyboard that let you emoji someone easily! You can also control your volume and luminosity by turning his ears What was already done? 7 hours of hackatime: Code : I have done research and chose KMK software, a circuit python library (this is modular!) Then I worked with Mu Editor :/, a circuit python ide (this app is designed too big) I started to do the functions, see what pins were what component It was hard, I didn’t understand the library and there was different things not well explained for my smol brain ;-; I decided to switch to VScode :D, a more convenient ide where you see a lot more of your code easily I added support for every component one by one :) The code is messy BUT I think it works 👍 Website! I need a presentation website. I think of it like a way to show to everyone and not just for the technical persons. This hardware project makes me learn a lot into technical, but it is not an HTML project so I tried something new… No-code options! (this is experimental and this is not good) In less than 2 hour I have a beautiful website traduced in french and English by myself, responsive and good for normal people to see. I used a solution named Odoo, 80% open source and free -> BKpad.odoo.com (However, this is no great to do big websites, for one page it’s good but if you want to expand i’m not convinced) GitHub! I updated the readme.md: I added new images placed in some tables I added/updated explanations, how I made it in steps, the link to the website I uploaded all the files needed and there are now in folders (it imported my gitignore Iol) -> PCB / CAD files / firmware Fun facts: My project is indexed on Google, if you search “BKpad github” it finds :) Future actions: Shipping ! I will ship my project, he is functional and can be produced, it have no problems in the PCB editor, tolerances for the box and all the files are on github! Goodbye and thanks for reading!"}, {"post_id": 37010, "ts": "2026-07-29T14:02:45Z", "hours": 4.4875, "text": "DEVLOG 5!!!! What is my project? This macro pad helps you with your social interactions by letting you control the volume or typing emojis with a single clic OwO What’s new? I designed the whole case, there is everything needed: a hole for the cable supports that the pcb don’t break while you press on it :) light diffusions hairs in 3d but easy to print holes for all the parts head elements like the noze :-) decoration inside the box!! (you can’t see it when closed BUT it is cool :3) You finished the case? Yeah totally (I hope), now I need to program my little controller :) I hope this devlog was good and not too long thanks for reading !"}, {"post_id": 34531, "ts": "2026-07-25T10:08:08Z", "hours": 5.1572, "text": "HELLOWWW - Devlog 4 What is my project? a macro board designed for social innteractions, inspired by the boykisser! What is already done? global design, choosing components PCB design (with a custom shape, not just a rectangle) Learned KiCad and Fusion360 What since the last devlog??? 6 hours of work! not wasted :) The components moved a little and I wired it, not just logically but definitively with the pencil I ajusted the shape of the whole thing (it’s optimal now!) I moved on fusion360 to make the case ! for this I did research, mental utilisation and google.com/How to copy paste fusion360 I needed to make another project with the pcb to save it and then only use it :o Last steps I did: Make the boykisser shape, then cut the pcb into it with 0.20/0.25mm more than the original shape I have now the shape !!!!! (I’m happy, took too much time and braincells) what’s next? Cutouts onto the box, and top of the box I think I always move forward, even if I don’t know what to do, there is always one thing to do!!! Thanks for reading :)"}, {"post_id": 28823, "ts": "2026-07-15T10:08:07Z", "hours": 2.0506, "text": "# Devlog 3!!! I firstly discovered the blueprint problem after one night of sleep :o In Kicad I used the native SK6812MINI-E RGB LEDs blueprint instead of the one given by the hack club (now it works!) In a second time, I ended up finishing my component choices! 2 switches 2 rotary encoders 12 leds 1 oled Then: Design time! I tried a first time to wire it all, two leds at the oposite are linked (this is not intentional) and i will be forced to use my brain to make them closer to each other :3 I swapped between designing on fusion360 and Kicad, at the right scale, to have my pcb under 100x100mm and try to see the shape I will use more precisely :) You can see down there the design! I had time to update my Github to make it more readable and more accurate to my actual design I am discovering integrated emojis while typing this :o Now I plan to wire the components, use only the time laps in browser (the app don’t sync with my browser who go to sleep, RIP my 8gig laptop who is forced to use fusion360 on windows :o) Yesterday (14 of July) was in France the national celebration. (additionally they lost against Spain but this is not my problem :)). I lost 2 hours looking at the strikers going on top of my house and the military on television in Paris UwU (didn’t recorded it as project time)."}, {"post_id": 27199, "ts": "2026-07-12T15:22:42Z", "hours": 0.4, "text": "Devlog! I discovered at the moment that the time-laps counts in the whole time :o I firstly discovered that I did not had enought pins to wire it all so i shrinked it up! I have now a new design with the right number of components! I worked on my pad: logically wired all my components followed the instruction saying “This LED must match this blueprint” (it does not match :/) Now I must find where is the problem with my LED socket then fusion360 will enter in my life a second time ! I also verified my identity with persona and I will think to update my github! I try to upgrade the beauty of my devlog I hope this is good!"}, {"post_id": 26007, "ts": "2026-07-10T15:57:37Z", "hours": 0.3086, "text": "First devlog! I firstly drown my idea on gimp, it seemed a really good idea so i started to work on it! To start my project, I firstly looked at the tutorial. KiCad was nice to use, but fusion360 was just not usable for me (I only used tinkercad before). I watched a 21 minuts french video about making a lamp in this software (it really helped me just to know the commands :o). Knowing I can use KiCad and Fusion360, I started the project, making this page, a github, a readme for it and worked on KiCad! My repo github already received an issue for a typo and then a pull request named “make the project frenchier”, which I accepted (having a french flag in my repo is nice :3). What I have now is all my components on Kicad, and I hope I can use the switches without the matrix system. I am now looking what pin can do what for the module. I like very much this “beginner” project. I see this as hard but nevermind :)"}]...
|
Title: BKpad by @Nanobi | Stardance
Devlogs:
Firs Title: BKpad by @Nanobi | Stardance
Devlogs:
First devlog! I firstly drown my idea on gimp, it seemed a really good idea so i started to work on it! To start my project, I firstly looked at the tutorial. KiCad was nice to use, but fusion360 was just not usable for me (I only used tinkercad before). I watched a 21 minuts french video about making a lamp in this software (it really helped me just to know the commands :o). Knowing I can use KiCad and Fusion360, I started the project, making this page, a github, a readme for it and worked on KiCad! My repo github already received an issue for a typo and then a pull request named “make the project frenchier”, which I accepted (having a french flag in my repo is nice :3). What I have now is all my components on Kicad, and I hope I can use the switches without the matrix system. I am now looking what pin can do what for the module. I like very much this “beginner” project. I see this as hard but nevermind :)
Devlog! I discovered at the moment that the time-laps counts in the whole time :o I firstly discovered that I did not had enought pins to wire it all so i shrinked it up! I have now a new design with the right number of components! I worked on my pad: logically wired all my components followed the instruction saying “This LED must match this blueprint” (it does not match :/) Now I must find where is the problem with my LED socket then fusion360 will enter in my life a second time ! I also verified my identity with persona and I will think to update my github! I try to upgrade the beauty of my devlog I hope this is good!
# Devlog 3!!! I firstly discovered the blueprint problem after one night of sleep :o In Kicad I used the native SK6812MINI-E RGB LEDs blueprint instead of the one given by the hack club (now it works!) In a second time, I ended up finishing my component choices! 2 switches 2 rotary encoders 12 leds 1 oled Then: Design time! I tried a first time to wire it all, two leds at the oposite are linked (this is not intentional) and i will be forced to use my brain to make them closer to each other :3 I swapped between designing on fusion360 and Kicad, at the right scale, to have my pcb under 100x100mm and try to see the shape I will use more precisely :) You can see down there the design! I had time to update my Github to make it more readable and more accurate to my actual design I am discovering integrated emojis while typing this :o Now I plan to wire the components, use only the time laps in browser (the app don’t sync with my browser who go to sleep, RIP my 8gig laptop who is forced to use fusion360 on windows :o) Yesterday (14 of July) was in France the national celebration. (additionally they lost against Spain but this is not my problem :)). I lost 2 hours looking at the strikers going on top of my house and the military on television in Paris UwU (didn’t recorded it as project time).
HELLOWWW - Devlog 4 What is my project? a macro board designed for social innteractions, inspired by the boykisser! What is already done? global design, choosing components PCB design (with a custom shape, not just a rectangle) Learned KiCad and Fusion360 What since the last devlog??? 6 hours of work! not wasted :) The components moved a little and I wired it, not just logically but definitively with the pencil I ajusted the shape of the whole thing (it’s optimal now!) I moved on fusion360 to make the case ! for this I did research, mental utilisation and google.com/How to copy paste fusion360 I needed to make another project with the pcb to save it and then only use it :o Last steps I did: Make the boykisser shape, then cut the pcb into it with 0.20/0.25mm more than the original shape I have now the shape !!!!! (I’m happy, took too much time and braincells) what’s next? Cutouts onto the box, and top of the box I think I always move forward, even if I don’t know what to do, there is always one thing to do!!! Thanks for reading :)
DEVLOG 5!!!! What is my project? This macro pad helps you with your social interactions by letting you control the volume or typing emojis with a single clic OwO What’s new? I designed the whole case, there is everything needed: a hole for the cable supports that the pcb don’t break while you press on it :) light diffusions hairs in 3d but easy to print holes for all the parts head elements like the noze :-) decoration inside the box!! (you can’t see it when closed BUT it is cool :3) You finished the case? Yeah totally (I hope), now I need to program my little controller :) I hope this devlog was good and not too long thanks for reading !
Devlog 6 What is my project? The BKpad is a small keyboard that let you emoji someone easily! You can also control your volume and luminosity by turning his ears What was already done? 7 hours of hackatime: Code : I have done research and chose KMK software, a circuit python library (this is modular!) Then I worked with Mu Editor :/, a circuit python ide (this app is designed too big) I started to do the functions, see what pins were what component It was hard, I didn’t understand the library and there was different things not well explained for my smol brain ;-; I decided to switch to VScode :D, a more convenient ide where you see a lot more of your code easily I added support for every component one by one :) The code is messy BUT I think it works 👍 Website! I need a presentation website. I think of it like a way to show to everyone and not just for the technical persons. This hardware project makes me learn a lot into technical, but it is not an HTML project so I tried something new… No-code options! (this is experimental and this is not good) In less than 2 hour I have a beautiful website traduced in french and English by myself, responsive and good for normal people to see. I used a solution named Odoo, 80% open source and free -> BKpad.odoo.com (However, this is no great to do big websites, for one page it’s good but if you want to expand i’m not convinced) GitHub! I updated the readme.md: I added new images placed in some tables I added/updated explanations, how I made it in steps, the link to the website I uploaded all the files needed and there are now in folders (it imported my gitignore Iol) -> PCB / CAD files / firmware Fun facts: My project is indexed on Google, if you search “BKpad github” it finds :) Future actions: Shipping ! I will ship my project, he is functional and can be produced, it have no problems in the PCB editor, tolerances for the box and all the files are on github! Goodbye and thanks for reading!
Devlog 1 s2 This is my first “ after-shipment MakeLog ”, I am so happy to have my components that I actually forgot to devlog properly, so this one is for the physical build What is the BKpad? This custom shaped macropad lets you write emojis, change your system volume, and is the best controller for BKball, my game :D What did I do this time? I received all the pieces!!! I now have: the custom PCB all the pieces from the kit The case (rip the lost one) With all that, I soldered the components, I tested the connections, I cut 0.5mm on each hole of the case, the translucent material is not very precise :3 I got to make the pcb go into the case then I soldered the keys. I later had to make the inserts go in ! (don’t look to the 0.5mm not in the hole ) I had to resolder my first led and then everything was nice. It was super nice to have a “pro” soldering station (8898 JCD on aliexpress hehe). Finally, I had to find a cable which could go in my case. Xiaomi cables are too big, some other wasn’t “data” . A no name one was good, so if I upgrade the design I will have to think about make more space inside What’s next? ( I already did this but I prefer to cut the process in clear steps) I will have to test the firmware, modify it, find it is deprecated then sell my soul to the demon Goodbye :D
Devlog 2 s2 !!! (18 hours of work sorryyy) This devlog is a software one :3 The story… KMK I first flashed Circuit python, downloaded my project (which was done on KMK ) onto the controller, and started the macropad. Nothing worked (But really nothing, like I was the CEO of Nothing lol) I then tested one other project’s KMK code, and the OLED worked (It was the only thing working) I had to fall to lose it all, but in the end, it doesn’t even matter . (The framework’s functionalities weren’t working ) KMK was trying to cycle in None , and all the magical stuff they did was not working even though I did the things needed that the documentation wasn’t talking about. QMK I tried so hard and got so far, but in the end, it doesn’t even matter (The library was deprecacted and dead ) I had to switch to QMK and it’s in C (Never wrote in C), leaving many hours of python work beside me TwT To start, I needed a working basis to experiment on and implement my functionalities. Thanks to Mediapad’s QMK source code and my python KMK file, I asked AI to merge them. I globally translated my python file to C, so the AI did not add any new functionalities :o ! With the basis I had, I first needed to flash my code QMK compilation tool is too mysterious for me so I asked a last time VScode’s ai to make me a CMD script that compiles automatically. (I tried by hand before btw, with no success) Then I stopped using of VScode’s AI. I added many functionalities, and my Lumo AI was used only for the first debugs I had to do + one function but then only Brave search AI overview was used. Here are all the functionalities I added: OwO UwU Oh Hm prints on your computer independently that if you are on QWERTY or AZERTY (you can toggle the parameter with a combo). Else, it would have just written UzU or OzO a combo that opens you BKball’s website (by typing win+R then the link then enter, it is very safe :3) And put the keypad into controller mode , made specifically for this precise game, while setting the pad’s color theme to automn a combo to enter bootloader mode (especially useful for me instead of opening the case to click a button of the controller whenever I change the code!) each LED have its own color, and a smooth hand made non periodical animation make the pad more living You can control the luminosity of the pad by turning the right potentiometer and your system volume using the left one (it even changes the OLED’s brighness even if it’s not very noticable) when you click or turn a button, its red cheeks becomes brighter and his mouth expression changes ( 5 different images for the mouth, 2 for the AZERTY/QWERTY indicator and one for the Game Mode, all made in GIMP) it stores the luminosity and pc layout between uses so you don’t get blind each time you boot it ip in the dark Final words I am happy with how the project has gone and how I could make it a reality :o If you wonder why I say 18 hours instead of the 9 written: I linked a 9 hour hackatime project after doing it and I hope the time didn’t vanished but I am really worried that I won’t have this time counted :( Why did I waited this much? I want to send a devlog with real new things, not just “I added a README”, I did add READMEs but it’s a normal thing to do and it wasn’t worth talking about, then I may have forgotten a bit :3 This devlog took me 4 days to write so thanks for reading!
Devlog 3 s2 Three devlogs are not a lot considering this one is a small one but the 2 earlier is a big recap of what happened. I wasn’t sure about what I was doing so I waited until it worked to present it (this was an error excuse me ) What is my project? The BKpad is a macroboard made for you to type emojis, change your volume, and play BKball , by turning the rotary encoders. These two projects are what I did all my free time during month, and I’m proud of them What interesting? I added demonstration videos in the readme The website and github haves pictures of it working If you want to dig into the code, it’s more easy now: I normalized the documentation when you type his eyes combo, it opens the new BKball’s website hosted on github pages I cleaned the repo. There are only 4 files in production. 2 to print, one for JLCPCB and one to drag and drop into the microcontroller for it to work. I finished the “product” so this adventure finishes there… What’s next? I’ll ship everything, get feedback, maybe have the Blahaj in the shop and save everything I posted there! I hope I can do the stardance program next year Thanks for reading
Ships:
The BKpad The BKpad is a macropad designed for you to write emojis like UwU, OwO, Hmmm or Oh . You can also change your sound level, and because the BKpad is illuminated, you can change its brightness! The first shipment I did was when I finished the design but nothing was real, just in my computer :o As I see, it was not a real ship but just to verify what I did At this moment, there were several key points, all done without AI: I started by designing the idea in gimp As said in the guide, I learned and used KiCad to design my custom-shaped PCB, prayed the Blahaj everything would work and now I can say that the pcb works perfectly With the PCB, I then designed in fusion360 (I never tested CAD solutions like this but it was fun) the case, shaped like a cat head :3 Then, the hardest part for me: THE FIRMWARE. I blindly started with KMK, a circuitpython library. I did my best, it was hard, but with the documentation and some search, I got a result: a file that I thought would work! Now, for the second part… I received all the parts, paid €15 of taxes for a $14 package, received the pcb, fully paid with the grant, and a case I tested with my potentiometer the pcb connections: It was working I soldered all the components ( just not the switches, not before clipping the upper case part into them) I flashed my code, and not a single thing was working! Go see on my devlog of the S2, but generally the KMK documentation was wrong about some things, and the others were just not working. I had to take a decision: Go QMK and code in C (In my life, it was just Python so it was a little hard I took my KMK code, I took Mediapad’s QMK one, and asked AI to translate my KMK code to QMK using the same base as the mediapad’s one. the AI just translated, but did not create anything new ( I really don’t want to use this but I was not capable of this ) I then experimented on this, asked an AI to explain me the first error reports that I had and then I created myself every functionalities emojis, reactions when clicking, led animations, combo that opens my game, a controller mode made for my game, BKball , and everything I could do (it was enjoyable) Then I did a shooting photo in my garden (I hope it to be fancy) I made everything I planned to do, the github is full of information, the code is documented, the game I made with the keyboard is finished too. I am really happy and will come back next year for stardance. Maybe a BKclock? Now I just want to get the blahaj if I have enough stardust :) Thanks for reading this very long message! Goodbye!...
|
1793771619.0586917
|
1793858019.0586917
|
|
21857
|
HoopIQ by @atharva02 | Stardance
|
atharva02
|
3
|
75.8
|
642
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-03T21:56:53Z", "hours": 22.0, "multiplier": 16.02, "payout": 348, "blessing": "neutral", "text": "I made a basketball training app that will help people train their basketball skills. The hardest part in this ship was probably finding the best way to integrate mobile into this. I really don’t like styling, and it took really long to figure out correct widths, until I realized viewport widths which made life so much easier and correctly take up the space you need. I’m most proud of the animations that have now been integrated within the site. They’re pretty basic, but I do think they add enough flavor to the app to make it a little bit more enjoyable, which is always a nice touch. When testing this project, data is saved locally so progress doesn’t save between devices and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Also note that when viewing the GitHub, I’m working on this with branches so view the “feature/training-adjustments” branch to see current committed changes, they’re not merged on main yet. This is the third ship for this project, and I anticipate more to come so all feedback is appreciated. Enjoy!", "repo": "https://github.com/atharva-277/Basketball-Trainer", "demo": "https://hoop-iq-277.web.app/"}, {"ship_num": 2, "ts": "2026-08-29T02:17:33Z", "hours": 21.0, "multiplier": 10.39, "payout": 215, "blessing": "neutral", "text": "I made a basketball training app that will help people train their basketball skills. A challenging part for this part was finding specific drills that improved the skillset that I had created. Also the metric to imperial conversion had a finicky error which took a lot longer to fix, but it’s here now so great! I’m proud that the drills remain personalized like the other training parts as they target where you have logged you are weak at. I feel training sites are best when the user knows where they struggle and needs a medium to improve. When testing this project, data is saved locally so progress doesn’t save between devices(this is only laptop friendly right now, sorry) and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Also note that when viewing the GitHub, I’m working on this with branches so view the “feature/training-adjustments” branch to see current committed changes, they’re not merged on main yet. Other than that, this is the second ship so some feedback was incorporated, but same as before, this app will continue to be expanded upon so all feedback is good feedback. Enjoy!", "repo": "https://github.com/atharva-277/Basketball-Trainer", "demo": "https://hoop-iq-277.web.app/"}, {"ship_num": 3, "ts": "2026-08-20T01:05:17Z", "hours": 6.0, "multiplier": 12.86, "payout": 79, "blessing": "neutral", "text": "I made a basketball training app that will help people train their basketball skills. The challenging part within making this app was finding out what skills are important to test out. Obviously shooting is the main aspect of basketball, but it’s also important to practice ball control. After that, there was challenges it creating specific algorithms to test those skills that provide an even split across the categories. I’m most proud of how the shot diet and baseline work together to create a unique training experience so you specifically work on categories that help YOUR play style, rather than a generic one. When testing this project, all data is saved locally so progress doesn’t save between devices(this is only laptop friendly right now, sorry) and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Other than that, I’m really excited to get any feedback on this whatsoever considering there is a lot more I plan to add to this. Enjoy!", "repo": "https://github.com/atharva-277/Basketball-Trainer", "demo": "https://hoop-iq-277.web.app/"}]...
|
[{"post_id": 65645, "ts": "202 [{"post_id": 65645, "ts": "2026-09-10T22:34:50Z", "hours": 4.3764, "text": "Devlog #18 Current Features Drill panel is here! Took a lot of effort to get working because accessing data from the same project is hard 😭. It wasn’t hard to access the drill history itself, but the way I was storing it was based on ID numbers and not drill names(something that was never actually stored) which made it hard to show on screen. I think it looks really good on the screen, and it’s intuitive to access via the calendar, click on the day. What’s Coming Up Right now it only shows what exactly you did, and your performance their specifically. However, I want to make it so that the user can easily see the misses they tagged as well, providing an all encompassing way of accessing all their history within this app. Obviously my app uses the data to give them drill suggestions, but the user should be able to see their history and make their own trends based on what they see. Game Plan I’ll be spending the next chunk of this trying to get that working: backend functionality, styling on screen, updating day to day, stuff like that. After that I’ll try to incorporate some animations in that and unless I think of other major changes, there will be another ship hopefully."}, {"post_id": 64585, "ts": "2026-09-09T02:57:01Z", "hours": 4.1461, "text": "Devlog #17 Current Features Started to work on the hover/pressing functionality. I’ve decided to simply combine the two functionalities into one, but I’m struggling to find the best way to display it on the screen. Basically, the user should be able to tap the day they worked on something, and see what exactly they did What’s Coming Up I was mainly testing with the backend part of this within these hours and will push a UI update to reflect these changes within the coming days hopefully. Other than that, I want to hopefully add a feature where they see the exact percentage boost they got by doing a task if I have the correct data to hold that. Game Plan Add UI features as mentioned above, switch gears to working on backend part of progress updates, and see how the app looks like then. Note: I had to reset data to test the UI, hence why my streak isn’t the 2 days including yesterday:)"}, {"post_id": 63999, "ts": "2026-09-08T03:20:25Z", "hours": 4.7167, "text": "Devlog #16 Current Features UI update is finally here! Finally got this working after a lot of trial and error with the display and making it show up with the proper date. The best part is it also looks great with the mobile without any extra styling so even better for me! What’s Coming Up Still want to add more functionality to the calendar specifically such as clicking to see your exact work, hovering to see basic title overview, and just general user interactivity. Game Plan Most of the above changes go along with how I stored data anyway, so I’m not behind in any regard. I plan on adding the above changes first, before deciding what else there is to add in relation to this."}, {"post_id": 63341, "ts": "2026-09-07T03:22:10Z", "hours": 5.4511, "text": "Devlog #14 Current Events Calendar is basically fully functioning! Hasn’t been integrated in the UI yet like I hoped it would be, but I got it working the way I wanted it to with the user able to see their progress in a quick snapshot. Really happy to see this working now as it’s been a asked feature in past ships What’s Coming Up The UI update will definitely be what’s coming up next. I know this was mentioned last devlog, but instead I got it close to fully working and now will be adding the interface. Game Plan Adding the UI on the screen so it fully works, and then switching over to the backend part of the session history"}, {"post_id": 62479, "ts": "2026-09-05T20:52:52Z", "hours": 4.2714, "text": "Devlog #13 Current Events Decided to add the screen itself to the UI so it’s easier to update these logs with progress as it occurs. On the backend, I realize I have been storing drill sessions anyway, just wasn’t displaying them so that’s a pretty big timesave. Along with that, the calendar is still a work in progress, just doing some testing to see how exactly it works along with how the streak will play into that. What’s Coming Up I’d expect a UI update shortly with multiple elements on the screen, maybe not fully functional right away, but in the intial working phase if that makes sense. Game Plan Add calendar and streak elements on screen with functionality – I’ll need some time to test if the days are tracked correctly. After that, it’ll be simply integrated session logs onto the screen"}, {"post_id": 61806, "ts": "2026-09-04T21:52:28Z", "hours": 3.8361, "text": "Devlog #13 Current Events I have started working on implementing a calendar and streak feature. I want to make it similar to stardance’s so that you can see what you worked on that specific day. Essentially, I’ll be adding another tab called history and input information there so they can see their streaks, recent drills, and progress over time. What’s Coming Up None of the UI has been integrated, but that doesn’t mean the backend is finished either. I was experimenting with how exactly the calendar works and how it might look within the UI. Game Plan I plan on slowly integrate the UI with the tab and only show the calendar and streaks at first once that starts working, and then work towards displaying the drill history. Thank you to whoever mentioned formatting devlogs properly in ship review! This makes it a lot easier to read."}, {"post_id": 61135, "ts": "2026-09-03T21:52:45Z", "hours": 5.5231, "text": "Devlog #12 Animations are here! Admittedly, there aren’t too animations, mainly because the one I saw online aren’t sites where the user is constantly interacting, their mainly shops or display sites, like WebOS. However, they are here now and I feel that they’re subtle, but still look nice on the screen. I especially like the pulse effect on the baseline screen when you increase, or decrease, your made shots. A ship will follow this devlog, so as always, please give all feedback that you can think of, specifically features which you want added that could improve this. I anticipate my next feature to be a calendar/streak system of sorts, giving the user visual cues on their progress. I have not forgotten about the drill tutorials, it’s just that it’s a bit more complicated and I like showing off progress periodically, not just once at the end. Hope you all enjoy!"}, {"post_id": 59907, "ts": "2026-09-01T22:48:44Z", "hours": 3.5156, "text": "Devlog #11 New Feature? I don’t know if mobile integration really counts as a new feature but I’m counting it anyway. This makes it easier to train as it is no longer necessary to be huddled around a laptop, entering your data. The new styles make it easier to navigate throughout the site on your phone. I know in my very first devlog I said I want to make a mobile app, but I think making a website work well on a phone also serves that need. Nothing has changed with the way data is handled, the main thing I worked on here was CSS styling in the new media set. These were hours well spent on making the site look good on a phone, so I hope you all enjoy it. My next goal is to add animations to the CSS, whether that’s new elements or just simple, quick navigation I don’t fully know yet. I will also be postponing the drill tutorials to a later date, I want to get another ship this week(I like having each ship have only a few unique features added, it helps me get feedback in bits rather than on everything), and I will likely not have the time to research online drill images or make them myself. Otherwise, I’ve had a lot of fun continuing this project so I hope you guys like this new style as much as I do. Attached is the recreation of mobile styles using Chrome Dev Tools, I didn’t want to type this all on my phone. Enjoy!"}, {"post_id": 59297, "ts": "2026-09-01T00:36:19Z", "hours": 3.7131, "text": "Devlog #10 A sad devlog, but a necessary one, GameIQ has been removed and will not be a feature any longer. I wasn’t able to find an efficient way to add in multiple situations unless I gave a paragraph of information instead of an image describing the situation. Perhaps I will be able to find a workaround with play-drawing section, but I’ve also realized that most people will not use this to play professional basketball games in any regard(high school or rec league), and will use it for pickup most likely. I will be focusing my attention on adding features that were recommended from previous ship reviews. I apologize for anyone reading these devlogs waiting for GameIQ to be a feature, it has been removed now. I am sorry."}, {"post_id": 58372, "ts": "2026-08-30T19:39:48Z", "hours": 3.6325, "text": "Devlog #9 GameIQ is still a work in progress right now, but the second ship reviews came in so I’m planning on making this a larger ship with more than just that. A big recommendation was drill tutorials so I might integrate a separate YouTube channel and provide links to the drills so people know how to do them, or find something online who knows. Also people said to add some animations to the actual site so I will probably add that as well. Despite the 3.5 hours in this devlog, I still couldn’t find a viable API source for the GameIQ, or maybe I’m not looking hard enough lol. I’m still going to try to find some alternative instead of hard-coding situations because I don’t know how many I’ll be able to do. But, I know for sure that some suggestions from past ships will be integrated within the next ship. Thank you for all the feedback so far, it’s been great reading them and planning out what more to do with this project!"}, {"post_id": 57742, "ts": "2026-08-30T00:37:08Z", "hours": 5.3189, "text": "Devlog #8 I’ve started working on the GameIQ section, except nothing with the Ui yet. I’ve been trying to get the internal logic to work and it’s being a bit weird. I’m trying to see if there’s a way to get a large question bank of answers without using an API to route to questions. Other than that, the main premise of GameIQ is you’ll be given a situation and you have to make the correct read out of 4 options, basically a quiz which you can opt out of anytime. Once that’s integrated as simply a base functionality, I hope to make it specific to the drills the user is actively working on to further test their skills. But again, not much works right now, it’s just some base logic with not much else."}, {"post_id": 57000, "ts": "2026-08-29T02:12:39Z", "hours": 4.6917, "text": "Devlog #7 Drills have been incorporated successfully! The user can now properly use this app to actually improve I think. Rather than repeatedly doing the same thing, they can do specific drills to improve their skills. This has the same display as the handling and shooting session log only difference is this doesn’t affect any of the calculations associated with you. These drills are simply a means to improve your handling and shooting skills which thereby affect your percentages. The drills tell you what to complete along with a suggested rep/time count but even if you log more/less it only affects you and not the internal algorithm. Other change made was based off of the first recommendation by adding metric units. This has also been added, you choose at the start and can update at any time via the settings page. Internal calculations still use inches, but the display will show metric in case anyone is looking at what data is being stored. Enjoy!"}, {"post_id": 56232, "ts": "2026-08-27T22:07:13Z", "hours": 5.4708, "text": "Devlog #6 New Feature! Drills are now a new feature that are still a small work in progress, but the initial testing is complete so though I’d post about it here. Essentially before all you could do was practice repetitive actions without actually working on how to improve it. Now with drills, after you’ve done some sessions to see how you’re performing, this will gauge where you’re usually messing up and provide drills to improve. Now these drills will help improve a specific part of the misses you tagged earlier. The flow that I’m going for here is you practice specific shot types and tag misses, complete drills to help said misses, and improve your skills over time! I’m still working on specific drills to add, along with descriptions so the user knows how to perform them. Attached is how it currently looks on the training screen, the session screen is still a work in progress. Note: some feedback given from initial ship will be adressed in next devlog, assuming I get around to it. Once this drill functionality is working and some feedback is adressed, there will most likely be another ship. Enjoy!"}, {"post_id": 54390, "ts": "2026-08-25T11:46:41Z", "hours": 6.0103, "text": "Devlog #5 Unfortunately, no new coding was done because I ran into multiple errors that took a lot of time trying to fix. I’m not actually sure what happened, but my files were messed up and the file structure internally broke down. Luckily, it’s all fixed now, so I thought I’d post this small devlog so I can reset my hours and post a new one when I start working on the drill features, without the 10 hour limit worrying me. Other than that, the UI of the app remains unchanged."}, {"post_id": 52649, "ts": "2026-08-22T21:46:24Z", "hours": 4.5331, "text": "Devlog #4 I did my usual project UI overhaul like I always need to usually. I usually let Claude generate the UI just so I can see stuff on the screen when I code the actual logic, and then inevitably forget I did that when I go to ship, but I have attempted to revert most of that back while still maintain the basketball theme. I personally think it looks pretty good now, I made all of the text bigger, made the buttons and most elements on the screen more visible. I also added a hover effect on most elements to give it an orange glow, this will eventually be converted to fully-mobile friendly(currently it works just doesn’t look good) but I still really enjoy it. Other than that there weren’t any logic changes, just felt the need to showcase what the site looks like right now as I spent a large amount of time updating the UI. Enjoy!"}, {"post_id": 50700, "ts": "2026-08-20T01:01:11Z", "hours": 2.7242, "text": "Devlog 3 So much has happened since. Now that the user has a baseline that they can be compared against, the initial training algorithm has been created! Right now it’s mainly based off of repetition and the user should continuously practice the same stuff they did within the baseline. This is simply the initial algorithm because based off of the baseline, the algorithm finds the weakest area and applies percentages to each are so you practice weak ones more than others. As you can see from the provided image: I have to practice specific ball handling and then if I don’t reach the amount, I have to tag a miss and it gives a cue on what you can do to fix that. Eventually, after this keeps growing, it’ll give specific drills that help instead of repetition. However, I will likely ship after this to see what people think of this so far and we’ll go from there."}, {"post_id": 36695, "ts": "2026-07-28T22:23:59Z", "hours": 2.4206, "text": "Devlog #2 So instead of generating a baseline based off of just personal bio-data, the user goes through a series of drills to see where they stand at currently. They have to practice threes, mid-rangers, layups, and practice some ball-handling drills. Based off of these beginning stats, it generates their current overall and saves their stats to be used later. Right now this is the only main thing that works and based off of this I’m gonna generate a training regime that best fits them mainly off of these stats. Other than that, the user is also able to input their shot diet on the training screen which basically tells the computer what they do when they have the ball. For example, they shoot threes 15% of the time, mid-rangers 35%, layups 40%, and handle the ball via dribbling 10%. Attached is a sample results page after the user finishes their baseline."}, {"post_id": 14042, "ts": "2026-06-23T00:47:40Z", "hours": 1.0325, "text": "So I’m currently working on a basketball trainer website, eventually converted into an app to help people improve their basketball skills. Currently, there’s only a good UI base because I haven’t started the full functionality yet. I plan on, hopefully, adding a new training section twice every week, or just weekly if that’s what works. Attached is the home page where the user inputs their info to get a baseline for training rigor."}]...
|
Title: HoopIQ by @atharva02 | Stardance
Devlogs:
Title: HoopIQ by @atharva02 | Stardance
Devlogs:
So I’m currently working on a basketball trainer website, eventually converted into an app to help people improve their basketball skills. Currently, there’s only a good UI base because I haven’t started the full functionality yet. I plan on, hopefully, adding a new training section twice every week, or just weekly if that’s what works. Attached is the home page where the user inputs their info to get a baseline for training rigor.
Devlog #2 So instead of generating a baseline based off of just personal bio-data, the user goes through a series of drills to see where they stand at currently. They have to practice threes, mid-rangers, layups, and practice some ball-handling drills. Based off of these beginning stats, it generates their current overall and saves their stats to be used later. Right now this is the only main thing that works and based off of this I’m gonna generate a training regime that best fits them mainly off of these stats. Other than that, the user is also able to input their shot diet on the training screen which basically tells the computer what they do when they have the ball. For example, they shoot threes 15% of the time, mid-rangers 35%, layups 40%, and handle the ball via dribbling 10%. Attached is a sample results page after the user finishes their baseline.
Devlog 3 So much has happened since. Now that the user has a baseline that they can be compared against, the initial training algorithm has been created! Right now it’s mainly based off of repetition and the user should continuously practice the same stuff they did within the baseline. This is simply the initial algorithm because based off of the baseline, the algorithm finds the weakest area and applies percentages to each are so you practice weak ones more than others. As you can see from the provided image: I have to practice specific ball handling and then if I don’t reach the amount, I have to tag a miss and it gives a cue on what you can do to fix that. Eventually, after this keeps growing, it’ll give specific drills that help instead of repetition. However, I will likely ship after this to see what people think of this so far and we’ll go from there.
Devlog #4 I did my usual project UI overhaul like I always need to usually. I usually let Claude generate the UI just so I can see stuff on the screen when I code the actual logic, and then inevitably forget I did that when I go to ship, but I have attempted to revert most of that back while still maintain the basketball theme. I personally think it looks pretty good now, I made all of the text bigger, made the buttons and most elements on the screen more visible. I also added a hover effect on most elements to give it an orange glow, this will eventually be converted to fully-mobile friendly(currently it works just doesn’t look good) but I still really enjoy it. Other than that there weren’t any logic changes, just felt the need to showcase what the site looks like right now as I spent a large amount of time updating the UI. Enjoy!
Devlog #5 Unfortunately, no new coding was done because I ran into multiple errors that took a lot of time trying to fix. I’m not actually sure what happened, but my files were messed up and the file structure internally broke down. Luckily, it’s all fixed now, so I thought I’d post this small devlog so I can reset my hours and post a new one when I start working on the drill features, without the 10 hour limit worrying me. Other than that, the UI of the app remains unchanged.
Devlog #6 New Feature! Drills are now a new feature that are still a small work in progress, but the initial testing is complete so though I’d post about it here. Essentially before all you could do was practice repetitive actions without actually working on how to improve it. Now with drills, after you’ve done some sessions to see how you’re performing, this will gauge where you’re usually messing up and provide drills to improve. Now these drills will help improve a specific part of the misses you tagged earlier. The flow that I’m going for here is you practice specific shot types and tag misses, complete drills to help said misses, and improve your skills over time! I’m still working on specific drills to add, along with descriptions so the user knows how to perform them. Attached is how it currently looks on the training screen, the session screen is still a work in progress. Note: some feedback given from initial ship will be adressed in next devlog, assuming I get around to it. Once this drill functionality is working and some feedback is adressed, there will most likely be another ship. Enjoy!
Devlog #7 Drills have been incorporated successfully! The user can now properly use this app to actually improve I think. Rather than repeatedly doing the same thing, they can do specific drills to improve their skills. This has the same display as the handling and shooting session log only difference is this doesn’t affect any of the calculations associated with you. These drills are simply a means to improve your handling and shooting skills which thereby affect your percentages. The drills tell you what to complete along with a suggested rep/time count but even if you log more/less it only affects you and not the internal algorithm. Other change made was based off of the first recommendation by adding metric units. This has also been added, you choose at the start and can update at any time via the settings page. Internal calculations still use inches, but the display will show metric in case anyone is looking at what data is being stored. Enjoy!
Devlog #8 I’ve started working on the GameIQ section, except nothing with the Ui yet. I’ve been trying to get the internal logic to work and it’s being a bit weird. I’m trying to see if there’s a way to get a large question bank of answers without using an API to route to questions. Other than that, the main premise of GameIQ is you’ll be given a situation and you have to make the correct read out of 4 options, basically a quiz which you can opt out of anytime. Once that’s integrated as simply a base functionality, I hope to make it specific to the drills the user is actively working on to further test their skills. But again, not much works right now, it’s just some base logic with not much else.
Devlog #9 GameIQ is still a work in progress right now, but the second ship reviews came in so I’m planning on making this a larger ship with more than just that. A big recommendation was drill tutorials so I might integrate a separate YouTube channel and provide links to the drills so people know how to do them, or find something online who knows. Also people said to add some animations to the actual site so I will probably add that as well. Despite the 3.5 hours in this devlog, I still couldn’t find a viable API source for the GameIQ, or maybe I’m not looking hard enough lol. I’m still going to try to find some alternative instead of hard-coding situations because I don’t know how many I’ll be able to do. But, I know for sure that some suggestions from past ships will be integrated within the next ship. Thank you for all the feedback so far, it’s been great reading them and planning out what more to do with this project!
Devlog #10 A sad devlog, but a necessary one, GameIQ has been removed and will not be a feature any longer. I wasn’t able to find an efficient way to add in multiple situations unless I gave a paragraph of information instead of an image describing the situation. Perhaps I will be able to find a workaround with play-drawing section, but I’ve also realized that most people will not use this to play professional basketball games in any regard(high school or rec league), and will use it for pickup most likely. I will be focusing my attention on adding features that were recommended from previous ship reviews. I apologize for anyone reading these devlogs waiting for GameIQ to be a feature, it has been removed now. I am sorry.
Devlog #11 New Feature? I don’t know if mobile integration really counts as a new feature but I’m counting it anyway. This makes it easier to train as it is no longer necessary to be huddled around a laptop, entering your data. The new styles make it easier to navigate throughout the site on your phone. I know in my very first devlog I said I want to make a mobile app, but I think making a website work well on a phone also serves that need. Nothing has changed with the way data is handled, the main thing I worked on here was CSS styling in the new media set. These were hours well spent on making the site look good on a phone, so I hope you all enjoy it. My next goal is to add animations to the CSS, whether that’s new elements or just simple, quick navigation I don’t fully know yet. I will also be postponing the drill tutorials to a later date, I want to get another ship this week(I like having each ship have only a few unique features added, it helps me get feedback in bits rather than on everything), and I will likely not have the time to research online drill images or make them myself. Otherwise, I’ve had a lot of fun continuing this project so I hope you guys like this new style as much as I do. Attached is the recreation of mobile styles using Chrome Dev Tools, I didn’t want to type this all on my phone. Enjoy!
Devlog #12 Animations are here! Admittedly, there aren’t too animations, mainly because the one I saw online aren’t sites where the user is constantly interacting, their mainly shops or display sites, like WebOS. However, they are here now and I feel that they’re subtle, but still look nice on the screen. I especially like the pulse effect on the baseline screen when you increase, or decrease, your made shots. A ship will follow this devlog, so as always, please give all feedback that you can think of, specifically features which you want added that could improve this. I anticipate my next feature to be a calendar/streak system of sorts, giving the user visual cues on their progress. I have not forgotten about the drill tutorials, it’s just that it’s a bit more complicated and I like showing off progress periodically, not just once at the end. Hope you all enjoy!
Devlog #13 Current Events I have started working on implementing a calendar and streak feature. I want to make it similar to stardance’s so that you can see what you worked on that specific day. Essentially, I’ll be adding another tab called history and input information there so they can see their streaks, recent drills, and progress over time. What’s Coming Up None of the UI has been integrated, but that doesn’t mean the backend is finished either. I was experimenting with how exactly the calendar works and how it might look within the UI. Game Plan I plan on slowly integrate the UI with the tab and only show the calendar and streaks at first once that starts working, and then work towards displaying the drill history. Thank you to whoever mentioned formatting devlogs properly in ship review! This makes it a lot easier to read.
Devlog #13 Current Events Decided to add the screen itself to the UI so it’s easier to update these logs with progress as it occurs. On the backend, I realize I have been storing drill sessions anyway, just wasn’t displaying them so that’s a pretty big timesave. Along with that, the calendar is still a work in progress, just doing some testing to see how exactly it works along with how the streak will play into that. What’s Coming Up I’d expect a UI update shortly with multiple elements on the screen, maybe not fully functional right away, but in the intial working phase if that makes sense. Game Plan Add calendar and streak elements on screen with functionality – I’ll need some time to test if the days are tracked correctly. After that, it’ll be simply integrated session logs onto the screen
Devlog #14 Current Events Calendar is basically fully functioning! Hasn’t been integrated in the UI yet like I hoped it would be, but I got it working the way I wanted it to with the user able to see their progress in a quick snapshot. Really happy to see this working now as it’s been a asked feature in past ships What’s Coming Up The UI update will definitely be what’s coming up next. I know this was mentioned last devlog, but instead I got it close to fully working and now will be adding the interface. Game Plan Adding the UI on the screen so it fully works, and then switching over to the backend part of the session history
Devlog #16 Current Features UI update is finally here! Finally got this working after a lot of trial and error with the display and making it show up with the proper date. The best part is it also looks great with the mobile without any extra styling so even better for me! What’s Coming Up Still want to add more functionality to the calendar specifically such as clicking to see your exact work, hovering to see basic title overview, and just general user interactivity. Game Plan Most of the above changes go along with how I stored data anyway, so I’m not behind in any regard. I plan on adding the above changes first, before deciding what else there is to add in relation to this.
Devlog #17 Current Features Started to work on the hover/pressing functionality. I’ve decided to simply combine the two functionalities into one, but I’m struggling to find the best way to display it on the screen. Basically, the user should be able to tap the day they worked on something, and see what exactly they did What’s Coming Up I was mainly testing with the backend part of this within these hours and will push a UI update to reflect these changes within the coming days hopefully. Other than that, I want to hopefully add a feature where they see the exact percentage boost they got by doing a task if I have the correct data to hold that. Game Plan Add UI features as mentioned above, switch gears to working on backend part of progress updates, and see how the app looks like then. Note: I had to reset data to test the UI, hence why my streak isn’t the 2 days including yesterday:)
Devlog #18 Current Features Drill panel is here! Took a lot of effort to get working because accessing data from the same project is hard 😭. It wasn’t hard to access the drill history itself, but the way I was storing it was based on ID numbers and not drill names(something that was never actually stored) which made it hard to show on screen. I think it looks really good on the screen, and it’s intuitive to access via the calendar, click on the day. What’s Coming Up Right now it only shows what exactly you did, and your performance their specifically. However, I want to make it so that the user can easily see the misses they tagged as well, providing an all encompassing way of accessing all their history within this app. Obviously my app uses the data to give them drill suggestions, but the user should be able to see their history and make their own trends based on what they see. Game Plan I’ll be spending the next chunk of this trying to get that working: backend functionality, styling on screen, updating day to day, stuff like that. After that I’ll try to incorporate some animations in that and unless I think of other major changes, there will be another ship hopefully.
Ships:
I made a basketball training app that will help people train their basketball skills. The challenging part within making this app was finding out what skills are important to test out. Obviously shooting is the main aspect of basketball, but it’s also important to practice ball control. After that, there was challenges it creating specific algorithms to test those skills that provide an even split across the categories. I’m most proud of how the shot diet and baseline work together to create a unique training experience so you specifically work on categories that help YOUR play style, rather than a generic one. When testing this project, all data is saved locally so progress doesn’t save between devices(this is only laptop friendly right now, sorry) and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Other than that, I’m really excited to get any feedback on this whatsoever considering there is a lot more I plan to add to this. Enjoy!
I made a basketball training app that will help people train their basketball skills. A challenging part for this part was finding specific drills that improved the skillset that I had created. Also the metric to imperial conversion had a finicky error which took a lot longer to fix, but it’s here now so great! I’m proud that the drills remain personalized like the other training parts as they target where you have logged you are weak at. I feel training sites are best when the user knows where they struggle and needs a medium to improve. When testing this project, data is saved locally so progress doesn’t save between devices(this is only laptop friendly right now, sorry) and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Also note that when viewing the GitHub, I’m working on this with branches so view the “feature/training-adjustments” branch to see current committed changes, they’re not merged on main yet. Other than that, this is the second ship so some feedback was incorporated, but same as before, this app will continue to be expanded upon so all feedback is good feedback. Enjoy!
I made a basketball training app that will help people train their basketball skills. The hardest part in this ship was probably finding the best way to integrate mobile into this. I really don’t like styling, and it took really long to figure out correct widths, until I realized viewport widths which made life so much easier and correctly take up the space you need. I’m most proud of the animations that have now been integrated within the site. They’re pretty basic, but I do think they add enough flavor to the app to make it a little bit more enjoyable, which is always a nice touch. When testing this project, data is saved locally so progress doesn’t save between devices and inactivity may make your browser clear the data if that’s something you have enabled(Safari does this a lot). Also note that when viewing the GitHub, I’m working on this with branches so view the “feature/training-adjustments” branch to see current committed changes, they’re not merged on main yet. This is the third ship for this project, and I anticipate more to come so all feedback is appreciated. Enjoy!...
|
1793771618.20113
|
1794635618.20113
|
|
39031
|
AstroPulse // Cosmic Mission Control by @shivar07 AstroPulse // Cosmic Mission Control by @shivar07 | Stardance...
|
shivar07
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T07:33:24Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "🧠 What was challenging? CORS Bypass for Direct Image Saving: NASA hosts its APOD images on a different domain (apod.nasa.gov) that lacks open CORS headers, which normally prevents JavaScript from downloading them. I solved this by configuring a local reverse proxy in Vite and a production CDN rewrite proxy in netlify.toml so that image downloads run securely via same-origin fetches. Network Hangs & Rate Limits: Standard API requests could sometimes hang indefinitely on slow connections, blocking the dashboard’s loading state. I engineered an AbortController timeout guard (8-second limit) and auto-stopping rules that immediately halt automatic loop scanning if a 429 rate limit or authentication block is encountered. 🏆 What are you proud of? Seamless Local Downloads: The direct-to-PC download tool. By translating target image streams into in-memory binary blobs, users can download the wallpapers directly to their device with a single click, completely avoiding browser tab redirects. Interactive Scanning Engine: The auto-scan loop that generates random telemetry sectors every 15 seconds with a visual button countdown, which intelligently pauses as soon as a user manually interacts with the controls. 🧭 How to test your project? Open the live site. Click ◀ PREV SOL and NEXT SOL ▶ (or press the Left/Right arrow keys on your keyboard) to step day-by-day through the solar history. Click RANDOM SCAN to trigger a random space telemetry search. Toggle AUTO-SCAN: OFF to activate the 15-second automatic cosmic loop. Click DOWNLOAD IMAGE on any picture to test the direct, same-origin file downloader.", "repo": "https://github.com/shivar07/Astropulse-", "demo": "https://astropulseapod.netlify.app"}]...
|
[{"post_id": 34482, "ts": "202 [{"post_id": 34482, "ts": "2026-07-25T07:27:47Z", "hours": 1.0, "text": "I wanted a quick way to browse different days. I added ‘PREV SOL’ and ‘NEXT SOL’ chevron buttons and set the date boundary rules—you can’t step earlier than NASA’s first post (June 16, 1995) or past today’s date. I also hooked up browser keydown listeners so you can page through days using the Left and Right Arrow keys. After that, I built an ‘Auto-Scan’ mode that cycles random space pictures every 15 seconds. If you manually select a date, the scanner pauses so it doesn’t interrupt your reading."}, {"post_id": 34084, "ts": "2026-07-24T15:37:02Z", "hours": 1.0, "text": "While testing various dates, I noticed a big bug: the APOD API doesn’t just return images. On some days, they post YouTube video streams or interactive space maps. Trying to render a video inside an tag broke the site. I wrote a helper function buildMediaHTML(data) to inspect media_type. If it’s a video, it parses the YouTube ID and loads it inside a clean, autoplaying, and muted container."}, {"post_id": 34039, "ts": "2026-07-24T13:53:08Z", "hours": 0.0, "text": "Sometimes the high-resolution images from NASA take a few seconds to load. Having a blank screen during the fetch looked terrible, so I built a glowing, circular radar loader. I wrote a CSS animation that handles both the rotation and a glowing shadow pulse. In main.js, I added a showLoading state that replaces the container HTML during fetching, removing layout shifts."}, {"post_id": 34016, "ts": "2026-07-24T12:48:37Z", "hours": 0.0, "text": "Today I focused entirely on design. I didn’t want a generic grid list, so I went for a retro-futuristic spaceship HUD (Heads-Up Display) aesthetic. I imported three custom fonts from Google Fonts (Orbitron, Space Grotesk, and Black Ops One) and set up high-contrast neon CSS variables. I also added three layers of parallax stars using pure CSS translation loops to make the background feel like scrolling deep space."}, {"post_id": 33998, "ts": "2026-07-24T12:06:25Z", "hours": 0.0, "text": "First day of the project! My goal was simple: connect my code to NASA’s public database and pull the daily picture metadata. I registered for a NASA developer API key, created a local .env file in Vite to store it safely, and wrote a clean JavaScript fetch wrapper. The fetch handles network errors and successfully outputs raw JSON data in the console."}]...
|
Title: AstroPulse // Cosmic Mission Control by @sh Title: AstroPulse // Cosmic Mission Control by @shivar07 | Stardance
Devlogs:
First day of the project! My goal was simple: connect my code to NASA’s public database and pull the daily picture metadata. I registered for a NASA developer API key, created a local .env file in Vite to store it safely, and wrote a clean JavaScript fetch wrapper. The fetch handles network errors and successfully outputs raw JSON data in the console.
Today I focused entirely on design. I didn’t want a generic grid list, so I went for a retro-futuristic spaceship HUD (Heads-Up Display) aesthetic. I imported three custom fonts from Google Fonts (Orbitron, Space Grotesk, and Black Ops One) and set up high-contrast neon CSS variables. I also added three layers of parallax stars using pure CSS translation loops to make the background feel like scrolling deep space.
Sometimes the high-resolution images from NASA take a few seconds to load. Having a blank screen during the fetch looked terrible, so I built a glowing, circular radar loader. I wrote a CSS animation that handles both the rotation and a glowing shadow pulse. In main.js, I added a showLoading state that replaces the container HTML during fetching, removing layout shifts.
While testing various dates, I noticed a big bug: the APOD API doesn’t just return images. On some days, they post YouTube video streams or interactive space maps. Trying to render a video inside an tag broke the site. I wrote a helper function buildMediaHTML(data) to inspect media_type. If it’s a video, it parses the YouTube ID and loads it inside a clean, autoplaying, and muted container.
I wanted a quick way to browse different days. I added ‘PREV SOL’ and ‘NEXT SOL’ chevron buttons and set the date boundary rules—you can’t step earlier than NASA’s first post (June 16, 1995) or past today’s date. I also hooked up browser keydown listeners so you can page through days using the Left and Right Arrow keys. After that, I built an ‘Auto-Scan’ mode that cycles random space pictures every 15 seconds. If you manually select a date, the scanner pauses so it doesn’t interrupt your reading.
Ships:
🧠 What was challenging? CORS Bypass for Direct Image Saving: NASA hosts its APOD images on a different domain (apod.nasa.gov) that lacks open CORS headers, which normally prevents JavaScript from downloading them. I solved this by configuring a local reverse proxy in Vite and a production CDN rewrite proxy in netlify.toml so that image downloads run securely via same-origin fetches. Network Hangs & Rate Limits: Standard API requests could sometimes hang indefinitely on slow connections, blocking the dashboard’s loading state. I engineered an AbortController timeout guard (8-second limit) and auto-stopping rules that immediately halt automatic loop scanning if a 429 rate limit or authentication block is encountered. 🏆 What are you proud of? Seamless Local Downloads: The direct-to-PC download tool. By translating target image streams into in-memory binary blobs, users can download the wallpapers directly to their device with a single click, completely avoiding browser tab redirects. Interactive Scanning Engine: The auto-scan loop that generates random telemetry sectors every 15 seconds with a visual button countdown, which intelligently pauses as soon as a user manually interacts with the controls. 🧭 How to test your project? Open the live site. Click ◀ PREV SOL and NEXT SOL ▶ (or press the Left/Right arrow keys on your keyboard) to step day-by-day through the solar history. Click RANDOM SCAN to trigger a random space telemetry search. Toggle AUTO-SCAN: OFF to activate the 15-second automatic cosmic loop. Click DOWNLOAD IMAGE on any picture to test the direct, same-origin file downloader....
|
1793771617.347649
|
1794635617.347649
|
|
51684
|
StarkOS web by @srinivasa07 | Stardance
|
srinivasa07
|
1
|
70.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T00:48:19Z", "hours": 70.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This project was inspired from MCU and think it looks cool and Its an all in one dashboard", "repo": "https://github.com/srinivasagudi0/StarkOS-Web", "demo": "https://stark-os-web-eight.vercel.app/"}]...
|
[{"post_id": 50687, "ts": "202 [{"post_id": 50687, "ts": "2026-08-20T00:18:58Z", "hours": 70.1458, "text": "I am changing this project from another program and so here it is the finished product"}]...
|
Title: StarkOS web by @srinivasa07 | Stardance
De Title: StarkOS web by @srinivasa07 | Stardance
Devlogs:
I am changing this project from another program and so here it is the finished product
Ships:
This project was inspired from MCU and think it looks cool and Its an all in one dashboard...
|
1793771616.481871
|
1794635616.481871
|
|
185
|
Tormentown by @Slugarius | Stardance
|
Slugarius
|
1
|
100.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T21:59:43Z", "hours": 100.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a basic 3D game which has you control a skeletally animated character.", "repo": "https://gitlab.com/Slugarius/tormentown", "demo": "https://gitlab.com/Slugarius/tormentown/-/releases/0.1.0"}]...
|
[{"post_id": 84588, "ts": "202 [{"post_id": 84588, "ts": "2026-10-29T21:48:57Z", "hours": 8.1211, "text": "I worked on the final changes and added sponza as the scene you play in. Final devlog before shipping."}, {"post_id": 26019, "ts": "2026-07-10T16:24:06Z", "hours": 9.5511, "text": "I modeled a building in Blender using the buildify addon. I also worked on the fracturing more and made every mesh in a model its own static mesh and the fracture now makes a sphere cast and targets every mesh found in a certain radius."}, {"post_id": 21417, "ts": "2026-07-03T10:58:11Z", "hours": 10.1756, "text": "I mostly made editor improvements and modeling roads and buildings."}, {"post_id": 13064, "ts": "2026-06-21T11:26:04Z", "hours": 8.5297, "text": "I added voronoi fracturing to the game. I added CGAL and boost to the dependencies to help with the math. Shooting the gun will shoot a ray cast in front of the camera and whatever object is hit is dismantled (fractured)."}, {"post_id": 9468, "ts": "2026-06-15T20:29:23Z", "hours": 2.5758, "text": "Grass culling! All grass objects are now divided into chunks and sub chunks and sub chunks of those sub chunks. If a chunk is not in the view frustum, then it is culled. This greatly saves on performance. The grass is also a different color now. So is the ground."}, {"post_id": 9147, "ts": "2026-06-15T09:58:19Z", "hours": 3.0117, "text": "Grass! I added a grass renderer component, and every entity with it is looped and their transform is added to a vector of grass matrices which are fed to the grass shader and drawn using instancing. You can also add grass through the map editor which is pretty cool. The grass vertex shader generates a random vector using simplex noise and uses that as the sway direction for the blade of grass. The grass fragment shader uses a gradient with three colors applied from bottom to top."}, {"post_id": 8713, "ts": "2026-06-14T14:01:11Z", "hours": 10.2147, "text": "Map editor! I added an editor bool to the global engine state and that controls whether the editor GUI is drawn and whether the player system runs or not. I also added some stuff like moving objects by clicking on them and adding stuff to the scene like grass blades. The way that the mouse to world space conversion works is that the cursor position is multiplied with the inverse of the projection matrix and this gives a direction in world space which is used as a raycast and if it hits anything, the object will be spawned at the hit position."}, {"post_id": 5925, "ts": "2026-06-09T22:03:49Z", "hours": 3.085, "text": "I added fog and a sky texture. Most of the time in this devlog was spent on modelling an enemy but I felt like it wasn’t inspired enough and was too generic so I’ll come up with a better design tomorrow."}, {"post_id": 5206, "ts": "2026-06-08T22:09:13Z", "hours": 3.8958, "text": "Inventory! The inventory system procedurally generates item slots and checks if the slots are hovered and if they are and there’s an item inside them, then clicking them will make the item follow the cursor and on release, they will check if the hovered slot can fit the item and adds it to that slot."}, {"post_id": 4495, "ts": "2026-06-07T20:32:25Z", "hours": 1.6181, "text": "I fixed the texture importing from the FBX file. I was using a custom shader in blender for the skin and it wasn’t exporting the texture because of that. I also needed to adjust the export settings and changed the gamma settings on the texture importer."}, {"post_id": 4291, "ts": "2026-06-07T15:29:34Z", "hours": 3.5358, "text": "I added a gun to the game! It uses the same inverse kinematics structure for the right hand as before but also supplies an aim direction to ApplyArmIK which controls where the hands will point to. The gun transform is directly controlled by the hand and points in the direction of the palm to the tip of the fingers. I also copied my OpenAL implementation from my previous engine and added a shooting sound whenever you shoot the gun."}, {"post_id": 3841, "ts": "2026-06-06T22:03:31Z", "hours": 7.5292, "text": "I added inverse kinematics to the hands! This was pretty difficult to set up as I don’t have a visual viewport to see the bones of my rig in so I had to go in Blender and see all the names of the arm bones and propogate the IK solver points across all of them. There’s also an IK solver class now which takes a base and a target. I also added slerping to the hand target to make it blend smoothly. There are two variables, leftGuard and rightGuard which control whether a hand is affected by IK or not. And there’s also an IK weight factor which controls the transition between animation and IK to make it go between the two smoothly. The left or right guard are disabled whenever you punch to make the arm actually go forward and use the regular animation. I also added a stamina and health bar. They use a shader which fills up the texture with a color based on a number which is the health or stamina. The health does nothing right now but stamina is drained by punching and regenerates on a rate that depends on what state you are in."}, {"post_id": 2785, "ts": "2026-06-05T16:24:27Z", "hours": 2.1981, "text": "I added attacks to the game! You can now raise your guard by pressing G and jab on either side by pressing left or right click. There was a big issue with the animations before in that if you played an animation while an animation was already mid blend, the model would suddenly jerk to the new frame because the lerped position of the bones became different between the two animations. To fix this, I updated it so whenever you play an animation, the current bone matrices are stored in a vector and are used as the starting position of the blend to the new animation."}, {"post_id": 2291, "ts": "2026-06-04T18:12:01Z", "hours": 5.6408, "text": "I added skeletal animation blending! This wasn’t needed before as there was only one animation (running) but I have added an idle and a flying animation. There’s a state machine for the animations that calls PlayBlend on the first frame of the state change. The way the blending works is that there’s a blend factor which goes from 0 to 1. It lerps from 0 to 1 on a set duration which you can specify for how fast or slow you want the animation to blend. It then lerps from all the positions, rotations and scales of the different bones of the two animations according to the blend factor. By the way, the flying animation is one frame pretty much so the blending is doing all the work in transitioning from and to it. The player also smoothly slerps to the direction you’re moving in, except if you’re moving backwards because that looks weird."}, {"post_id": 1552, "ts": "2026-06-03T17:20:20Z", "hours": 7.6022, "text": "There were lots of issues with the model loading before and I managed to import an FBX file that I exported from a blender project and got it animating in the engine. But besides that I made a character controller, there’s a capsule rigidbody attached to the player and two components, a movement component and a camera controller component. The camera controller sets the camera on the player’s head and also a little bit in front of it so you don’t clip in the player’s head and the movement component allows you to move with WASD. The movement is utter garbage however as I only made it with forces, I will improve it and add drag later. Also the thought behind the player being visible is: 1. Because of immersion and 2. I want the game to be multiplayer and adding player models beforehand will be very useful."}, {"post_id": 425, "ts": "2026-06-01T20:33:46Z", "hours": 3.0278, "text": "Physics! I integrated the Jolt physics engine into the project. I’ve used Jolt for my other projects so it was pretty quick to get up and running. I made a debug renderer system which makes and draws a wireframe depending on the collider type. There are four types of colliders currently, box, capsule, sphere and mesh. The mesh collider is unfinished, I will implement that when I actually need to implement terrain meshes and colliders."}, {"post_id": 256, "ts": "2026-06-01T13:15:52Z", "hours": 2.6044, "text": "Skeletal animations! I reused an implementation of skeletal animations from one of my old projects. In the shadow mapping vertex shader, I have also added the transformation of vertices by bone matrices to capture the shadow of animated objects."}, {"post_id": 216, "ts": "2026-06-01T09:34:47Z", "hours": 0.9539, "text": "I’ve finished implementing PBR rendering with the Cook-Torrance BRDF. I’ve also added normal and roughness map support. Other maps are unnecessary for the renderer."}, {"post_id": 134, "ts": "2026-05-31T22:08:03Z", "hours": 6.3622, "text": "I’ve started work on the 3d engine for the game I’ll be making. For the first day, I’ve implemented cascaded shadow maps where there are multiple shadow maps taken at different distances to create a hierarchy of resolution. And I’ve also implemented blinn phong shading. I plan to change this to a PBR pipeline later down the road."}]...
|
Title: Tormentown by @Slugarius | Stardance
Devlo Title: Tormentown by @Slugarius | Stardance
Devlogs:
I’ve started work on the 3d engine for the game I’ll be making. For the first day, I’ve implemented cascaded shadow maps where there are multiple shadow maps taken at different distances to create a hierarchy of resolution. And I’ve also implemented blinn phong shading. I plan to change this to a PBR pipeline later down the road.
I’ve finished implementing PBR rendering with the Cook-Torrance BRDF. I’ve also added normal and roughness map support. Other maps are unnecessary for the renderer.
Skeletal animations! I reused an implementation of skeletal animations from one of my old projects. In the shadow mapping vertex shader, I have also added the transformation of vertices by bone matrices to capture the shadow of animated objects.
Physics! I integrated the Jolt physics engine into the project. I’ve used Jolt for my other projects so it was pretty quick to get up and running. I made a debug renderer system which makes and draws a wireframe depending on the collider type. There are four types of colliders currently, box, capsule, sphere and mesh. The mesh collider is unfinished, I will implement that when I actually need to implement terrain meshes and colliders.
There were lots of issues with the model loading before and I managed to import an FBX file that I exported from a blender project and got it animating in the engine. But besides that I made a character controller, there’s a capsule rigidbody attached to the player and two components, a movement component and a camera controller component. The camera controller sets the camera on the player’s head and also a little bit in front of it so you don’t clip in the player’s head and the movement component allows you to move with WASD. The movement is utter garbage however as I only made it with forces, I will improve it and add drag later. Also the thought behind the player being visible is: 1. Because of immersion and 2. I want the game to be multiplayer and adding player models beforehand will be very useful.
I added skeletal animation blending! This wasn’t needed before as there was only one animation (running) but I have added an idle and a flying animation. There’s a state machine for the animations that calls PlayBlend on the first frame of the state change. The way the blending works is that there’s a blend factor which goes from 0 to 1. It lerps from 0 to 1 on a set duration which you can specify for how fast or slow you want the animation to blend. It then lerps from all the positions, rotations and scales of the different bones of the two animations according to the blend factor. By the way, the flying animation is one frame pretty much so the blending is doing all the work in transitioning from and to it. The player also smoothly slerps to the direction you’re moving in, except if you’re moving backwards because that looks weird.
I added attacks to the game! You can now raise your guard by pressing G and jab on either side by pressing left or right click. There was a big issue with the animations before in that if you played an animation while an animation was already mid blend, the model would suddenly jerk to the new frame because the lerped position of the bones became different between the two animations. To fix this, I updated it so whenever you play an animation, the current bone matrices are stored in a vector and are used as the starting position of the blend to the new animation.
I added inverse kinematics to the hands! This was pretty difficult to set up as I don’t have a visual viewport to see the bones of my rig in so I had to go in Blender and see all the names of the arm bones and propogate the IK solver points across all of them. There’s also an IK solver class now which takes a base and a target. I also added slerping to the hand target to make it blend smoothly. There are two variables, leftGuard and rightGuard which control whether a hand is affected by IK or not. And there’s also an IK weight factor which controls the transition between animation and IK to make it go between the two smoothly. The left or right guard are disabled whenever you punch to make the arm actually go forward and use the regular animation. I also added a stamina and health bar. They use a shader which fills up the texture with a color based on a number which is the health or stamina. The health does nothing right now but stamina is drained by punching and regenerates on a rate that depends on what state you are in.
I added a gun to the game! It uses the same inverse kinematics structure for the right hand as before but also supplies an aim direction to ApplyArmIK which controls where the hands will point to. The gun transform is directly controlled by the hand and points in the direction of the palm to the tip of the fingers. I also copied my OpenAL implementation from my previous engine and added a shooting sound whenever you shoot the gun.
I fixed the texture importing from the FBX file. I was using a custom shader in blender for the skin and it wasn’t exporting the texture because of that. I also needed to adjust the export settings and changed the gamma settings on the texture importer.
Inventory! The inventory system procedurally generates item slots and checks if the slots are hovered and if they are and there’s an item inside them, then clicking them will make the item follow the cursor and on release, they will check if the hovered slot can fit the item and adds it to that slot.
I added fog and a sky texture. Most of the time in this devlog was spent on modelling an enemy but I felt like it wasn’t inspired enough and was too generic so I’ll come up with a better design tomorrow.
Map editor! I added an editor bool to the global engine state and that controls whether the editor GUI is drawn and whether the player system runs or not. I also added some stuff like moving objects by clicking on them and adding stuff to the scene like grass blades. The way that the mouse to world space conversion works is that the cursor position is multiplied with the inverse of the projection matrix and this gives a direction in world space which is used as a raycast and if it hits anything, the object will be spawned at the hit position.
Grass! I added a grass renderer component, and every entity with it is looped and their transform is added to a vector of grass matrices which are fed to the grass shader and drawn using instancing. You can also add grass through the map editor which is pretty cool. The grass vertex shader generates a random vector using simplex noise and uses that as the sway direction for the blade of grass. The grass fragment shader uses a gradient with three colors applied from bottom to top.
Grass culling! All grass objects are now divided into chunks and sub chunks and sub chunks of those sub chunks. If a chunk is not in the view frustum, then it is culled. This greatly saves on performance. The grass is also a different color now. So is the ground.
I added voronoi fracturing to the game. I added CGAL and boost to the dependencies to help with the math. Shooting the gun will shoot a ray cast in front of the camera and whatever object is hit is dismantled (fractured).
I mostly made editor improvements and modeling roads and buildings.
I modeled a building in Blender using the buildify addon. I also worked on the fracturing more and made every mesh in a model its own static mesh and the fracture now makes a sphere cast and targets every mesh found in a certain radius.
I worked on the final changes and added sponza as the scene you play in. Final devlog before shipping.
Ships:
I made a basic 3D game which has you control a skeletally animated character....
|
1793771615.2567065
|
1793858015.2567065
|
|
52932
|
Tidy by @CassianWray | Stardance
|
CassianWray
|
1
|
7.0
|
96
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T19:33:15Z", "hours": 7.0, "multiplier": 11.67, "payout": 96, "blessing": "neutral", "text": "I made a QoL tool that helps immensely with table formatting and structured table downloading. It has 3 features: Paste a url and it scrapes the site to gather the table data and structure them in a proper CSV, TSV, JSON, or md format and makes it easy to use in any projects. If URL is not it then you can just copy and paste the entire table no matter how messy and it will format and structure them for the file types I mentioned. It has a citation feature. When you use the URL feature and add the URL there is a button at the bottom for cite this site instead when pressed it the citations for the table will be given so that you can use it for any research or credit purposes. The most challenging part of this project was probably deployment. When I tested it locally it was working fine and instantaneously so I just did the basic deploy in vercel but I found out that when the sites are pinged from a remote server it blocks access most of the time categorizing it as a bot attack so fixing that was probably a hasstle. Other than that it was quite fun to make this project. And also since I need structured tables quite a bit as well for my projects so this tool will help those like me.", "repo": "https://github.com/Beelzebubo/Tidy", "demo": "https://tidy-three.vercel.app/"}]...
|
[{"post_id": 54687, "ts": "202 [{"post_id": 54687, "ts": "2026-08-25T19:03:09Z", "hours": 0.5472, "text": "I finally completed the site. The site is live now at https://tidy-three.vercel.app/ give it a try. Also best bet is to probably copy and paste the table to be fair or clone the repo and run it locally since a lot of sites block the request from remote servers or highly restrict data given and results are not that good. I mean give it a try and if its to your liking well there you go if not well just copy the entire table and paste it and down a structured csv or other format files"}, {"post_id": 54452, "ts": "2026-08-25T14:00:40Z", "hours": 1.9844, "text": "I finally completed the UI. For the UI I used basic HTML, CSS along with JS so it was relatively fast. I kept the design of the webpage basic deliberately so its easy to navigate and understand the function of the page in an instant. The entire thing is already completed I just need some time to debug some issues and format the code a bit better so I probably will devlog it quite soon."}, {"post_id": 53648, "ts": "2026-08-24T09:40:43Z", "hours": 2.115, "text": "Finally completed the drag and drop mechanism, the citation logic and learnt how to clean up and fix messy tables."}, {"post_id": 53075, "ts": "2026-08-23T14:12:15Z", "hours": 2.2456, "text": "I am working on a tool that cleans data and structures them in a clean table. It also supports url to data gathering or you can just copy and paste the data you want. It gives you the option to download the data in different formats being CSV, TSV, JSON and md. It also has a citation features for the URL so after entering the url if you want to download the citation in proper structured format as well it will help with that as well."}]...
|
Title: Tidy by @CassianWray | Stardance
Devlogs:
Title: Tidy by @CassianWray | Stardance
Devlogs:
I am working on a tool that cleans data and structures them in a clean table. It also supports url to data gathering or you can just copy and paste the data you want. It gives you the option to download the data in different formats being CSV, TSV, JSON and md. It also has a citation features for the URL so after entering the url if you want to download the citation in proper structured format as well it will help with that as well.
Finally completed the drag and drop mechanism, the citation logic and learnt how to clean up and fix messy tables.
I finally completed the UI. For the UI I used basic HTML, CSS along with JS so it was relatively fast. I kept the design of the webpage basic deliberately so its easy to navigate and understand the function of the page in an instant. The entire thing is already completed I just need some time to debug some issues and format the code a bit better so I probably will devlog it quite soon.
I finally completed the site. The site is live now at https://tidy-three.vercel.app/ give it a try. Also best bet is to probably copy and paste the table to be fair or clone the repo and run it locally since a lot of sites block the request from remote servers or highly restrict data given and results are not that good. I mean give it a try and if its to your liking well there you go if not well just copy the entire table and paste it and down a structured csv or other format files
Ships:
I made a QoL tool that helps immensely with table formatting and structured table downloading. It has 3 features: Paste a url and it scrapes the site to gather the table data and structure them in a proper CSV, TSV, JSON, or md format and makes it easy to use in any projects. If URL is not it then you can just copy and paste the entire table no matter how messy and it will format and structure them for the file types I mentioned. It has a citation feature. When you use the URL feature and add the URL there is a button at the bottom for cite this site instead when pressed it the citations for the table will be given so that you can use it for any research or credit purposes. The most challenging part of this project was probably deployment. When I tested it locally it was working fine and instantaneously so I just did the basic deploy in vercel but I found out that when the sites are pinged from a remote server it blocks access most of the time categorizing it as a bot attack so fixing that was probably a hasstle. Other than that it was quite fun to make this project. And also since I need structured tables quite a bit as well for my projects so this tool will help those like me....
|
1793771611.831456
|
1794635611.831456
|
|
37991
|
My first slack bot! by @jumanovabarno1991 | Starda My first slack bot! by @jumanovabarno1991 | Stardance...
|
jumanovabarno1991
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @jumanovabarno1991 | Title: My first slack bot! by @jumanovabarno1991 | Stardance...
|
1793771610.9450202
|
1794376410.9450202
|
|
37480
|
My own site! by @deb_beura | Stardance
|
deb_beura
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-22T16:06:36Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple bio about myself using HTML, CSS, and JavaScript. This bio goes through (for now) my goals and my current skill set. The bio will update throughout the time being of the Stardance program.", "repo": "https://github.com/Deb-The-Dabber/hactimebio", "demo": "https://deb-the-dabber.github.io/hactimebio/"}]...
|
[{"post_id": 32731, "ts": "202 [{"post_id": 32731, "ts": "2026-07-22T02:19:27Z", "hours": 1.1983, "text": "Adding more to my UI"}]...
|
Title: My own site! by @deb_beura | Stardance
Dev Title: My own site! by @deb_beura | Stardance
Devlogs:
Adding more to my UI
Ships:
I made a simple bio about myself using HTML, CSS, and JavaScript. This bio goes through (for now) my goals and my current skill set. The bio will update throughout the time being of the Stardance program....
|
1793771610.0645616
|
1794635610.0645616
|
|
33513
|
Untitled by @Darshu | Stardance
|
Darshu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Darshu | Stardance
|
1793771609.177231
|
1794376409.177231
|
|
17103
|
NebulaOS by @azure | Stardance
|
azure
|
2
|
18.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T04:12:01Z", "hours": 1.0, "multiplier": 5.63, "payout": 5, "blessing": "neutral", "text": "I Created a web os space themed with 5 apps and 3 backgrounds with an app bar, drop downs, and music player with tileable windows and adjustable sizes", "repo": "https://github.com/BraedynL0530/web-os", "demo": "https://web-os-hh4f.vercel.app/boot"}, {"ship_num": 2, "ts": "2026-06-21T07:22:03Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a web OS, it has an app launcher, basic window management such as dragging, resizing, closing, maximizing and ok snapping, music player with YouTube links, various apps, changeable backgrounds, an app launcher at bottom, meant to look like riced linux but im not the best at frontend. its spaced themed, some of the apis aren’t consistent like weather rate limits and privacy may mess it up, currently media server so music player isn’t working, debugging that now. when it does work it’ll be instant as backed is separate.", "repo": "https://github.com/BraedynL0530/web-os", "demo": "https://web-os-hh4f.vercel.app/boot"}]...
|
[{"post_id": 23926, "ts": "202 [{"post_id": 23926, "ts": "2026-07-07T04:11:07Z", "hours": 0.375, "text": "Final finished the playlist issue now it should run fine, music works, slight ui changes nothing too noticeable."}, {"post_id": 22611, "ts": "2026-07-05T05:07:25Z", "hours": 0.5686, "text": "removed refrences to backend opting for invisible i frame as i couldnt figure it out, it now has quing and autoplay/loops videos now. working on cleaning up ui, and ill try to get titles of music."}, {"post_id": 12971, "ts": "2026-06-21T07:05:12Z", "hours": 0.4353, "text": "Polishing for deployment."}, {"post_id": 12944, "ts": "2026-06-21T05:43:49Z", "hours": 0.8317, "text": "final devlog, i added window management, ship ill add the jpgs for backgrounds in, i tried to fit all the apps in menu in here but gave up so it looks like this, had a minor hitch topbar was hiding controls so i had to add more offset for that. final-ish desktop environment look"}, {"post_id": 12913, "ts": "2026-06-21T04:32:34Z", "hours": 4.0825, "text": "GIANT dev log heres what i added: fixed media handling, now it displays song title, saves, and more, made windows fit no matter if they are maximized or not. added calculator, notes, terminal, and snake(the game) apps. added a few gifs, fixed weather api. Added background handling into settings menu despite no images a bunch of styling, but mainly debugging the window issue which was stupid simple fix i didn’t see but that took forever, and media server being inconstant, one issue was that local storage wouldn’t save as an array causing the frontend to crash and just dispaly black, more with snake logic and matching it to screen. and a few minor issues like weather api not working rate limits, and more. everything is functional as of now, next ill add background images then tiling/window management because its pretty cluttered right now. but this feels like it took less time than it says, mainly debugging, styling, and a few new apps."}, {"post_id": 12350, "ts": "2026-06-20T04:39:19Z", "hours": 4.1592, "text": "Test devlog, wakatime has been glitched at 2:51/ 59minutes in my ide seeing if this fixes it"}, {"post_id": 11083, "ts": "2026-06-18T03:50:36Z", "hours": 1.2617, "text": "i fixed the dragging issues, windows now work fully and fixed the background issue on whiteboard, all controls work as well, added a dropdown(css and functionality isn’t fully finished) and re aligned some things in top bar. no real issues on this one other than i cant draw with an mouse, i wanna make music work next and app searching would be nice, ill try to finish all of this by today or tomorrow"}, {"post_id": 10909, "ts": "2026-06-17T21:41:36Z", "hours": 1.1758, "text": "WIP: desktop environment, Filler is for icons, forgot about drop-down and i think i wanna add a background to time and move it to the right, works well. i had trouble with using components functions from desktop because i didn’t realize React doesn’t work like python with component.method() so i had to refactor a small chunk of code but now that works, another issue i haven’t fixed yet is: weather isn’t displaying, and currently react-dragable doesn’t work with Vite so i need to re configure or make my own. its coming out pretty good though. ill fix CSS then dragable, and add more apps, Hopefully a background too and test out music."}, {"post_id": 8453, "ts": "2026-06-14T01:47:08Z", "hours": 1.6211, "text": "Created app launcher, made windows draggable, added routing so i can test tho blank screens as half finished, fixed music API and made backend for it using an old project and decided to stream instead of downloading in backed and keeping it in local storage(not yet but it will) so that everyone doesn’t have to share the same music and i don’t need to host all the mp3s. also added an whiteboard app and placeholders for others. one struggle is tiling not sure how ill do that just yet, and another was deciding how i would get music since HTML is limited to browser i cant just sync browser visuals to music or control it i need to stream the music. also spelling was an issue for a bit and i still cant see my desktop due to references to stuff that’s incomplete and no CSS. good work so far though, i plan to polish add more apps and try to get a simple tiling system along with just floating windows next. and having desktop visible. same SS for now, promise next one will have a visual update (;ŏ﹏ŏ;)"}, {"post_id": 7872, "ts": "2026-06-13T04:11:13Z", "hours": 0.6658, "text": "created window manager now i can close, min/max windows, and display apps in theory no data or CSS to back it up. top-bar has features basically done i do need to finish and get assets for the drop down in it so placeholders for now. one issue ive been having is that react is very annoying and a lot of moving parts to set up stuff im more used to python. going to develop some apps and backend, set up nav, fix dragging because i didnt add that ablity yet, and create launcher and bg next. img is still boot screen i think i should add stars in background as well."}, {"post_id": 7779, "ts": "2026-06-13T00:07:28Z", "hours": 1.3011, "text": "Improved boot menu, i added ASCII Saturn to right of terminal and made loading bar inside terminal window. started work on window manager, placeholder for api.js, added clock in top-bar placeholder for more features, and begin work for windows.jsx. i realized react doesn’t work like python so i cant dynamically render apps like i wanted to in windows so ill have to have to change how apps will be rendered. no CSS for top bar yet. i plan to complete top-bar features next update and have working windows/app launching."}, {"post_id": 7309, "ts": "2026-06-12T05:37:36Z", "hours": 1.2728, "text": "Creating the welcome/bootscreen rough draft complete., made desktop and project skeleton with dynamic apps/launching for future starting topbar. react is hard and i need to sync animations better as well as continue work on more features. ill complete topbar and windows next."}]...
|
Title: NebulaOS by @azure | Stardance
Devlogs:
Cr Title: NebulaOS by @azure | Stardance
Devlogs:
Creating the welcome/bootscreen rough draft complete., made desktop and project skeleton with dynamic apps/launching for future starting topbar. react is hard and i need to sync animations better as well as continue work on more features. ill complete topbar and windows next.
Improved boot menu, i added ASCII Saturn to right of terminal and made loading bar inside terminal window. started work on window manager, placeholder for api.js, added clock in top-bar placeholder for more features, and begin work for windows.jsx. i realized react doesn’t work like python so i cant dynamically render apps like i wanted to in windows so ill have to have to change how apps will be rendered. no CSS for top bar yet. i plan to complete top-bar features next update and have working windows/app launching.
created window manager now i can close, min/max windows, and display apps in theory no data or CSS to back it up. top-bar has features basically done i do need to finish and get assets for the drop down in it so placeholders for now. one issue ive been having is that react is very annoying and a lot of moving parts to set up stuff im more used to python. going to develop some apps and backend, set up nav, fix dragging because i didnt add that ablity yet, and create launcher and bg next. img is still boot screen i think i should add stars in background as well.
Created app launcher, made windows draggable, added routing so i can test tho blank screens as half finished, fixed music API and made backend for it using an old project and decided to stream instead of downloading in backed and keeping it in local storage(not yet but it will) so that everyone doesn’t have to share the same music and i don’t need to host all the mp3s. also added an whiteboard app and placeholders for others. one struggle is tiling not sure how ill do that just yet, and another was deciding how i would get music since HTML is limited to browser i cant just sync browser visuals to music or control it i need to stream the music. also spelling was an issue for a bit and i still cant see my desktop due to references to stuff that’s incomplete and no CSS. good work so far though, i plan to polish add more apps and try to get a simple tiling system along with just floating windows next. and having desktop visible. same SS for now, promise next one will have a visual update (;ŏ﹏ŏ;)
WIP: desktop environment, Filler is for icons, forgot about drop-down and i think i wanna add a background to time and move it to the right, works well. i had trouble with using components functions from desktop because i didn’t realize React doesn’t work like python with component.method() so i had to refactor a small chunk of code but now that works, another issue i haven’t fixed yet is: weather isn’t displaying, and currently react-dragable doesn’t work with Vite so i need to re configure or make my own. its coming out pretty good though. ill fix CSS then dragable, and add more apps, Hopefully a background too and test out music.
i fixed the dragging issues, windows now work fully and fixed the background issue on whiteboard, all controls work as well, added a dropdown(css and functionality isn’t fully finished) and re aligned some things in top bar. no real issues on this one other than i cant draw with an mouse, i wanna make music work next and app searching would be nice, ill try to finish all of this by today or tomorrow
Test devlog, wakatime has been glitched at 2:51/ 59minutes in my ide seeing if this fixes it
GIANT dev log heres what i added: fixed media handling, now it displays song title, saves, and more, made windows fit no matter if they are maximized or not. added calculator, notes, terminal, and snake(the game) apps. added a few gifs, fixed weather api. Added background handling into settings menu despite no images a bunch of styling, but mainly debugging the window issue which was stupid simple fix i didn’t see but that took forever, and media server being inconstant, one issue was that local storage wouldn’t save as an array causing the frontend to crash and just dispaly black, more with snake logic and matching it to screen. and a few minor issues like weather api not working rate limits, and more. everything is functional as of now, next ill add background images then tiling/window management because its pretty cluttered right now. but this feels like it took less time than it says, mainly debugging, styling, and a few new apps.
final devlog, i added window management, ship ill add the jpgs for backgrounds in, i tried to fit all the apps in menu in here but gave up so it looks like this, had a minor hitch topbar was hiding controls so i had to add more offset for that. final-ish desktop environment look
Polishing for deployment.
removed refrences to backend opting for invisible i frame as i couldnt figure it out, it now has quing and autoplay/loops videos now. working on cleaning up ui, and ill try to get titles of music.
Final finished the playlist issue now it should run fine, music works, slight ui changes nothing too noticeable.
Ships:
I made a web OS, it has an app launcher, basic window management such as dragging, resizing, closing, maximizing and ok snapping, music player with YouTube links, various apps, changeable backgrounds, an app launcher at bottom, meant to look like riced linux but im not the best at frontend. its spaced themed, some of the apis aren’t consistent like weather rate limits and privacy may mess it up, currently media server so music player isn’t working, debugging that now. when it does work it’ll be instant as backed is separate.
I Created a web os space themed with 5 apps and 3 backgrounds with an app bar, drop downs, and music player with tileable windows and adjustable sizes...
|
1793771608.3266873
|
1794635608.3266873
|
|
39805
|
I want to build computer and design by @YANI | Sta I want to build computer and design by @YANI | Stardance...
|
YANI
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: I want to build computer and design by @YAN Title: I want to build computer and design by @YANI | Stardance...
|
1793771607.4453428
|
1794376407.4453428
|
|
7181
|
Echo by @Churu | Stardance
|
Churu
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-10T06:54:37Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Jarvis 2.0 (Echo) is a desktop AI assistant/software built to automate tasks, launch apps, process commands, and act as a customizable personal assistant. The biggest challenge was connecting different systems together cleanly while keeping everything fast and organized. I’m most proud that it feels like a real product instead of separate scripts. To test it, install dependencies, run the app, and try the built-in commands/features listed in the README.", "repo": "https://github.com/jasersans1-create/Echo", "demo": "https://github.com/jasersans1-create/Echo/releases/tag/v1.0.0"}]...
|
[{"post_id": 5465, "ts": "2026 [{"post_id": 5465, "ts": "2026-06-09T08:11:16Z", "hours": 0.0, "text": "Echo is a simple but powerful Slack bot built to make communication inside a team feel smoother, faster, and less messy. It is designed with the idea that a good bot should not just sit there and reply, but should actually help people get things done without making them waste time on small repetitive tasks. Echo focuses on making everyday workspace interaction easier by responding quickly, keeping things organized, and acting like a helpful digital teammate inside Slack. The project reflects a practical and modern approach to automation, where the goal is not to make something flashy for no reason, but to build something genuinely useful, clean, and easy to work with. What makes Echo special is that it is meant to feel natural in a team environment — simple enough for anyone to use, but still smart enough to be helpful in real workflows. It shows a clear interest in building tools that save time, improve productivity, and make collaboration feel more effortless. Overall, Echo is a thoughtful first step into building real-world assistant software, and it has the foundation to grow into a very capable and reliable workspace companion. It opens apps and websited on command, even though yet it is only configured for Apps like Browsers, Games, Terminal, Useful apps like VS Code it is a very useful assistant, coming along with two modes - GUI and CLI This is GUI , CLI is just normal terminal where you can speak In my Arch i have set it as an automatic startup app in background so it doesnt show and whenever i press the hotkey that i have used for it i.e “Ctrl + Space” it turns on and as soon as i speak the name it recognises and opens the app for me"}]...
|
Title: Echo by @Churu | Stardance
Devlogs:
Echo i Title: Echo by @Churu | Stardance
Devlogs:
Echo is a simple but powerful Slack bot built to make communication inside a team feel smoother, faster, and less messy. It is designed with the idea that a good bot should not just sit there and reply, but should actually help people get things done without making them waste time on small repetitive tasks. Echo focuses on making everyday workspace interaction easier by responding quickly, keeping things organized, and acting like a helpful digital teammate inside Slack. The project reflects a practical and modern approach to automation, where the goal is not to make something flashy for no reason, but to build something genuinely useful, clean, and easy to work with. What makes Echo special is that it is meant to feel natural in a team environment — simple enough for anyone to use, but still smart enough to be helpful in real workflows. It shows a clear interest in building tools that save time, improve productivity, and make collaboration feel more effortless. Overall, Echo is a thoughtful first step into building real-world assistant software, and it has the foundation to grow into a very capable and reliable workspace companion. It opens apps and websited on command, even though yet it is only configured for Apps like Browsers, Games, Terminal, Useful apps like VS Code it is a very useful assistant, coming along with two modes - GUI and CLI This is GUI , CLI is just normal terminal where you can speak In my Arch i have set it as an automatic startup app in background so it doesnt show and whenever i press the hotkey that i have used for it i.e “Ctrl + Space” it turns on and as soon as i speak the name it recognises and opens the app for me
Ships:
Jarvis 2.0 (Echo) is a desktop AI assistant/software built to automate tasks, launch apps, process commands, and act as a customizable personal assistant. The biggest challenge was connecting different systems together cleanly while keeping everything fast and organized. I’m most proud that it feels like a real product instead of separate scripts. To test it, install dependencies, run the app, and try the built-in commands/features listed in the README....
|
1793771606.5643485
|
1794635606.5643485
|
|
13634
|
hackpad by @reimunyancat | Stardance
|
reimunyancat
|
1
|
8.23
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T07:30:08Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Designing the case was a real chore; it was so difficult. I haven’t completely decided on the keymap yet, but I plan to think about the firmware after I receive and assemble it.", "repo": "https://github.com/reimunyancat/hackpad", "demo": ""}]...
|
[{"post_id": 45490, "ts": "202 [{"post_id": 45490, "ts": "2026-08-12T00:52:29Z", "hours": 4.2317, "text": "Since I was installing the module myself, the fit wasn’t quite right, so I had to make adjustments while going back and forth between the PCB and the case. It was truly difficult, but… I managed to pull it off."}, {"post_id": 12594, "ts": "2026-06-20T15:55:22Z", "hours": 1.5261, "text": "Finished the PCB, so this round was all about the case. I went with a sandwich design: a bottom shell that holds the PCB and a top plate with 14mm cutouts the switches snap into, bolted together with M3×16 screws into heatset inserts.I modeled the whole thing myself in Fusion 360 — bottom case, top plate, and the full assembly. Everything’s dimensioned around the real part measurements: 0.2mm tolerance on the mating surfaces, a USB-C cutout on the side wall for the XIAO, and openings for the encoder knob and the OLED. Six standoffs inside keep the board from flexing.Exported all three parts as .STEP (Bottom.STEP, Top.STEP, assembled-model.STEP) — STEP keeps the exact geometry, and the print team converts to STL on their end. Whole thing fits well within the 200×200×100mm limit.Case = done. Next up: firmware."}, {"post_id": 7499, "ts": "2026-06-12T14:39:09Z", "hours": 1.5156, "text": "I installed Fusion to design a case for the PCB; I calculated the dimensions and entered them into the parameters list to streamline future work."}, {"post_id": 5425, "ts": "2026-06-09T05:57:59Z", "hours": 0.6561, "text": "I have finished designing the PCB board. It was my first time doing this, so it was tough constantly searching and asking AI, but I am glad to have completed it anyway."}, {"post_id": 5386, "ts": "2026-06-09T04:04:34Z", "hours": 0.3842, "text": "Start PCB layout — Create a 19.05mm custom grid and arrange 9 switches in a 3x3 configuration, placing diodes D1 through D9 below each switch in the same direction. Place the XIAO, encoder (SW10), and OLED header (J1) around the grid (detailed positioning in progress)."}]...
|
Title: hackpad by @reimunyancat | Stardance
Devlo Title: hackpad by @reimunyancat | Stardance
Devlogs:
Start PCB layout — Create a 19.05mm custom grid and arrange 9 switches in a 3x3 configuration, placing diodes D1 through D9 below each switch in the same direction. Place the XIAO, encoder (SW10), and OLED header (J1) around the grid (detailed positioning in progress).
I have finished designing the PCB board. It was my first time doing this, so it was tough constantly searching and asking AI, but I am glad to have completed it anyway.
I installed Fusion to design a case for the PCB; I calculated the dimensions and entered them into the parameters list to streamline future work.
Finished the PCB, so this round was all about the case. I went with a sandwich design: a bottom shell that holds the PCB and a top plate with 14mm cutouts the switches snap into, bolted together with M3×16 screws into heatset inserts.I modeled the whole thing myself in Fusion 360 — bottom case, top plate, and the full assembly. Everything’s dimensioned around the real part measurements: 0.2mm tolerance on the mating surfaces, a USB-C cutout on the side wall for the XIAO, and openings for the encoder knob and the OLED. Six standoffs inside keep the board from flexing.Exported all three parts as .STEP (Bottom.STEP, Top.STEP, assembled-model.STEP) — STEP keeps the exact geometry, and the print team converts to STL on their end. Whole thing fits well within the 200×200×100mm limit.Case = done. Next up: firmware.
Since I was installing the module myself, the fit wasn’t quite right, so I had to make adjustments while going back and forth between the PCB and the case. It was truly difficult, but… I managed to pull it off.
Ships:
Designing the case was a real chore; it was so difficult. I haven’t completely decided on the keymap yet, but I plan to think about the firmware after I receive and assemble it....
|
1793771605.7000515
|
1794635605.7000515
|
|
29923
|
My own site! by @Churu | Stardance
|
Churu
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T12:30:36Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal site telling my info, i dont know why my new time is not being added due to which I cannot add one more devlog so i will write here that I completed with the CSS and final product came better than i Thought it was not that tough for a project, i added smooth scrolling and buttons hover feature because i can :)) had fun making this thanks for reviewing me.", "repo": "https://github.com/jasersans1-create/MySite", "demo": "https://jasersans1-create.github.io/MySite/"}]...
|
[{"post_id": 30085, "ts": "202 [{"post_id": 30085, "ts": "2026-07-17T11:56:33Z", "hours": 0.1761, "text": "Almost done with the Basic HTML part and this was easy, easier than i thought i cant lie i thought this would be much more tougher i mean its not my first time and compared to my previous projects this was kind of easy , i love completing hackclub’s missions, and the guide also made it so much easier, ngl It took me some to write and think becauase no AI usage really is bad, but Guide helped alot throughout the way i cant lie, so uhh i am then done and will start CSS now"}]...
|
Title: My own site! by @Churu | Stardance
Devlogs Title: My own site! by @Churu | Stardance
Devlogs:
Almost done with the Basic HTML part and this was easy, easier than i thought i cant lie i thought this would be much more tougher i mean its not my first time and compared to my previous projects this was kind of easy , i love completing hackclub’s missions, and the guide also made it so much easier, ngl It took me some to write and think becauase no AI usage really is bad, but Guide helped alot throughout the way i cant lie, so uhh i am then done and will start CSS now
Ships:
I made a personal site telling my info, i dont know why my new time is not being added due to which I cannot add one more devlog so i will write here that I completed with the CSS and final product came better than i Thought it was not that tough for a project, i added smooth scrolling and buttons hover feature because i can :)) had fun making this thanks for reviewing me....
|
1793771604.8455427
|
1794635604.8455427
|
|
58010
|
simplenotes by @jaydenn_71 | Stardance
|
jaydenn_71
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T02:23:40Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "SimpleNotes I made a really basic notes app so that I can improve my Tailwind, Supabase, and JSX skills. Was migrated from macondo cause I was too lazy to deploy it to gh pages and then I forgot so here it is!", "repo": "https://github.com/jade-ore/simplenotes", "demo": "https://jade-ore.github.io/simplenotes/"}]...
|
[{"post_id": 65138, "ts": "202 [{"post_id": 65138, "ts": "2026-09-10T02:13:23Z", "hours": 0.4625, "text": "Final Devlog Making Demo It was honestly a matter of copying and pasting and then editing some logic. Overall no problems. I think I’m ready to ship!"}, {"post_id": 61874, "ts": "2026-09-05T01:06:34Z", "hours": 0.7275, "text": "Simplenotes Devlog 2 Making things clean Basically editing would delete the progress and making new notes wouldn’t clear the previous notes so I just fixed that Starting on demo I tried some things out using the “? :” thing but for some reason it wouldn’t compile so I did some research and I realized I needed to use react dom router which would have to make me switch the gh pages config and everything and I’ll do that tomorrow"}, {"post_id": 61234, "ts": "2026-09-04T02:09:56Z", "hours": 5.6297, "text": "Devlog for the website Backstory I made this a bit ago for Macondo but I got really lazy and didn’t want to deploy it and then I forgot about it and then I only remembered recently that I actually had this project. Website I made a small CRUD app with authentication using Supabase. It’s a really basic notes app (which doesn’t even work right now cause supabase is down ) that has authentication by email."}]...
|
Title: simplenotes by @jaydenn_71 | Stardance
Dev Title: simplenotes by @jaydenn_71 | Stardance
Devlogs:
Devlog for the website Backstory I made this a bit ago for Macondo but I got really lazy and didn’t want to deploy it and then I forgot about it and then I only remembered recently that I actually had this project. Website I made a small CRUD app with authentication using Supabase. It’s a really basic notes app (which doesn’t even work right now cause supabase is down ) that has authentication by email.
Simplenotes Devlog 2 Making things clean Basically editing would delete the progress and making new notes wouldn’t clear the previous notes so I just fixed that Starting on demo I tried some things out using the “? :” thing but for some reason it wouldn’t compile so I did some research and I realized I needed to use react dom router which would have to make me switch the gh pages config and everything and I’ll do that tomorrow
Final Devlog Making Demo It was honestly a matter of copying and pasting and then editing some logic. Overall no problems. I think I’m ready to ship!
Ships:
SimpleNotes I made a really basic notes app so that I can improve my Tailwind, Supabase, and JSX skills. Was migrated from macondo cause I was too lazy to deploy it to gh pages and then I forgot so here it is!...
|
1793771603.6694937
|
1793858003.6694937
|
|
35077
|
My own site! by @BeyondTheKeys | Stardance
|
BeyondTheKeys
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @BeyondTheKeys | Stardance
|
1793771602.7836623
|
1794376402.7836623
|
|
9004
|
Trisolaris by @martin_chen_au | Stardance
|
martin_chen_au
|
1
|
14.0
|
212
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T04:05:10Z", "hours": 14.0, "multiplier": 15.92, "payout": 212, "blessing": "neutral", "text": "I finished Trisolaris! After fighting with camera zooming and clamping, I finally have a visually smooth and cohesive real-time TUI sim of three bodies, in three glorious, distance-scaled colours, in braille. After confirming renders, saving, and infinite-brute-force methods work, I updated README with screenshots and uploaded to PyPi. Hope you like it; it’s available with pip install trisolaris (or other package managers, e.g. uv tool install trisolaris).", "repo": "https://github.com/BitPeppr/3-body", "demo": "https://pypi.org/project/trisolaris/"}]...
|
[{"post_id": 9052, "ts": "2026 [{"post_id": 9052, "ts": "2026-06-15T03:33:32Z", "hours": 1.4514, "text": "Uploaded to Pypi! You can now use with pip install trisolaris."}, {"post_id": 8623, "ts": "2026-06-14T10:36:43Z", "hours": 1.2508, "text": "Camera optimisations (more advanced smoothing and stricter body-within-frame regulation), plus more presets :D"}, {"post_id": 7996, "ts": "2026-06-13T10:30:59Z", "hours": 0.9603, "text": "Added colour averaging (direct average without squares or roots; seems to look more convincing!), presets (figure 8 and ephemeral twirls for now), along with other minor changes. Screenshot shows colour averaging; green and blue overlap become a more greyish colour."}, {"post_id": 7446, "ts": "2026-06-12T12:22:20Z", "hours": 0.7869, "text": "Added artificial damping (unrealistic but more pretty for live rendering) for TUI live mode, along with other QoL improvements and optimisations"}, {"post_id": 7413, "ts": "2026-06-12T10:44:20Z", "hours": 1.195, "text": "Updated visuals, and optimised variuos aspects (e.g. trail logic, anti-singularity, etc.) while adding more cli flags for customisation (e.g. trail length). Experimented and found a few presets for cool behaviour (more intertwined path, not instantly ejecting out into infinity). Planning to add a systematic –preset flag soon!"}, {"post_id": 7296, "ts": "2026-06-12T05:00:13Z", "hours": 0.6253, "text": "Infinite TUI mode! Implemented a continuous, live simulation, not unlike a terminal-based screensaver. (Forgot to update devlogs; this took much longer than 36 minutes)"}, {"post_id": 7256, "ts": "2026-06-12T03:16:18Z", "hours": 4.6847, "text": "Added infinite automatic config finder with judging mechanism, to brute-force try configurations and categorise them into interesting (e.g. butterly, figure-8), uninteresting (straying off into infinity), or unsure (complex patterns for human review)"}, {"post_id": 3084, "ts": "2026-06-05T23:52:50Z", "hours": 3.245, "text": "Early renders"}]...
|
Title: Trisolaris by @martin_chen_au | Stardance
Title: Trisolaris by @martin_chen_au | Stardance
Devlogs:
Early renders
Added infinite automatic config finder with judging mechanism, to brute-force try configurations and categorise them into interesting (e.g. butterly, figure-8), uninteresting (straying off into infinity), or unsure (complex patterns for human review)
Infinite TUI mode! Implemented a continuous, live simulation, not unlike a terminal-based screensaver. (Forgot to update devlogs; this took much longer than 36 minutes)
Updated visuals, and optimised variuos aspects (e.g. trail logic, anti-singularity, etc.) while adding more cli flags for customisation (e.g. trail length). Experimented and found a few presets for cool behaviour (more intertwined path, not instantly ejecting out into infinity). Planning to add a systematic –preset flag soon!
Added artificial damping (unrealistic but more pretty for live rendering) for TUI live mode, along with other QoL improvements and optimisations
Added colour averaging (direct average without squares or roots; seems to look more convincing!), presets (figure 8 and ephemeral twirls for now), along with other minor changes. Screenshot shows colour averaging; green and blue overlap become a more greyish colour.
Camera optimisations (more advanced smoothing and stricter body-within-frame regulation), plus more presets :D
Uploaded to Pypi! You can now use with pip install trisolaris.
Ships:
I finished Trisolaris! After fighting with camera zooming and clamping, I finally have a visually smooth and cohesive real-time TUI sim of three bodies, in three glorious, distance-scaled colours, in braille. After confirming renders, saving, and infinite-brute-force methods work, I updated README with screenshots and uploaded to PyPi. Hope you like it; it’s available with pip install trisolaris (or other package managers, e.g. uv tool install trisolaris)....
|
1793771601.9036543
|
1794635601.9036543
|
|
55448
|
roShaN OS by @projectroshan917 | Stardance
|
projectroshan917
|
1
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T13:34:04Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This OS is based on my name roShaN OS where you can use multiple apps and games as well websites. Features: Websites: You can access my My portfolio website My Boba website NASA gallery Google Apps: You can access app like: Calculator Also can play games like tick tac toe and snake game You can get some info about me in about Roshan section. You can save your sticky notes here. And You can listen 11 different musics here without internet. You can Customise roShaN OS according to to your need and choice by selecting colour theamnad changing background here. To make this OS AI is also used.", "repo": "https://github.com/Roshan-coder123/roShaN-OS", "demo": "https://roshan-coder123.github.io/roShaN-OS/"}]...
|
[{"post_id": 56618, "ts": "202 [{"post_id": 56618, "ts": "2026-08-28T13:31:56Z", "hours": 11.1761, "text": "I made my own named customized web OS."}]...
|
Title: roShaN OS by @projectroshan917 | Stardance
Title: roShaN OS by @projectroshan917 | Stardance
Devlogs:
I made my own named customized web OS.
Ships:
This OS is based on my name roShaN OS where you can use multiple apps and games as well websites. Features: Websites: You can access my My portfolio website My Boba website NASA gallery Google Apps: You can access app like: Calculator Also can play games like tick tac toe and snake game You can get some info about me in about Roshan section. You can save your sticky notes here. And You can listen 11 different musics here without internet. You can Customise roShaN OS according to to your need and choice by selecting colour theamnad changing background here. To make this OS AI is also used....
|
1793771601.02411
|
1794635601.02411
|
|
29610
|
Unspillable cup by @kayceej | Stardance
|
kayceej
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Unspillable cup by @kayceej | Stardance
|
1793771600.1548328
|
1794376400.1548328
|
|
51646
|
My own site! by @lukas_56376 | Stardance
|
lukas_56376
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T12:11:29Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello, this is my first project here and also my first website, without major Ai usage, the only AI usage was debugging the CSS, everything else island written!", "repo": "https://github.com/Lukas-56376/My-Website---Lukas", "demo": "https://lukas-56376.github.io/My-Website---Lukas/"}]...
|
[{"post_id": 50906, "ts": "202 [{"post_id": 50906, "ts": "2026-08-20T11:41:22Z", "hours": 1.5767, "text": "Heya, just finished V1 of my Website, do you have any ides or suggestions?"}]...
|
Title: My own site! by @lukas_56376 | Stardance
D Title: My own site! by @lukas_56376 | Stardance
Devlogs:
Heya, just finished V1 of my Website, do you have any ides or suggestions?
Ships:
Hello, this is my first project here and also my first website, without major Ai usage, the only AI usage was debugging the CSS, everything else island written!...
|
1793771599.3004491
|
1794635599.3004491
|
|
29247
|
Void Drifter by @juny62017 | Stardance
|
juny62017
|
1
|
11.0
|
109
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T17:35:06Z", "hours": 11.0, "multiplier": 10.3, "payout": 109, "blessing": "neutral", "text": "I made this space shooter game because stardance is on space themed so i thought to make something on space this is cool and best complete the whole 12 wave and get a 100 words compliment from me", "repo": "https://github.com/juny62017/void-drifter", "demo": "https://juny62017.github.io/void-drifter/"}]...
|
[{"post_id": 22264, "ts": "202 [{"post_id": 22264, "ts": "2026-07-04T17:18:31Z", "hours": 0.7342, "text": "Finished the final pass today.Most of the time went into balancing the difficulty. Enemy speed now increases based on the current wave, so the last few waves become genuinely hectic without feeling completely unfair.I also added a victory screen for completing all 12 waves. The game-over screen now highlights when the player beats their previous high score. Finally, I removed leftover console logs, cleaned up a few rough sections of code, and checked the full game from start to finish. Twelve commits, no external dependencies, and everything built with plain JavaScript"}, {"post_id": 22181, "ts": "2026-07-04T14:44:41Z", "hours": 1.0578, "text": "Added sound effects today without using any external audio files. Everything is generated through the Web Audio API. The laser sound is made from a square wave that quickly drops in pitch. Explosions use filtered noise with a short volume envelope, and power ups play a quick rising sequence of notes.The sounds are simple, but they add far more to the game than I expected."}, {"post_id": 21763, "ts": "2026-07-03T21:09:32Z", "hours": 0.605, "text": "No major gameplay changes today. I focused entirely on making the existing mechanics feel better. Enemies now break into small particles when destroyed instead of simply disappearing. The player briefly flashes white after taking damage, and newly spawned enemies fade in rather than suddenly appearing on screen. They are all fairly small changes, but together they make shooting and hitting things feel much more satisfying."}, {"post_id": 21616, "ts": "2026-07-03T17:34:51Z", "hours": 1.2361, "text": "The later waves were becoming almost impossible, so today was all about powerups.Destroyed enemies now have a 10% chance to drop one. There are three types: a shield that rotates around the player, rapid fire that reduces the weapon cooldown, and a wide shot that fires three bullets at once. Each effect lasts for a limited amount of time, so I also added small HUD indicators showing which power-ups are active and how much time they have left."}, {"post_id": 21425, "ts": "2026-07-03T11:20:32Z", "hours": 0.5689, "text": "Worked on the HUD today. The score and lives are now drawn directly onto the canvas so they match the rest of the game. I also added a kill streak multiplier. It increases as you destroy enemies without taking damage and can reach a maximum of 5x. It gives the player a reason to take more risks instead of always staying near the bottom of the screen.Lives are displayed using small ship icons rather than a number, and the high score is now saved with localStorage, so it remains there after closing or refreshing the page."}, {"post_id": 21042, "ts": "2026-07-02T20:17:44Z", "hours": 0.8056, "text": "The enemy spawning code was starting to become a mess, so I rebuilt it as a wave system.There are now 12 planned waves. Each one controls which enemies appear, how many spawn, and how quickly they enter. Once a wave is cleared, the game pauses for a moment, displays a warning message, and then begins the next one. This made a much bigger difference than I expected. The game now has a proper sense of progression instead of feeling like enemies are appearing randomly forever."}, {"post_id": 20956, "ts": "2026-07-02T18:07:23Z", "hours": 1.0456, "text": "The original enemy became predictable pretty quickly, so I added two more types. One moves from side to side in a wave pattern, while the other stops near the top of the screen and fires back at the player. Enemy bullets use their own reusable object pool, separate from the player’s bullets. I also added a short invincibility period after the player takes damage. Without it, getting caught inside several overlapping bullets could remove every life almost instantly. The game is noticeably harder now."}, {"post_id": 20850, "ts": "2026-07-02T15:50:27Z", "hours": 0.8239, "text": "Devlog 5 Added the first enemy today. It is a small burnt orange shape that appears at a random position near the top of the screen and moves straight downward. I set up a basic spawn timer and added collision detection between the player’s bullets and the enemies. Enemies can now be destroyed, and each kill increases the score. Watching the first one disappear after being hit was probably the first moment the project actually felt like a game."}, {"post_id": 20690, "ts": "2026-07-02T11:02:32Z", "hours": 0.5044, "text": "Shooting works now. Instead of constantly creating and deleting bullet objects, I made a pool of 100 bullets that get reused throughout the game. When a bullet is fired, one inactive bullet is switched on, and once it leaves the screen, it becomes available again. It should help avoid unnecessary slowdowns during longer sessions.I also added a short firing cooldown so holding the button down does not fill the entire screen with bullets."}, {"post_id": 20658, "ts": "2026-07-02T09:50:48Z", "hours": 1.1425, "text": "Devlog 3 Got the player ship onto the screen today. I kept the design simple: a small slate cyan triangle drawn directly on the canvas. The first movement system felt really stiff because the ship started and stopped instantly. I replaced it with acceleration and friction, so now it gradually picks up speed and slides to a stop. It feels much better. I also added a subtle engine glow while the ship is moving and stopped it from leaving the screen boundaries."}, {"post_id": 20597, "ts": "2026-07-02T06:51:03Z", "hours": 0.9394, "text": "DEVLOG 2 Added the starfield today. It uses three layers of small canvas drawn stars, with each layer moving at a different speed to give the background a bit of depth. No images involved.I also changed the plain black background to a very dark navy, which already makes it feel more like space. The main menu is in now too, with the game title and a blinking “Press Enter to Start” message in a simple typewriter style font. It is finally beginning to look like a game."}, {"post_id": 20192, "ts": "2026-07-01T18:59:15Z", "hours": 1.1681, "text": "DEVLOG 1 Started with a completely blank screen today. No libraries or frameworks, just plain HTML and JavaScript. I spent most of the time setting up the basic game loop so movement should stay smooth across different screens and refresh rates. Theres just blank screen ( space themed background) and i changed the mouse pointer"}]...
|
Title: Void Drifter by @juny62017 | Stardance
Dev Title: Void Drifter by @juny62017 | Stardance
Devlogs:
DEVLOG 1 Started with a completely blank screen today. No libraries or frameworks, just plain HTML and JavaScript. I spent most of the time setting up the basic game loop so movement should stay smooth across different screens and refresh rates. Theres just blank screen ( space themed background) and i changed the mouse pointer
DEVLOG 2 Added the starfield today. It uses three layers of small canvas drawn stars, with each layer moving at a different speed to give the background a bit of depth. No images involved.I also changed the plain black background to a very dark navy, which already makes it feel more like space. The main menu is in now too, with the game title and a blinking “Press Enter to Start” message in a simple typewriter style font. It is finally beginning to look like a game.
Devlog 3 Got the player ship onto the screen today. I kept the design simple: a small slate cyan triangle drawn directly on the canvas. The first movement system felt really stiff because the ship started and stopped instantly. I replaced it with acceleration and friction, so now it gradually picks up speed and slides to a stop. It feels much better. I also added a subtle engine glow while the ship is moving and stopped it from leaving the screen boundaries.
Shooting works now. Instead of constantly creating and deleting bullet objects, I made a pool of 100 bullets that get reused throughout the game. When a bullet is fired, one inactive bullet is switched on, and once it leaves the screen, it becomes available again. It should help avoid unnecessary slowdowns during longer sessions.I also added a short firing cooldown so holding the button down does not fill the entire screen with bullets.
Devlog 5 Added the first enemy today. It is a small burnt orange shape that appears at a random position near the top of the screen and moves straight downward. I set up a basic spawn timer and added collision detection between the player’s bullets and the enemies. Enemies can now be destroyed, and each kill increases the score. Watching the first one disappear after being hit was probably the first moment the project actually felt like a game.
The original enemy became predictable pretty quickly, so I added two more types. One moves from side to side in a wave pattern, while the other stops near the top of the screen and fires back at the player. Enemy bullets use their own reusable object pool, separate from the player’s bullets. I also added a short invincibility period after the player takes damage. Without it, getting caught inside several overlapping bullets could remove every life almost instantly. The game is noticeably harder now.
The enemy spawning code was starting to become a mess, so I rebuilt it as a wave system.There are now 12 planned waves. Each one controls which enemies appear, how many spawn, and how quickly they enter. Once a wave is cleared, the game pauses for a moment, displays a warning message, and then begins the next one. This made a much bigger difference than I expected. The game now has a proper sense of progression instead of feeling like enemies are appearing randomly forever.
Worked on the HUD today. The score and lives are now drawn directly onto the canvas so they match the rest of the game. I also added a kill streak multiplier. It increases as you destroy enemies without taking damage and can reach a maximum of 5x. It gives the player a reason to take more risks instead of always staying near the bottom of the screen.Lives are displayed using small ship icons rather than a number, and the high score is now saved with localStorage, so it remains there after closing or refreshing the page.
The later waves were becoming almost impossible, so today was all about powerups.Destroyed enemies now have a 10% chance to drop one. There are three types: a shield that rotates around the player, rapid fire that reduces the weapon cooldown, and a wide shot that fires three bullets at once. Each effect lasts for a limited amount of time, so I also added small HUD indicators showing which power-ups are active and how much time they have left.
No major gameplay changes today. I focused entirely on making the existing mechanics feel better. Enemies now break into small particles when destroyed instead of simply disappearing. The player briefly flashes white after taking damage, and newly spawned enemies fade in rather than suddenly appearing on screen. They are all fairly small changes, but together they make shooting and hitting things feel much more satisfying.
Added sound effects today without using any external audio files. Everything is generated through the Web Audio API. The laser sound is made from a square wave that quickly drops in pitch. Explosions use filtered noise with a short volume envelope, and power ups play a quick rising sequence of notes.The sounds are simple, but they add far more to the game than I expected.
Finished the final pass today.Most of the time went into balancing the difficulty. Enemy speed now increases based on the current wave, so the last few waves become genuinely hectic without feeling completely unfair.I also added a victory screen for completing all 12 waves. The game-over screen now highlights when the player beats their previous high score. Finally, I removed leftover console logs, cleaned up a few rough sections of code, and checked the full game from start to finish. Twelve commits, no external dependencies, and everything built with plain JavaScript
Ships:
I made this space shooter game because stardance is on space themed so i thought to make something on space this is cool and best complete the whole 12 wave and get a 100 words compliment from me...
|
1793771598.444416
|
1794635598.444416
|
|
42267
|
cosmo-tab by @dineshkarthik | Stardance
|
dineshkarthik
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-01T17:01:07Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built CosmoTab , a custom new tab page with a big clock and greeting, Quick Access links with a “+” button, and a sticky‑note board, all saved in localStorage so they persist. The hardest parts were wiring the Quick Access modal so add/edit/delete stayed in sync with stored data, and making sticky notes behave like a mini app with done/edit/delete actions and a responsive grid layout. I’m proud that it feels like a real tool I’d actually use every day, with a clean left–right layout, personalized greeting, and animated pixel avatar instead of a plain static page. To test it, open the live demo, fill in your name and avatar, then add some quick links and notes—refresh the page and confirm everything (name, links, and notes) is still there and all the buttons still work.", "repo": "https://github.com/Karthik-854321/newtab-cosmo", "demo": "https://newtab-cosmo.vercel.app/"}]...
|
[{"post_id": 38735, "ts": "202 [{"post_id": 38735, "ts": "2026-08-01T09:05:30Z", "hours": 1.0511, "text": "🚀 Final Devlog: CosmoTab (newtab-cosmo)🌟 ✨ Summary of Work Done:🌌 UI & Layout Design: Crafted a sleek, responsive space-themed layout with modern glassmorphism styling.✅ Core Features Integration: Built an interactive todo list for daily tasks and a quick-links grid for instant navigation.🛠️ Polishing & Cleanup: Cleaned the codebase, organized final repo files, added styling credits, and verified cross-browser performance."}, {"post_id": 38686, "ts": "2026-08-01T06:19:28Z", "hours": 0.5597, "text": "#H1 Quick Links online! 🚀A new tab page is only as good as the speed it gives your workflow. Today, I added a pill-styled Quick Links bar to CosmoTab for instant access to my daily hubs: Stardance, GitHub, and Hackatime.Using Flexbox and dark slate capsule styling, the links sit front-and-center with a subtle hover-lift effect. Now, jumping into deep focus mode is just one clean click away!"}, {"post_id": 38103, "ts": "2026-07-31T09:58:20Z", "hours": 0.31, "text": "#H1 **Building CosmoTab: Teaching my browser tab to talk to NASA ** ✨ What I Built & Why It’s CuteA Tab That Knows Me: I added a personal touch so it greets me by name (“Good morning, Karthik” or “Good night, Karthik” depending on the hour). It feels like having a tiny friend cheering me on when I’m coding late.Real Space Magic: Instead of a plain dark background, CosmoTab now hooks straight into NASA’s APOD (Astronomy Picture of the Day) API. Every time I open a tab, it quietly pulls a real, breathtaking photo from space and uses it as a softly blurred background, paired with NASA’s daily cosmic titles!Glassmorphism Vibes: I wrapped everything in a floating, frosted-glass card with clean gradients so it looks modern, calming, and easy on the eyes.It’s simple, it’s cozy, and it actually makes me excited to open a new tab and write some code. 🚀"}, {"post_id": 38078, "ts": "2026-07-31T09:18:59Z", "hours": 0.3369, "text": "“Added live Clock and Date for CosmoTab” Today I implemented a clock and date display for my CosmoTab new tab page. I added two divs with ids clock and date in index.html.In script.js, I wrote an updateClock() function that uses Date() to get the current time and formats it with toLocaleTimeString(). For the date, I use toLocaleDateString() with options to show the weekday, month, day, and year.I styled the clock and date in style.css so they stand out and use a readable font. Now when I open my new tab, I see the current time and date updating every second.Next, I plan to add a personalized greeting based on time of day and start designing the layout with a space-themed background."}]...
|
Title: cosmo-tab by @dineshkarthik | Stardance
De Title: cosmo-tab by @dineshkarthik | Stardance
Devlogs:
“Added live Clock and Date for CosmoTab” Today I implemented a clock and date display for my CosmoTab new tab page. I added two divs with ids clock and date in index.html.In script.js, I wrote an updateClock() function that uses Date() to get the current time and formats it with toLocaleTimeString(). For the date, I use toLocaleDateString() with options to show the weekday, month, day, and year.I styled the clock and date in style.css so they stand out and use a readable font. Now when I open my new tab, I see the current time and date updating every second.Next, I plan to add a personalized greeting based on time of day and start designing the layout with a space-themed background.
#H1 **Building CosmoTab: Teaching my browser tab to talk to NASA ** ✨ What I Built & Why It’s CuteA Tab That Knows Me: I added a personal touch so it greets me by name (“Good morning, Karthik” or “Good night, Karthik” depending on the hour). It feels like having a tiny friend cheering me on when I’m coding late.Real Space Magic: Instead of a plain dark background, CosmoTab now hooks straight into NASA’s APOD (Astronomy Picture of the Day) API. Every time I open a tab, it quietly pulls a real, breathtaking photo from space and uses it as a softly blurred background, paired with NASA’s daily cosmic titles!Glassmorphism Vibes: I wrapped everything in a floating, frosted-glass card with clean gradients so it looks modern, calming, and easy on the eyes.It’s simple, it’s cozy, and it actually makes me excited to open a new tab and write some code. 🚀
#H1 Quick Links online! 🚀A new tab page is only as good as the speed it gives your workflow. Today, I added a pill-styled Quick Links bar to CosmoTab for instant access to my daily hubs: Stardance, GitHub, and Hackatime.Using Flexbox and dark slate capsule styling, the links sit front-and-center with a subtle hover-lift effect. Now, jumping into deep focus mode is just one clean click away!
🚀 Final Devlog: CosmoTab (newtab-cosmo)🌟 ✨ Summary of Work Done:🌌 UI & Layout Design: Crafted a sleek, responsive space-themed layout with modern glassmorphism styling.✅ Core Features Integration: Built an interactive todo list for daily tasks and a quick-links grid for instant navigation.🛠️ Polishing & Cleanup: Cleaned the codebase, organized final repo files, added styling credits, and verified cross-browser performance.
Ships:
I built CosmoTab , a custom new tab page with a big clock and greeting, Quick Access links with a “+” button, and a sticky‑note board, all saved in localStorage so they persist. The hardest parts were wiring the Quick Access modal so add/edit/delete stayed in sync with stored data, and making sticky notes behave like a mini app with done/edit/delete actions and a responsive grid layout. I’m proud that it feels like a real tool I’d actually use every day, with a clean left–right layout, personalized greeting, and animated pixel avatar instead of a plain static page. To test it, open the live demo, fill in your name and avatar, then add some quick links and notes—refresh the page and confirm everything (name, links, and notes) is still there and all the buttons still work....
|
1793771597.5645483
|
1794635597.5645483
|
|
37491
|
Stealth Calculator by @revilo | Stardance
|
revilo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Stealth Calculator by @revilo | Stardance
|
1793771596.7015393
|
1794376396.7015393
|
|
57563
|
Tree Guesser by @vaiskiainen | Stardance
|
vaiskiainen
|
1
|
6.0
|
17
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-03T15:04:02Z", "hours": 6.0, "multiplier": 5.46, "payout": 17, "blessing": "neutral", "text": "🌲 Tree Guesser This is a pretty simple game made for me to study for a test. In the game you are presented with images of a tree and you have to pick the correct option on what the tree is.", "repo": "https://github.com/Vaiskiainen/tree-guesser", "demo": "https://tree-guesser.pages.dev/"}]...
|
[{"post_id": 60863, "ts": "202 [{"post_id": 60863, "ts": "2026-09-03T14:22:51Z", "hours": 0.8089, "text": "soo.. uhh.. I made the order randomized and added english translations. Almost ready to ship. Also huge credits to my biology teacher for these images"}, {"post_id": 60444, "ts": "2026-09-02T19:37:19Z", "hours": 0.8333, "text": "I made this really simple UI for the app. It’s currently only in finnish but I’ll also translate it to english eventually"}, {"post_id": 60399, "ts": "2026-09-02T18:16:42Z", "hours": 4.5744, "text": "I’m just getting started on this project (idk why tf is says 4.5h) and nothing yet really. I will probably be using some AI for this since I need to actually also study"}]...
|
Title: Tree Guesser by @vaiskiainen | Stardance
D Title: Tree Guesser by @vaiskiainen | Stardance
Devlogs:
I’m just getting started on this project (idk why tf is says 4.5h) and nothing yet really. I will probably be using some AI for this since I need to actually also study
I made this really simple UI for the app. It’s currently only in finnish but I’ll also translate it to english eventually
soo.. uhh.. I made the order randomized and added english translations. Almost ready to ship. Also huge credits to my biology teacher for these images
Ships:
🌲 Tree Guesser This is a pretty simple game made for me to study for a test. In the game you are presented with images of a tree and you have to pick the correct option on what the tree is....
|
1793771595.844515
|
1794635595.844515
|