How the countdown works
The countdown updates every second directly in the browser. On each tick it computes the difference between the current time and the next occurrence of the configured birthday.Auto-roll to next year
Once the birthday has passed, the target date automatically advances to the same month and day in the following year. You do not need to update any configuration after each birthday.Birthday day celebration screen
When all four countdown units reach zero — meaning today is the birthday — the timer is hidden and replaced with:- A large 生日快乐 (Happy Birthday) heading
- The
greetingmessage you set in your config, or the default"祝你生日快乐" - A 送上祝福 button that links directly to
/writeso visitors can leave a wish immediately
Floating lyrics animation
Throughout the home page, short song lyric snippets float up from random positions and fade out over five seconds. A new snippet appears every two seconds. These ambient lyrics are rendered with a CSS animation that floats them upward before fading out.Configuring the birthday date
The birthday date and display name are set inlib/birthday-config.ts. The file exports a BirthdayPerson interface and a birthdayConfig object.
The countdown uses the local system time of the visitor’s browser, not a server clock. If the birthday lands at midnight in a specific timezone, visitors in other timezones will see the celebration screen at a slightly different local time.