100/10
Season 01 · Product deck
Built for one user

A 100-day season tracker

One hundred days on. Ten days off. Then again.

100/10 is a season planner and daily check-in built around eight compounds, six stats and one honest number. It doesn’t congratulate you. It tells you what your form is and lets the arithmetic speak.

Read the thinking 12 slides · arrow keys to move
What it is

Borrowed from sport, not from productivity.

100 days on
10–15 days off
Then again

Every serious athlete lives inside a structure that most of us never borrow. They don’t wake up and ask what they feel like doing. They are somewhere in a season — pre-season, mid-season, the run-in — and where they are decides what today costs. There is a training block. There is a coach who tells them the truth. There is a stat sheet nobody can argue with. And at the end there is an off-season, which is not failure or laziness but a scheduled part of the plan.

100/10 takes that structure and hands it to a person who isn’t a professional anything. One hundred days of deliberate work, then ten to fifteen days off, then again. The season is long enough that a bad week can’t define it and short enough that you can see the end from the middle.

Form, not motivation

Footballers talk about being in form or out of form, and everyone understands what that means without a lecture. Form isn’t how badly you want it. It’s what the last few weeks actually produced. A player in form is one whose recent record earns him the shirt; a player out of form doesn’t get to explain it away.

So the app calculates a form score, and it calculates it honestly. Stats grow as a fraction of the distance left to ninety-nine, so early progress is quick and the last stretch is earned. Miss a stat entirely and it drops a flat eight, regardless of how high it climbed. Streaks multiply the whole thing, capped at 1.20×, because consistency compounds in a way that heroic single days never do. Do the work three days out of ten and the arithmetic says so.

The app will never tell you “great job” for a day you didn’t work. That’s the whole contract.

Compounds, because training is bundled

Nobody in a gym does one rep of one exercise and calls it a session. The session is the unit. So the daily check-in works on compounds — small bundles of elements that live or die together. Wake on time, no phone for thirty minutes, walk, skincare: that’s a morning, not four unrelated boxes. Three out of four is an incomplete session, and an incomplete session doesn’t keep the streak alive.

Every element is tagged to one of six stats, and those stats are weighted. That weighting is the honest part: it forces you to say out loud what actually matters this season, and to accept that the thing you weighted at twenty-two per cent will punish you hardest when you skip it.

Everybody’s season looks different

The structure is fixed. The contents are not. A season is defined before it starts — the compounds, the elements inside them, the six stats and what each one is worth, the phases, the weekday anchors, the objectives. Two people can run the same system and share almost nothing on screen.

A musician’s season leans hard on Craft: practice rooms, ear training, a rotating second instrument. Somebody rebuilding after an injury weights Body and Order highest and makes the compounds small enough to actually finish. A person trying to get out of their own way weights Imposition — cold emails, applications, posting the work, refusing the feed — because for them the hard thing was never the effort, it was the exposure. A parent’s season is built around the two hours that are genuinely theirs.

The weights change too. Discipline at twenty-two makes sense for a season about establishing a floor; a later season might drop it to ten and put the weight into Craft because the floor is no longer the problem. Weights are fixed within a season and revisited between them — a scoreboard you can move mid-game isn’t a scoreboard.

What everybody shares is the shape: a defined start, phases that raise the heat, a weekly review that doesn’t flatter, a finish line, and a rest that was planned rather than collapsed into. After the first season a character sheet starts to form — carried stats, best streaks, seasons archived. Not a trophy case. A record you can be held to.

Compounds

Bundles, not checkboxes

Eight compounds, each binary. Every active element gets checked or the compound doesn’t count. Half-done is not done.

Form

Six stats, one score

Discipline, Imposition, Craft, Body, Mind, Order — weighted to 100. Stats grow with work and decay by eight a day without it.

Season

Phases, quests, coach

Three phases gate the heat. Side quests arrive in languages you have to translate. Every week the data goes to a coach that doesn’t flatter.

Season 01 · Ignition

Twelve slides on how it works, and what it looks like in use.

Season 01 · Ignition

100/10

A season tracker that measures form, not effort.

Vite · React · Hono · Postgres One user. No auth. Mobile first.

The shape of a season

Plan two days. Live one hundred. Rest ten.

PRE-SEASON

Define

Goals and weighted compounds are written as data, then seeded straight into the season.

DAYS 1–100

Check in

Binary checks every day. Did it or didn’t. The form score is recomputed from the whole history.

EVERY WEEK

Get told

The week’s data goes to an LLM coach. Direct, unflattering, specific.

AFTER

Archive

Journal, reflect, file it as Season N. Then ten to fifteen quiet days.

The daily surface

Everything the day needs on one screen.

Form leads The number you earned today sits top-right, with the streak and its multiplier under it.
Stats before tasks Six weighted stats show where the season is strong and where it’s bleeding.
Compounds below Only what’s active today. Tap an element, the check writes to Postgres, form recomputes.
100/10
Season 01 · Day 34 / 100
Thursday, Aug 21
Discipline22%
74 /99
Imposition20%
61 /99
Craft18%
68 /99
Body17%
79 /99
Mind13%
55 /99
Order10%
47 /99
Compounds active today 8 active
Compound AMorning Ignition 4/4
Wake within 10 min of alarmDISC
No phone for 30 min after wakingDISC
Compound CThe Guitar Room 2/4
Guitar practiceCRAFT
Ear training (min 15 min)CRAFT
TodaySeasonReviewJournalSheet

