Update Version (Beta): login + leaderboard
This commit is contained in:
@@ -4,7 +4,9 @@ A Wordle-style game with one shared word for every UTC hour.
|
||||
|
||||
## Supabase setup
|
||||
|
||||
The app can enforce the shared hourly word with Supabase/Postgres. Run `supabase/schema.sql` in your Supabase SQL editor, enable anonymous sign-ins in Supabase Auth, then fill in `supabase-config.js`:
|
||||
The app can enforce the shared hourly word with Supabase/Postgres. Run `supabase/schema.sql` in your Supabase SQL editor, then run `supabase/seed-word-data.sql` to load all answers and accepted guesses.
|
||||
|
||||
Enable the Email provider in Supabase Auth. The UI signs users in with email and password; if the account is missing, it reveals account creation with username, email, and password. Then fill in `supabase-config.js`:
|
||||
|
||||
```js
|
||||
window.FANCY_WORDLE_SUPABASE = {
|
||||
@@ -13,10 +15,18 @@ window.FANCY_WORDLE_SUPABASE = {
|
||||
}
|
||||
```
|
||||
|
||||
The database chooses the word from `public.wordle_words` based on the current UTC hour, so everyone who plays during the same hour gets the same answer.
|
||||
The database chooses the word from `public.wordle_words` based on the current UTC hour, so everyone who plays during the same hour gets the same answer. Signed-in users submit guesses through Supabase, which validates guesses, scores tiles, stores completed rounds, and calculates synced stats.
|
||||
|
||||
`supabase/schema.sql` seeds the first 120 target words. Add more rows to `public.wordle_words` if you want a longer no-repeat cycle.
|
||||
The hourly leaderboard uses completed authenticated rounds for the current UTC hour. It ranks wins first, then fewer guesses, then earliest completion time.
|
||||
|
||||
Leaderboard tabs include this hour, today, and all time. Signed-in users are included even if their row falls outside the top 25. Stats also show recent personal history and this hour's average score summary.
|
||||
|
||||
`supabase/seed-word-data.sql` is generated from `targetWords.json` and `dictionary.json`:
|
||||
|
||||
```sh
|
||||
node scripts/generate-supabase-word-seed.mjs
|
||||
```
|
||||
|
||||
If Supabase is not configured, the app falls back to a browser-only hourly lock using the same deterministic hourly word calculation from `targetWords.json`.
|
||||
|
||||
Anonymous auth enforces the limit per browser session. For stronger per-person enforcement, replace anonymous sign-in with email or OAuth sign-in.
|
||||
Guest play uses local browser storage. Sign in with email and password to persist scores across devices.
|
||||
|
||||
Reference in New Issue
Block a user