How it works

Make it a
Double Day.

Ship code. Move your body. Same calendar day. Verified through GitHub and Strava.

  • Code shipped
  • Body moved
1
Double
Day
Your day. Your timezone.
  1. 01Connect GitHubLink your account
  2. 02Connect StravaLink your account
  3. 03Start your streakShip and move. Same day.

What counts.

Ship
10+
lines of real code

A push containing your own commits.

or
  • A merged PR you authored, any size
  • A release you published
One push counts once. Bots don't count.
See code exclusions
  • *.md, *.mdx, *.txt
  • lockfiles: *.lock, package-lock.json, yarn.lock, pnpm-lock.yaml, Cargo.lock
  • *.log, .gitignore, .env*
  • docs/, .github/, node_modules/, dist/, build/ (at any depth)
  • generated and minified files: *.min.js, *.min.css, *.map
Sweat
20+
minutes of moving time
  • Recorded by a device, GPS or trainer
  • No manual entries or flagged activities
  • Any sport counts
Powered by Strava
Both on the same day =
1Double Day.
Your day. Your timezone.

Keep the streak.

1Rest day /
week
  1. 1One missed day per Monday–Sunday week preserves the streak, but adds no Double Day.
  2. 2A second miss in the same week breaks it.
  3. 3Two missed days in a row always break it, even across weeks.
  4. 4A streak cannot start or end on a rest day.

Today stays in progress until your local midnight.

The details.

Days & timezones
A day is a calendar date in your own timezone, taken from Strava or your browser at sign-up and editable in the dashboard. Changing it recalculates your last 60 days. Commits are dated by the moment GitHub tells us about the push, never by the commit's own timestamp, which can be edited.
Public & private repositories
Public repositories count by default: nothing to install, no access to your code, we read your public GitHub activity every 15 minutes. Private repositories are opt-in: install the Ship & Sweat GitHub App and select only the repositories you want counted. GitHub then grants us read access to their diffs so we can count lines; we store the line counts and discard everything else. Private repository names stay hidden on your profile unless you turn them on.
Leaderboard rankings & tie-breakers
Streak ranks by current streak, This month by Double Days in the current calendar month, All-time by longest streak ever. Ties go to more Double Days this month, then more Double Days overall, then whoever joined first. Makers with zero on the active metric are not listed on that tab.
Fair play & verification
Device-recorded activities only; manual entries and Strava-flagged activities are ignored. Commits are attributed to push time, not commit time. Ten real lines minimum after exclusions. Bots and other people's commits never count toward your day. Every counted day shows its proof on your public profile, and anyone can report a profile.
Your Strava data
Only whether you moved and your streak counts are public. Workout details stay private: distance, duration, pace, routes, sport, names and photos are shown to you alone and never sent to any AI system. Disconnecting Strava purges derived data within one hour.
Ready for your first Double Day?
Back to the leaderboard