๐Ÿ† Fitness Challenge

How scoring works

The short version: you're scored against your own baseline, not raw totals โ€” so everyone's starting fitness level and schedule is accounted for.

1. Consistency โ€” the main score

You earn 1 point per day you log at least 20 minutes of any activity. That's it โ€” the primary score is just "did you show up," not how hard or how long.

Consistency score = qualifying days ร— (1 + streak multiplier)

2. The streak multiplier โ€” two rest requirements, not one

On top of the base score, each qualifying day in a row adds +10% to your multiplier. Two separate rules keep that from just rewarding never stopping:

๐Ÿ”ฅ Day streak, capped at 4. Go more than 4 days in a row without a rest day (any day under 20 minutes), and the multiplier doesn't just stop climbing โ€” it locks at 0. You can keep logging workouts just fine, they just won't earn a streak bonus until you actually take a rest day. One rest day clears it and a fresh streak starts building from your next qualifying day.

๐Ÿชซ Deload gate, every 3 weeks. A "deload week" is a completed week with fewer than 4 active days. Go more than 3 weeks in a row without one, and the multiplier is forced to 0 regardless of your day-to-day rest habits โ€” even a perfect day streak won't score โ€” until you take an actual lighter week.

The leaderboard shows which state you're in: a streak count with its bonus %, or "๐Ÿ˜ด rest needed" / "๐Ÿชซ deload needed" if a gate has closed.

3. Bonus โ€” your adaptive personal target, per activity

You can log workouts in whatever unit fits the activity โ€” minutes, miles, or sessions, chosen per entry, not locked to one thing for your whole account. Each unit you use gets its own adaptive target, tracked separately:

target = max(your floor, 1.05 ร— your average over the last 3 weeks in that unit)

So if you've been averaging 100 minutes/week, next week's minutes target is about 105 โ€” a small, steady push rather than a fixed goal that's either too easy or too hard. The floor only applies to your default unit (set at signup, changeable by the admin) โ€” any other unit you try starts adapting from scratch. A unit you only try once doesn't keep dragging your average down after you stop using it; each unit's tracking just stops where your use of it stops.

Each week scores up to 150 points per unit: hitting exactly 100% of target = 100 points, capped at 1.5ร— target = 150 points so one huge week can't carry your whole season. Your overall bonus score is the average across every (week, unit) combination you've been active in โ€” not a running total โ€” so joining partway through, or trying a second activity, doesn't put you at a disadvantage.

4. ๐ŸŒญ Hot dog equivalents โ€” just for fun

Your logged minutes are converted to a rough calorie estimate (~7 kcal/minute) and then to "hot dogs" (250 kcal each). This is display only โ€” it doesn't affect your score at all. It's also a rough estimate, not a real measurement โ€” different activities burn calories at very different rates.

Total score

Total = consistency score + bonus score

Consistency is the primary driver and grows the longer you participate; the bonus is a smaller weekly modifier layered on top. That weighting is deliberate โ€” showing up matters more than hitting an exact number.

This is a first pass at the streak/rest rules and still being tuned โ€” if something about it feels off in practice, that's useful signal, not a bug report. See the full project spec in SPEC.md if you want the original brief this was built from.