stardance has been extended another month! the new deadline is october 31 :)

You are browsing as a guest. Sign up (or log in) to start making projects!

ryderklh

@ryderklh

Joined June 1st, 2026

  • 66Devlogs
  • 5Projects
  • 6Ships
  • 84Votes
cheers!
Open comments for this post

4h 6m 41s logged

add dark mode 🌜🌜🌜🌜🌜
fix some problem with html policy

also, a lot of initialization was done outside of init(). when i tried to move it inside, the whole thing blew up because other functions were directly accessing those variables
i have been trying to fix that

0
0
19
Open comments for this post

1h 1m 56s logged

i fixed the home page

it should be able to be used now

done [1], [2]
roadmap [3]

i think i should add some screenshot and introduction

0
0
7
Open comments for this post

2h 46m 48s logged

problems keep popping out

  1. i used to be using a
<a href="
                javascript:(function()
                {
                    const s=document.createElement('script');
                    s.src='http://127.0.0.1:5500/script/notepad.js';
                    document.body.appendChild(s);
                })();
            ">here</a>

i need to change this, because i am going to develope this website into a github page

  1. the CSS i add by using appendChild(“”) is ruining the original webpage
    im gonna solve this by using shadow DOM

  2. bad bg and font color under darkmode

done [2]

roadmap [1], [3]

11 days left

0
0
14
Open comments for this post

2h 36m 34s logged

  1. add delete btn: delete all notes
  2. remove drag btn
  3. add a title where user can hold to drag
  4. add x y width height to local storage
  5. put css into the bookmarklet

i decided to add more bookmarklets, making this project a collection of bookmarklet

roadmap

  • notepad (mostly done)
  • screenshot taker
  • svg sketch
    …
0
0
46
Open comments for this post

4h 42m 59s logged

this is my first time make a bookmarklet
i originally create this for Hacklet, a ysws about bookmarklets, but i prefer a 3d printing credit rather than a domain…

what i made

  1. a demo website
  2. a note container:
  • nav:
    • drag btn
    • opacity btn
    • close btn
  • note box
    • box
    • satisfying scroller bar
  1. automatically save to local storage
0
0
41
Ship

WHAT I MADE/THINK?

I expanded TickTock from a single timer into a multi-tool station (Hub)! This time, I built a Timer and a Stopwatch. It was a huge challenge for me to handle standard browser behaviors, especially turning a single-page SPA into a structured Astro website with a homepage and sub-pages. It took lots of testing, but I feel so proud when everything finally aligned perfectly.

Features

  • Homepage Hub Dashboard
  • Live Countdown
    • Customizable Countdown
    • Full mode / Days mode
    • Change Target Date
    • Edit Event Title
    • automatically save in localStorage & url#
  • Digital Clock
    • 12-hour / 24-hour format
    • 3 Font styles (Sans, Serif, Mono)
    • Fullscreen mode (Header/Footer kept!)
    • Smooth breathing colon animation
    • automatically save in localStorage & url#
  • ⭐Timer
    • ⭐Mutiple timers at one page
    • ⭐Keep going after refreshing website
    • ⭐Circular progress bar
    • ⭐Sortable timers
    • ⭐Alarm and flash on completion
  • ⭐Stopwatch
    • ⭐Mutiple stopwatches at one page
    • ⭐Keep going after refreshing website
    • ⭐Sortable timers
    • ⭐Able to lap and split
    • ⭐Able to copy total time and laps info
  • Time Progress Bar
    • Export as image
    • Switchable hide/show
  • Pomodoro Timer
    • Customable number of cycles
    • Pause at any time
    • Notification Sound
  • Lightweight
  • Light mode/Dark mode
  • Quick link to other tools

WHAT I LEARNT?

  • A lot of new things about git
  • How to write devlogs
  • JS, Astro…

TRY IT!

⭐means new features of the previous ship

  • 16 devlogs
  • 30h
  • 12.69x multiplier
  • 386 Stardust
Try project → See source code →
Open comments for this post

