Skip to main content

01 · Personal product

WhatToWear.

A phone app that turns the weather, your own clothes and where you're going into one honest outfit answer.

  • Product, design and code
  • Mar 2026 ⁠–⁠ now
  • Pre-launch, in development
Today for Chicago in the morning, in warm cream: Wear now, feels like 64°F, the clothes to wear and No safety guarantee

One day in Chicago

Drag the sun across the sky, or focus it and use the arrow keys.

Morning

Wear now · Feels like 64°F

Warm cream in the morning. The same plan, in the app's own colours for that part of the day.

Morning· The answer

One answer first, from your own clothes.

Today opens on one conclusion, here “No jacket needed”, with the felt temperature and the next change under it. The reasons are one tap away, not in the way.

The plan is chosen only from the clothes you have listed, never from a catalogue. The solver tries sets of them against structure, layering and weather checks; each check passes, fails or stays unknown, and it looks at no more than 8,192 sets for one answer.

Conclusion firstYour wardrobe only8,192 sets at most
Today for Chicago: No jacket needed, feels 64° and dry until 2 PM, the clothes to wear, and rain likely at 2 PM on the rail below

Heading out· The commute

Your commute, stage by stage.

A usual commute proposes the day's window. Once you confirm it, the plan is what you wear and pack at the door, checked against each stage's own hourly forecast; sheltered stages check only that the outfit holds together, and nothing is re-chosen after you leave.

Up to 6 stages · stages with zero minutes are skipped

  1. Heading out

    What you wear and pack at the door

    • Blue Oxford Shirt
    • Grey Wool Trousers
    • Brown Leather Shoes
    • Merino Socks
  2. Walking

    12 min

    Checked against this stage's hourly forecast

  3. Waiting

    6 min

    Checked against this stage's hourly forecast

  4. On board

    20 min

    Sheltered: checks only that the outfit holds together

  5. Indoors

    0 min

    Zero minutes: skipped

  6. Return

    Checked against this stage's hourly forecast

A rough area, never your spot.

A precise location is used only for the weather request and a short cache. What is kept is an area rounded to a tenth of a degree, about 11 km north to south, and saved places, up to 12, are matched by that area.

Noon· Feels like

Felt temperature, by the NWS formulas.

When the forecast's own apparent temperature is missing, the app works it out with the National Weather Service formulas: wind chill at 50 °F and below with wind over 3 mph, the heat index from 80 °F, and the air temperature in between.

In the app this is the fallback: Open-Meteo's apparent temperature is used when it is there.

41 unit tests

Feels like

NWS formulas, as in feltTemperature.ts

Air temperature

64 °F18 °C

  • Wind chill: 50 °F or below, wind over 3 mph
  • Heat index: 80 °F or above
  • Air temperature: anything in between

2 PM· Rain likely

Rain at 2 PM, and nothing waterproof confirmed.

Rain needs a waterproof layer and none is confirmed, so the plan is held back as Limited guidance and the gap is named.

It asks whether that rain jacket is waterproof: Yes, No or Not sure. Only your answer counts as evidence; a catalogue tag, a name or a photo never does.

Waterproof layer needed

Is your Rain jacket waterproof?

Only if sure · This item only

  • Structure: top, bottom, shoes, socksPasses
  • Layering: nothing clashesPasses
  • Weather: a confirmed waterproof layerUnknown

Limited guidance

Nothing waterproof confirmed

Candidates

  • Blue Oxford Shirt
  • Grey Wool Trousers
  • Brown Leather Shoes
  • Merino Socks

6 items · 64 sets, under the 8,192 limit. A simplified version of the app's checks, with its test wardrobe.

Every plan carries “No safety guarantee”. The comfort ranking is a preference rule, not a measurement of warmth.

Today in rain: Limited guidance, Nothing waterproof confirmed, and the question Is your Rain jacket waterproof? Yes, No or Not sure

Scroll inside the phone

Evening· A warning

An official warning comes before the outfit.

A National Weather Service warning sits above the outfit, with its instructions one tap away, and holds the plan back: follow official instructions first; a clothing plan does not make travel safe.

Open-Meteo is the one forecast source, checked against the NWS forecast grid; where they disagree, the plan states the limit instead of quietly switching. A failed alert check never counts as no alerts.

Alerts rechecked within 5 min

Today under a Flood Warning in the evening: follow official instructions, and the plan held back as Limited guidance

The app’s screen under a warning · scroll inside

Limits on the card

No limits on the card

The plan

Chicago · Now only

Wear now

Feels like 64°F

Wear

Blue shirt · Shoes · Socks · Trousers

Clothing checks met for now.

After the trip· One question

Learning you can take back.

After a worn, confirmed trip it asks one question: too cold, just right or too warm. Once there are two answers, the felt temperature the plan uses moves by 2 °C times their average, and deleting an answer rebuilds the result from the rest. Skipping it records nothing.

The app's comfort card: Comfort now, with Too cold, Just right and Too warm
The app’s own card, before and after an answer.

Comfort now

After a worn, confirmed trip0 answers so far

Choosing an option records your answer for this trip.
−1 · 0 · +1
Choose to answer

Learning

— °C

0 of 2 answers: no change yet

2 °C × the average, once there are two answers

  • No answers yet

Night· Before a release

A gate before every release.

A release first passes a 12-step local gate: the tests, coverage floors that are never lowered, the production build and the database checks. Its gate result, approval and deployment are recorded apart, and one switch can pause guidance so that every build chooses no clothes and says why.

Release gateStep 1 of 4
npm run quality:gate
  1. 1Local dev-bindings check and its tests
  2. 2Lint
  3. 3Typecheck
  4. 4Core tests
  5. 5Extended tests
  6. 6Preview tests
  7. 7Core coverage gate
  8. 8Production build
  9. 9Core bundle boundary
  10. 10D1 Worker tests
  11. 11D1 Worker typecheck
  12. 12D1 local schema smoke

Gate passed

Recorded apartGate resultApprovalDeployment

In figures

  • 8,192

    outfit sets checked at most for one answer

  • 60

    fixed Chicago scenarios, all passing

  • 2,812

    core tests passed in the 3 Oct 2026 run

  • 12

    steps in the release gate

842 commits on main since 18 March 2026. It began as a broad weather dashboard, with a radar map and travel, climate and seasonal modules that are now paused, and has been phone-only since 4 September 2026.

Built with

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Cloudflare Workers
  • Cloudflare D1
  • Open-Meteo
  • NWS API
  • Vitest
  • Playwright