A daily online puzzle game to guess a secret word. Made using React, Typescript, and Tailwind.
Clone the repository and perform the following command line actions:
$> cd atspek-zodi
$> npm install
$> npm run start
$> docker build -t atspek-zodi:dev -f docker/Dockerfile .
$> docker run -d -p 3000:3000 --name atspek-zodi-dev atspek-zodi:dev
Open https://localhost:3000 in browser.
$> docker build --target=prod -t atspek-zodi:prod -f docker/Dockerfile .
$> docker run -d -p 80:8080 --name atspek-zodi-prod atspek-zodi:prod
Open https://localhost in browser. See the entry in the FAQ below about requirements for sharing of results.
The default configuration is for solutions and guesses of length five, but it is flexible enough to handle other lengths, even variable lengths each day.
To configure for a different constant length:
- Update the
WORDS
array in src/constants/wordlist.ts to only include words of the new length. - Update the
VALID_GUESSES
array in src/constants/validGuesses.ts to only include words of the new length.
To configure for variable lengths:
- Update the
WORDS
array in src/constants/wordlist.ts to include words of any of the variable lengths desired. - Update the
VALID_GUESSES
array in src/constants/validGuesses.ts to include words of any of the variable lengths desired.
Note that guesses are validated against both the length of the solution, and presence in VALID_GUESSES.
- In .env:
- Update the title and the description
- Set the
REACT_APP_LOCALE_STRING
to your locale
- In public/index.html:
- Update the "You need to enable JavaScript" message
- Update the language attribute in the HTML tag
- If the language is written right-to-left, add
dir="rtl"
to the HTML tag
- Update the name and short name in public/manifest.json
- Update the strings in src/constants/strings.ts
- Add all of the five letter words in the language to src/constants/validGuesses.ts, replacing the English words
- Add a list of goal words in the language to src/constants/wordlist.ts, replacing the English words
- Update the "Settings" modal in src/components/modals/SettingsModal.tsx
- Update the "Info" modal in src/components/modals/InfoModal.tsx
- Update the "DatePicker" modal in src/components/modals/DatePickerModal.tsx
- Update the statistics migration components modal in:
- To ensure that migration codes are unique to your application, update the Blowfish encryption key and initialization vector with random 30 character and 8 character strings in src/constants/settings.ts
- If the language has letters that are not present in English update the keyboard in src/components/keyboard/Keyboard.tsx
- If the language is written right-to-left, prepend
\u202E
(the unicode right-to-left override character) to the return statement of the inner function ingenerateEmojiGrid
in src/lib/share.ts - To enable replaying past days' games, set
ENABLE_ARCHIVED_GAMES
totrue
- Set
DATE_LOCALE
to a suitable locale string as defined in date-fns.
For mobile and wearable devices and smart TVs, sharing of results is initially attempted using the Web Share API. For other devices or when sharing to the Web Share API fails, the results are written to the clipboard. Both these methods will succeed only in a secure context, which require you to implement the HTTPS protocol when hosting this repo on a public domain.