One word per person, per day. The world's words, set big. Resets at 00:00 UTC.
- Create a Supabase project at https://supabase.com (free tier).
- Run the schema. SQL Editor → paste and run
schema.sql. - Get your keys. Project Settings → API → copy the Project URL and the publishable key (
sb_publishable_...). - Wire them in. Open
index.htmland replaceSUPABASE_URLandSUPABASE_ANON_KEYnear the top of the<script>block. - Run locally. Any static server works:
Open http://localhost:8000.
python3 -m http.server 8000
- Push to a Git repo.
- In Cloudflare Pages, create a new project from the repo. No build command, output directory
/. - Pages → Custom domains → add
mote.day. DNS configures automatically (domain is on Cloudflare Registrar).
- One-word-per-device-per-day is enforced at the database level via a unique index AND an RLS policy with a
not existscheck. - The user's own word is kept in
localStoragefor 24 hours from submission, so it stays visible across the UTC reset. - Profanity filter is a small inline wordlist in
index.html— replace with a real filter when you outgrow it. - Aggregation goes through the
word_countsview to avoid the PostgREST 1000-row cap on the rawwordstable. device_idis a localStorage UUID. Clearing it lets a user submit again. Known v1 limitation.