45m 57s logged

Devlog 52: GitHub Pages Audio Path Resolution Fixes

Absolute Repository Subpath Hardcoding

  • Replaced environment variable dynamic paths (import.meta.env.BASE_URL) with direct base-path URLs ('/TickTock/sounds/alarm.wav') in playAlarm().

i have no idea why that happened

2
0
143
Open comments for this post

28m 57s logged

Devlog 51: Asset Migration

Asset Directory Migration

  • Moved audio assets (alarm.wav and notif.wav) from the static /public/sounds/ directory into the source-managed asset pipeline at src/assets/sounds/.

Module Import & Bundler Integration

  • Replaced hardcoded absolute URL paths ("/public/sounds/...") with explicit ES module imports (import alarmSoundUrl from '../assets/sounds/alarm.wav' and import notifSoundUrl from '../assets/sounds/notif.wav') across timer.js and pomodoro.js.
1
0
76
Open comments for this post

1h 0m 34s logged

Devlog 50 Layout Refactoring

Scroll Restructuring

  • Shifted .stopwatch-container layout from vertical wrapping (flex-wrap: wrap) to a single-row horizontal scroll track (flex-wrap: nowrap with overflow-x: auto).
0
0
67
Open comments for this post

2h 52m 44s logged

Devlog 49: Lap Data Export

Plaintext Lap Data Serialization

  • formatLapsOutput: a dedicated text formatter that converts active stopwatch data into structured tab-separated values (TSV) suitable for copying.

Async Clipboard Copy Logic

  • Implemented an async wrapper using navigator.clipboard.writeText() with built-in error handling (try/catch) and user alerts for unsupported environments or clipboard permission rejections.

Interactive Copy Feedback UI

  • Wired copyBtn click events to trigger text copying and dynamically update the button icon (check or error) and theme accent color.
0
0
61
Open comments for this post

1h 5m 2s logged

Devlog 48: DOM Selector Bugfixes & Homepage Quick Access

DOM Query Selector & Reference Repairs

  • Updated querySelector in updateListedStopwatch from target class .listed-stopwatch-demo to parent wrapper .listed-stopwatch[data-id="..."], resolving element lookup failures during live updates.

Homepage

  • Integrated direct links and dedicated preview cards for the Stopwatch application into index.astro and BaseLayout.astro.
1
0
101
Open comments for this post

38m 21s logged

Devlog 47: Pause Compensation

Pause Duration Offset

  • Implemented pauseDuration calculation Date.now() - pauseStartTime during resume actions status === "paused". Shifted all existing lap timestamps lap.endTime += pauseDuration forward to subtract paused time intervals.

State-Aware Timestamp Resolution

  • Standardized timestamp evaluation across renderers handleLap, renderListedStopwatch, updateListedStopwatch, and updateCardUI using ternary state checks:
    const now = stopwatch.status === "running" ? Date.now() : stopwatch.pauseStartTime;
    
    
0
0
79
Open comments for this post

1h 55m 40s logged

Devlog 46: UI Fine-tuning & Timing Logic Optimization

Lap Calculations

-Replaced laps.forEach with for (let j = 0; j <= i; j++) to ensure cumulative total times (totalMS) strictly correspond to the current lap index.

Layout

  • Enhanced formatTime() rendering logic by applying inline styles width, transform: scaleX(0.8), text-align: center to dynamic span elements, preventing font-width shifting during rapid ticker updates.

Dynamic Rendering

  • Integrated updateListedStopwatch() into the global interval loop, enabling sidebar preview labels to tick synchronously with active main cards.
  • Optimized state updates to target individual time elements instead of triggering full list re-renders on every ticker frame.
  • Added optional chaining laps?.[0]?.startTime across rendering pipelines to prevent runtime exceptions when initializing empty stopwatches.
0
0
14
Open comments for this post

3h 38m 25s logged

Devlog 45: Initial Stopwatch Logic & Dynamic State Scaffolding

