Hi, how are you? is a way to ask someone how they are, and mean it. You pick a face and its color fills your screen. You send a one-time link; the other person answers first, and only then do you see each other. A global map blends everyone's colors, with no names and no accounts.
The project began on 29 October 2026, playing with text emoticons drawn with ":" eyes and no nose. The working name was Entre dos; that same day it became Hi, how are you?, with the interface in English.
What it does
- Check in. Six emotion-only faces, each with a color assigned by social convention (blue for sadness). No word is attached, so the face stays open to interpretation. An optional note stays private.
- Ask someone. One tap creates an individual link, copied with a small popover and no extra screen. The other person answers first and only then sees your face; you see theirs once they answer. Each link is a closed exchange between two people and works once. There is no chain.
- Both, blended. After the answer, the two colors mix as a soft organic nebula rather than a straight diagonal, with both faces still visible.
- History. A private diary of your own feelings and your shared exchanges, saved in the browser, without accounts. Each record can carry a private note, shared exchanges can be re-copied, and you can delete your own records.
- A global map. Every check-in adds one anonymous pin: a full-viewport blend of everyone's colors, where tapping a face shows the exact date and time it was added. No names, no link back to private exchanges.
Design decisions
- Faces over colors alone. A colors-only version was tried and rejected as too abstract: you cannot tell calm from sadness. Few faces, emotion only, no kisses or jokes.
- Color is the protagonist. Full-screen vibrant gradients, with text directly over the color. The ink adapts: it switches between black and white by contrast, on the map by the dominant luminance. The colors themselves are never darkened for the sake of text.
- The reveal comes after answering. The other person's face is never exposed before you answer, neither in the interface nor in the API.
- No accounts, on purpose. History is tied to the browser. If the browser data is erased, the history cannot be recovered; that trade-off was chosen over sign-ups and recovery links.
- Small warm details. Rounded translucent controls, a random favicon drawn from the app's own faces on every visit, and a toast that confirms a copied link without leaving the screen.
Under the hood
- A single-page app served as the static assets of a Cloudflare Worker, with a small JSON API and a D1 (SQLite) database. Tokens are opaque; there is no identity anywhere.
- Answers are bound with a conditional write, so two people answering the same link at the same moment cannot both get through. Answering your own link is blocked.
- Basic anti-abuse: per-hour rate limits keyed by a hash of the IP, never the raw IP, generous on purpose so real retries are not stopped. A blocked request only reads; it writes nothing.
- When the map gets dense, its color field renders at reduced resolution and CSS upscales it. In a synthetic benchmark (1920 × 1080, 150 pins) rendering went from about 38 seconds to about 1 second, with no visible change. It is a lab benchmark, not a device measurement.
- Zero cost by design: Workers, D1 and Pages on the free plan, where hitting a limit stops requests until the next day instead of billing. Live at hi-how-are-you.pages.dev.
Limitations
- The site has not been verified in Safari on a physical iPhone, including the color strip under the notch. The map benchmark is synthetic.
- History cannot be recovered if the browser data is cleared or the device changes: the price of the no-account model.
- The map shows the exact time of each check-in. An audit suggested rounding it for privacy; showing it was an explicit product decision.
- The screens and the recording in this case study were made on a local copy with example data, not real check-ins.