The unit of work

A compound is all of it, or none of it.

Habits reward partial credit. Compounds don’t. Compound A is four elements — wake on time, no phone, jog, skincare. Three of four is an incomplete compound, and an incomplete compound breaks the streak.

CompoundElements
A · Morning Ignition4
B · Body Block5
C · The Guitar Room4
D · The Mind Block4
E · Imposition3
F · Creative Output4
G · Environment & Order2
H · Lust Defence4
Compound A Morning Ignition 4/4
Wake within 10 min of alarmDISC
No phone for 30 min after wakingDISC
Morning jog or walkDISC
SkincareDISC

Attacks · Focus · Fear

The scoreboard

Six stats, weighted to exactly one hundred.

StatWhat it holdsWeight
DisciplineMornings, defence, order of operations22
ImpositionCold emails, posting, refusing the feed20
CraftGuitar, chess, drawing, output18
BodyLifting, abs, food, handstands17
MindDeep work, journal, scripture13
OrderMess, deep clean, algorithm hygiene10

Weights sum to

100

Fixed for Season 1. Revisited between seasons, never mid-season — a scoreboard you can move isn’t a scoreboard.

The heart of it

Growth is a fraction of the gap. Decay is flat.

perf = donestat / activestat
growth = (99 − stat) × 0.06 × perf
decay = stat − 8  (nothing done)
clamp = [0, 99]

High stats grow slowly and fall at the same rate as low ones. Getting to 90 is hard; staying there costs a day’s work, every day.

Overall form

raw = Σ(stat × weight) / 100
overall = round(raw × multiplier)

Pure, tested, no snapshots

stats.ts and compounds.ts are pure functions with unit tests beside them. Form is recomputed from the full history on every render.

Why sporadic effort loses

The streak multiplies form. Nothing else does.

StreakMultiplierForm at raw 70
0–4 days1.00×70
5–9 days1.05×74
10–14 days1.10×77
15–19 days1.15×81
20+ days1.20× — capped84

One incomplete compound

→ 0

A streak day means every compound active that day was fully complete. One gap and the multiplier goes back to 1.00.

The map

Three phases. The heat goes up, not down.

01–30
Ignition

Full system live. All compounds active from day one.

31–70
Pressure  ← you are here

Consistency under pressure. Mid-season is where systems die.

71–100
Proving

You are not the same person who started. Prove it.

Weekday anchors

Every weekday carries an intent — Kill Monday, Taco Tuesday, Band practice Thursday, Creative Session Friday. The app surfaces today’s anchor above the checklist.

Season
100 days
Off-season
10–15 days
Compounds
8
Elements
30
Objectives
Tracked, not scored
Temperance
Scheduled, deliberate

Season 1 is data, not a wizard. It’s a TypeScript file the server seeds on first load. Setup only reviews it and starts the clock.

Side quests

A daily prompt, deliberately not in your language.

Translation is the ritual Quests arrive in Japanese, Spanish, French, German, Norwegian. The app never auto-translates — it shows the language tag and leaves the work to you.
Two runs, two cadences Days 1–50 are Prep Room: object-based, every two to three days. Days 51–100 are Mark One: concept-based, every three.
Three in a row unlocks Consecutive completions surface an unlock — a day off, bonus form, something earned rather than given.
100/10
Season 01 · Day 34 / 100
Thursday, Aug 21
Prep Room · JA Day 34

影だけで一枚のポスターを作る。

Mark posted Skip
Completed · ES Day 32

Una piedra, dos colores, tres palabras.

Completed · EN Day 30

Photo of a curtain, edited like a 1970s magazine spread.

Two in a row · one more unlocks

TodaySeasonReviewJournalSheet

Weekly review

The week’s data goes out. Honesty comes back.

Not a cheerleader The coach gets the raw week — every check, every miss, every broken streak — and answers in plain, direct language.
Graded per compound Each compound gets a completion rate for the week, so a single collapsing bundle can’t hide inside a decent average.
Reviews are archived Every week’s note is kept. By week ten the pattern is visible whether you like it or not.
100/10
Season 01 · Day 34 / 100
Week 05 review
Week 05 · Coach

“Your body work is carrying a season your mind block is quietly losing.”

Body is your only stat above seventy-five, and it’s carrying the average. Mind sits at fifty-five because the deep work block went unchecked four days running. The streak broke Wednesday on one missing element — the cheapest kind of loss there is.

Compound grades · week 05
A · Morning Ignition6/7
C · The Guitar Room4/7
D · The Mind Block3/7
H · Lust Defence7/7
TodaySeasonReviewJournalSheet

Across seasons

The sheet is the part that accumulates.

Seasons run

01

Days logged

34

Best streak

12

Quest languages translated

EN · 07JA · 03ES · 02FR · 02DE · 01NO · 01

After Season 1 the sheet stops being a single scoreboard and becomes a record: carried stats, best streaks, seasons archived, languages worked through.

Not a trophy case. A portfolio of growth you can be held to.

How it’s built

Thin server. Honest client. Tested arithmetic.

Client
Vite · React 18 · TypeScript · Tailwind
Server
Hono · Drizzle · Postgres
State
One context, derived in memory
Type
Source Serif 4 · Libre Franklin · JetBrains Mono

No emoji. No gradients. No “great job” when the work wasn’t done.

Season 01 · Ignition · Pressure · Proving

100/10 One user. One season at a time.
01 / 12