Skip to content

livlign/Mote

Repository files navigation

Mote

One word per person, per day. The world's words, set big.

A daily word ritual. Each visitor types one word about their day, and the world's words gather into a live cloud — bigger when more people say the same thing. The canvas resets at 00:00 UTC, and yesterday slips into the history view.

🌐 mote.day · 📜 MIT

Mote — a daily one-word ritual. Type one word about your day; the world's words gather into a live cloud, bigger when more people say the same.

Why

Twitter feeds are loud, polls are leading, and "how are you?" expects "fine." Mote asks for one word and shows you the planet's mood at a glance. No accounts, no comments, no algorithm — just a word and a shared canvas.

How it works

  • One submission per device per day, enforced both by a unique DB index and an RLS policy.
  • Word size on the canvas scales with how many people said it.
  • The cloud refreshes every ~25 seconds and on tab focus.
  • Your own word stays pinned for 24 hours so it survives the UTC reset.
  • A history view (last 7 days, single-day breakdown) lives behind the History button.

Build it yourself

The whole site is one static index.html plus a Supabase schema. No bundler, no framework.

  1. Create a Supabase project, run schema.sql in the SQL editor.
  2. In index.html, replace SUPABASE_URL and SUPABASE_ANON_KEY with yours.
  3. Serve the directory: python3 -m http.server 8000.
  4. Deploy by uploading the folder to any static host. The live site uses Cloudflare Pages: npx wrangler pages deploy . --project-name=mote --branch=main.

A few things worth knowing: the word format is ^[a-z0-9][a-z0-9'_-]{0,19}( [a-z0-9][a-z0-9'_-]{0,19})*$ with a 30-char total cap — short multi-word phrases ("good vibes"), digits, hyphens, underscores, and apostrophes are allowed; non-Latin scripts and most punctuation are not. The profanity filter is a small inline wordlist. Aggregation goes through the word_counts view to dodge PostgREST's 1000-row cap. The publishable key in the source is the anon key — RLS does the work.

Contributing

Issues and PRs welcome. Open an issue before a large change so we can talk through scope. Keep the no-build, single-index.html shape — adding a bundler is a non-goal. New copy should be terse and human; read it aloud before shipping.


MIT © 2026 linhtt. Wordmark in Fraunces; UI in Geist. Hosted on Cloudflare Pages, backed by Supabase.

About

One word a day from everyone, on a shared cloud. What's the world thinking today?

Topics

Resources

License

Stars

Watchers

Forks

Contributors