grow flex layout on all devices on main app layout
[wortel.git] / README.md
blob9e4f0add2cdfddb619a6a98badb5f84f8fb5676d
1 # React Wordle
3 This is a clone project of the popular word guessing game we all know and love. Made using React, Typescript, and Tailwind.
5 [**Try out the demo!**](https://reactle.vercel.app/)
7 ## Build and run
9 ### To Run Locally:
11 Clone the repository and perform the following command line actions:
13 ```bash
14 $> cd react-wordle
15 $> npm install
16 $> npm run start
17 ```
19 ### To build/run docker container:
21 #### Development
23 ```bash
24 $> docker build -t game:dev .
25 $> docker run -d -p 3000:3000 game:dev
26 ```
28 Open [http://localhost:3000](http://localhost:3000) in browser.
30 #### Production
32 ```bash
33 $> docker build --target=prod -t game:prod .
34 $> docker run -d -p 80:80 game:prod
35 ```
37 Open [http://localhost](http://localhost) in browser.
39 ## Projects built using this repo
41 ### Other languages
43 - [Arwordle](https://arwordle.netlify.app/): Arabic
44 - [Boludle](https://www.boludle.com/): Argentinian
45 - [Gerdle](https://gerdle.vext.co.uk/): Cornish (Kernowek)
46 - [Keclap](https://keclap.xyz/): Sundanese
47 - [Kelmaly](https://kelmaly.com/): Arabic
48 - [Latindictionary.io](https://wordle.latindictionary.io/): Latin
49 - [Lexoula](https://lexoula.com/): Ελληνικά (Greek)
50 - [Malay](https://malay-wordle.netlify.app/): Bahasa Malaysia
51 - [Mondle](https://mondle.vercel.app/): Mongolian
52 - [Parolette](https://parolette.netlify.app/): Italian
53 - [Parolle.it](https://parolle.it): Italian
54 - [Pashtoodle](https://pashtoodle.lingdocs.com): Pashto
55 - [Persian](https://www.persian-wordle.ir/): Persian (Farsi)
56 - [Pinyin](https://www.pinyindle.com/): Pinyin (romanization system for Mandarin Chinese)
57 - [Rudle](https://rudle.vercel.app): Russian
58 - [Sindhal](https://hellosindh.com/sindhal): Sindhi
59 - [Szózat](https://szozat.miklosdanka.com/): Hungarian
60 - [Tàu Tâi-gí (Taigi Wordle)](https://tau.taigi.info/): Taigi (Taiwanese)
61 - [Tlembung](https://tlembung.vercel.app/): Japanese
62 - [Tugma](https://tugma.vercel.app): Hiligaynon (spoken in the Philippines)
63 - [Ukrainian](https://goroh.pp.ua/games/wordle): Ukrainian
64 - [Urdle](https://urdle.chaoticity.com/): Urdu
65 - [Vārdulis](https://wordle.lielakeda.lv/): Latvian
66 - [Word-leh!](https://word-leh.com): Singlish
67 - [Wordlar](http://wordlar.uz/): Uzbek
68 - [Wordle (BOS)](https://elahmo.github.io/wordle/): Bosnian
69 - [Wordle (Spanish)](https://wordle-es.xavier.cc): Spanish/Espanol
70 - [Wordle-RO](https://wordle-ro.sirb.net/): Romanian
71 - [Wortel](https://wortel.wrintiewaar.co.za): Afrikaans
72 - [Wörtchen](https://woertchen.sofacoach.de): German
73 - [SGWordle](https://sgwordle.now.sh/): Swiss German
74 - [kelma.mt](https://kelma.mt): Maltese
75 - [Слівце](https://slivce.com/): Ukrainian
76 - [ਪੰਜਾਬੀ](https://punjabipuzzle.netlify.app/): Punjabi
77 - [சொல்லாடல் Soladle](https://omtamil.com/soladle): Tamil
78 - [字知之明](https://zedaizd.github.io/zh-char-puzzle/): Traditional Chinese
79 - [꼬들 - 한국어](https://belorin.github.io/): Korean
80 - [한글 풀어쓰기 5자](https://nakosung.github.io/wordle/): Korean
81 - [ไทย](https://buddhistuniversity.net/wordle-thai/): Thai
83 ### Fun themes
85 - ['en si lì'ur](https://tirea.learnnavi.org/wordle): Na'vi, the constructed language from James Cameron's AVATAR (2009)
86 - [Airportle](https://airportle.scottscheapflights.com/): Airport Codes
87 - [Anidal](https://anidal-abrarhayat.web.app/): Animals
88 - [Birdle - Emojis](https://birdle.dev): Bird emojis
89 - [Birdle](https://www.creek-birdle.com/): Birds
90 - [Buildly](https://buildly.procurepro.co/): Construction themed
91 - [Crosswordle](https://crosswordle.mekoppe.com/): Crossword mashup
92 - [Dundle](https://dundle.dunmiffcord.com/): The Office
93 - [FFXIVrdle](https://ffxivrdle.com/): Final Fantasy XIV
94 - [Harry Potter](https://www.harrypotterwordle.com/): Harry Potter
95 - [JoJodle](https://jojo-news.com/fun/jojodle/): JoJo’s Bizarre Adventure
96 - [Mahjong Handle](https://mahjong-handle.update.sh/): Mahjong Hands
97 - [Filmle](https://filmle.now.sh/): Movie titles
98 - [Movie Wordle](https://movie-wordle.vercel.app): Bollywood
99 - [Murdle](https://murdle.vercel.app/): Spooky hangman mashup
100 - [Poker Handle](https://kikychow.github.io/poker-wordle/): Poker
101 - [Quettale](https://quettale.vercel.app/): Quenya, Elven language in LOTR
102 - [Radiole](https://radiole.vercel.app/): Radio-themed (for World Radio Day)
103 - [Squirdle](https://squirdle-inky.vercel.app/): Pokeman
104 - [Taylordle](https://www.taylordle.com/): Taylor Swift
105 - [Trekle](https://treklegame.com): Star Trek
106 - [Weedel](https://meetmeinouter.space/wordle/): Video game characters
107 - [Wordle.cl](https://www.wordle.cl): Chilean modisms, cities, places
108 - [Wrdl](https://wrdl-abae.vercel.app/): Words that are 5 letters long after getting rid of their vowels
110 ### Math, Acronyms, Science, Tech, and more
112 - [AI-powered](https://github.com/asirota/wordle-ai): Includes an AI component
113 - [Genel](https://andrewholding.github.io/gene-wordle/): Gene symbols
114 - [Jazle](https://jazle.quest/): Javascript
115 - [Mathler](https://www.mathler.com/): Find the solution that equals X
116 - [Morsel](https://plingbang.github.io/morsel/): Morse
117 - [Numble](https://rbrignall.github.io/numble/): Maths
118 - [Opsle](https://opsle.vercel.app/): Ops
119 - [Passwordle](https://passwordle.sp8c3.com/): Passwords
120 - [Primel](https://converged.yt/primel/): Prime numbers
121 - [Qwordle](https://qwordle.bhat.ca/): Quantum version of Wordle (uses entangled word-pairs)
122 - [Rundle](https://furstenheim.github.io/react-wordle/): Like wordle, but only last three guesses are considered.
123 - [Stockle](https://stockle.win/): Guess the stock or ETF
124 - [Syscordle](https://nezza.github.io/syscordle/): SYSCALL
125 - [UNLOCOdle](https://unlocodle.collabital.com/): UNLOCODEs
127 _Want to add one to the list? Just make a pull request or [let us know via a comment here](https://github.com/cwackerfuss/react-wordle/issues/120)_
129 ## FAQ
131 ### How can I change the length of a guess?
133 - Update the `MAX_WORD_LENGTH` variable in [src/constants/settings.ts](src/constants/settings.ts) to the desired length.
134 - Update the `WORDS` array in [src/constants/wordlist.ts](src/constants/wordlist.ts) to only include words of the new length.
135 - Update the `VALID_GUESSES` array in [src/constants/validGuesses.ts](src/constants/validGuesses.ts) arrays to only include words of the new length.
137 ### How can I create a version in another language?
139 - In [.env](.env):
140   - Update the title and the description
141   - Set the `REACT_APP_LOCALE_STRING` to your locale
142 - In [public/index.html](public/index.html):
143   - Update the "You need to enable JavaScript" message
144   - Update the language attribute in the HTML tag
145   - If the language is written right-to-left, add `dir="rtl"` to the HTML tag
146 - Update the name and short name in [public/manifest.json](public/manifest.json)
147 - Update the strings in [src/constants/strings.ts](src/constants/strings.ts)
148 - Add all of the five letter words in the language to [src/constants/validGuesses.ts](src/constants/validGuesses.ts), replacing the English words
149 - Add a list of goal words in the language to [src/constants/wordlist.ts](src/constants/wordlist.ts), replacing the English words
150 - Update the "Settings" modal in [src/components/modals/SettingsModal.tsx](src/components/modals/SettingsModal.tsx)
151 - Update the "Info" modal in [src/components/modals/InfoModal.tsx](src/components/modals/InfoModal.tsx)
152 - If the language has letters that are not present in English update the keyboard in [src/components/keyboard/Keyboard.tsx](src/components/keyboard/Keyboard.tsx)
153 - 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 in `generateEmojiGrid` in [src/lib/share.ts](src/lib/share.ts)
155 ### How can I add usage tracking?
157 This repository includes support for Google Analytics or [Plausible Analytics](https://plausible.io), but, by default, this is disabled.
159 To enable Google Analytics:
161 - Create a Google Analytics 4 property and obtain the measurement ID (of the format `G-XXXXXXXXXX`)
162 - In [.env](.env), add `REACT_APP_GOOGLE_MEASUREMENT_ID=G-XXXXXXXXXX`
164 Keep in mind that your region might have legislation about obtaining a user's consent before enabling trackers. This is up to downstream repos to implement.
166 To enable Plausible Analytics:
168 - Create a new website with Plausible Analytics with a given domain, e.g. `example.app`
169 - In [.env](.env), add `REACT_APP_PLAUSIBLE_DOMAIN=example.app`