Core State & Lap Data Architecture

  • Designed a stopwatch schema tracking dynamic state (idle | running | paused) and an array of individual lap records (laps).
  • Streamlined time calculation to compute elapsed milliseconds dynamically directly using timestamps (Date.now() - lap.startTime), eliminating redundant accumulator fields like startTime or elapsedTime.

Interactive Handlers & Lifecycle Operations

  • Implemented core lifecycle handlers: handleStart, handlePause, handleReset, handleLap, and handleDelete.
  • Integrated updateCardUI and updateCardBtns to reflect running, paused, and idle UI visual feedback dynamically.
  • Built active DOM updates for lap histories inside updateCardLapGrid using index-based duration summation for lap and total times.
  • Enabled global runtime updates via startGlobalTick() timer intervals and list reordering via handleMoveStopwatch().
0
0
60
Open comments for this post

4h 5m 49s logged

devlog #6
in track-06 i used the A Dorian
A-B-C-D-E-F#-G

it is not as dark as the previous track

mi opinias, ke gxi ne estas bona, sed gxi estas pli bona ol trako-03

i added some sleep to the main melody, so a part of the music would sound like something different

0
0
7
Open comments for this post

1h 43m 43s logged

Devlog 44: Stopwatch Layout

Template & Layout Migration

  • Ported side-menu and main container structures from Timer to Stopwatch layout (index.astro).
  • Structured sidebar elements: .stopwatch-adding-action-btn and .stopwatch-list-container for dynamic item injection.
  • Added template placeholders (#listed-stopwatch-template and #stopwatch-card-template).

Stopwatch Card & Lap Data Display

  • Integrated core display components: .stopwatch-text and .stopwatch-text-sub.
  • Created interactive control group (.stopwatch-card-action-btn) supporting Start, Pause, Replay, and Lap actions.
  • Designed a 3-column CSS Grid table (.stopwatch-lap-container) to organize lap metrics (i, lap, total).
0
0
98
Open comments for this post

23m 29s logged

Devlog 43: Timer Integration & Navigation Update

Navigation & Home Page Integration

  • Added Timer card entry to the main landing page (tool-card layout with hourglass Material symbol).
  • Added direct Timer link to the global navigation bar in BaseLayout.astro.

Feature Branch Merge

  • Merged feature/timer-main into main, bringing in the new /timer page route, timer.js logic, sound assets (alarm.wav), and updated layout components.

YEAYYY

0
0
109
Open comments for this post

2h 13m 9s logged

devlog #5

track-05 is a copy of track-04
04 is brighter; 05 is darker

i used

  • Am-Bdim-C-Dm-Em-F-G-Am (A minor)
  • bells
  • min7 chord & dom7 chord
  • diminished fifth (not perfect fifth)

just after turning F# C# G# to F C G, it created a obviously dark, gloomy and somber feeling

now i understand why Barkla chose the letter k to start with
thanking my past self for doing that a few days ago…

0
0
9
Open comments for this post

1h 47m 59s logged

Devlog 42: Timer Reordering & List Re-Sorting

Reordering UI Controls

  • Added .sort-action control group with .sort-up and .sort-down arrow buttons to the template layout.

Dynamic Array Mutation & Re-rendering

  • Implemented handleMoveTimer(id, direction) to handle array element swapping with upper and lower boundary bounds checks.
  • Bound click handlers in renderListedTimer() to execute reordering operations, trigger LocalStorage updates, and instantly re-render the UI layout via renderAll().
0
0
64
Open comments for this post

28m 24s logged

Devlog 41: Dual-Text Display & Running Animation

Sub-Text Total Duration Display

  • Added .timer-text-sub element inside the ring container to preserve and display the initial totalSeconds value.
  • Styled sub-text using lighter font weights and var(--text-muted).

Dynamic Running Visual Effects

  • Added .is-running state toggle based on timer.status === "running".
  • Implemented @keyframes timer-text-flash pulsing animation to provide continuous visual feedback while countdown is active.
0
0
111
Loading more…

Followers

Loading…