Skip to content

Monthly challenges

A brief, a deadline, a rule

Every challenge publishes its constraints up front and its winner rule in code — no judging committee, no vibes. The rule is the boring one: every gate must pass, then the highest score wins. Ties break on submission id, which is the order entries arrived.

Open now · closes 2026-10-09

Calmest animated navigation

opened 2026-09-08

A navigation bar that animates on scroll without becoming the loudest thing on the page. Judged on restraint: we want motion people stop noticing.

Constraints

  • Scroll-linked motion must respect prefers-reduced-motion.
  • No layout shift on the first scroll event (CLS must stay flat).
  • Keyboard focus must stay visible the whole way.
  • Under 6 KB shipped, dependencies allowed only if you justify them.

Entries so far

None yet — the brief opened on 2026-09-08. We would rather print a zero than seed a fake leaderboard: the first entry that arrives through the submit flow appears here with its gate line.

Enter the challenge →

Closed · 2026-08-032026-08-31

Build the best preloader

5 entries

A load screen that makes waiting feel shorter: it has to hold attention for two to four seconds without lying about progress it cannot measure.

  • Zero dependencies — no animation library, no spinner package.
  • Under 4 KB shipped, CSS included.
  • Honest progress only: no fake percentage that is really a timer.
  • Reduced-motion path that still communicates waiting.

★ winnerSkeleton handoff loader

CH-109 · @monoflow

score 94lint passsafety pass

Swaps the spinner for the layout's own skeleton at 400 ms — the strongest honesty argument in the batch.

Uncertainty bar

CH-112 · @lena.dev

score 92lint passsafety pass

Never shows a percentage at all — a bar that admits it does not know.

Ink bleed preloader

CH-110 · @noir.studio

score 91lint passsafety pass

Three lines of CSS for the whole visual. Loses points only on the reduced-motion fallback.

Coin flip loader

CH-108 · @karina_ui

score 88lint warnsafety pass

Genuinely lovely motion; the progress ring reads as measured but is actually a 3.2 s loop.

Typing prompt loader

CH-111 · @tttyping

score 86lint passsafety warn

Sandbox flagged a sessionStorage write used to remember the first visit.

Winner by rule: @monoflow at 94 with both gates clean. The entries are sample records from the demo queue, labelled here so the format is visible; real challenges would run the same function over real gate results.

Winners rail

Build the best preloader

Skeleton handoff loader

@monoflow · score 94

Swaps the spinner for the layout's own skeleton at 400 ms — the strongest honesty argument in the batch.

decided 2026-08-31