Skip to content

Repository files navigation

Português | English

Termo Clone

A complete clone of Termo — the Brazilian Wordle.

About

The project reproduces the full guess-validation mechanic and the letter-by-letter feedback calculation, including how repeated letters in the target word are handled — the foundation that powers both Solo mode and the multi-board modes.

React JavaScript Tailwind CSS Vite

How the idea came about

Termo became a hugely popular game with a strong daily routine around it. It was common to open the game and share the result with a group of friends, comparing who solved it in fewer guesses that day.

That familiarity with the game is what sparked the desire to build the logic behind it, word validation, the letter-by-letter feedback calculation, and the Duet and Quartet modes, where several boards are solved at the same time using the same keyboard. A way to turn that daily habit into a complete technical project.

Features

Three game modes

Solo, Duet and Quartet: in Duet and Quartet, 2 or 4 boards are solved simultaneously with the same set of guesses, each submitted row is validated against every word at once, and the number of available attempts increases proportionally to the difficulty.


Duet Mode


Quartet Mode

Navigation bar

Brings together the game's quick controls: access to "How to play", language switching, light/dark theme toggling, and enabling/disabling sound effects.


Navigation bar


Light theme


Dark theme

"How to play" modal

Explains the rules with visual examples of each state (correct, misplaced, or absent letter), available at any point during the match.


How to play

End-of-game feedback

Win or loss screen showing the result of each active board — especially relevant in Duet and Quartet, where it's possible to win some boards and lose others within the same match.


Win screen


Game over screen

How to access

Play online: https://termo-clone.rafaelsena.dev/

Or run it locally following the instructions below.

Running it locally

# 1. Clone the repository
git clone https://github.com/rafaznj/termo-clone.git

# 2. Enter the project folder
cd termo-clone

# 3. Install dependencies
pnpm install

# 4. Run the project in development mode
pnpm dev

The game will be available at http://localhost:5173 (Vite's default port).

Structure

src/
├── assets/
│   ├── i18n/                   # i18next configuration (translation resources, initial language)
│   ├── images/                 # Image assets
│   └── sounds/                 # Sound assets
├── components/
│   ├── Board.jsx               # Renders a single board (used 1x, 2x, or 4x depending on the selected mode)
│   ├── Game.jsx                # Main component: orchestrates boards, keyboard, and navbar
│   ├── GameOverOverlay.jsx     # End-of-game overlay (win/loss) revealing the word(s)
│   └── HowToPlay.jsx           # Modal explaining the game rules
├── constants/
│   ├── game-constants.js       # Game modes, rows/columns, virtual keyboard keys
│   └── styles-constants.js     # Reusable Tailwind classes (tiles, keyboard, HowToPlay examples)
├── hooks/
│   ├── use-game.js             # All the game logic: reducer, guess validation, board state
│   ├── use-language.js         # Language control (i18next) with localStorage persistence
│   └── use-theme.js            # Light/dark theme control with localStorage persistence
├── data/
│   ├── words-pt.js             # Word list in Portuguese
│   └── words-en.js             # Word list in English
├── utils/
│   ├── sound.js                # Functions that play sounds for game actions
│   └── word-lists.js           # Resolves the word list/dictionary/draw based on the selected language
└── styles/
    └── global.css              # Global styling definitions and themes

Ideas for improvement

  • Player statistics (win streak, guess distribution, success rate)
  • Daily mode (a single fixed word per day, the same for every player)
  • Support for more languages beyond PT/EN
  • Multiplayer mode (compete against another player in real time)

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages