A Spanish word game app with two games built on the same word engine.
A Wordle-style game. Guess a Spanish word in 6 tries. Choose a word length of 4, 5, 6, or 7 letters. Tiles reveal after each guess:
Login is optional. When logged in, wins, losses, and streaks are saved per word length.
A TV-show inspired game built on top of the same word engine. A full game consists of 5 rounds.
Rules:
Ball pit — 16 balls total:
Bingo card — classic 5×5 B-I-N-G-O with center FREE square. Complete a row, column, or diagonal to win.
After all 5 rounds, the final bingo card result is shown with an option to start a new game.
The UI is available in Spanish (default) and English. Toggle between them using the language button in the header. All words in play are always Spanish.
npm install
Copy .env.example to .env and fill in the values:
cp .env.example .env
DATABASE_URL="postgres://root:mysecretpassword@localhost:5432/local"
ORIGIN="http://localhost:5173"
BETTER_AUTH_SECRET="your-32-char-secret-here"
Generate a secure secret:
openssl rand -base64 32
Using Docker:
docker run -d \
--name palingo-db \
-e POSTGRES_USER=root \
-e POSTGRES_PASSWORD=mysecretpassword \
-e POSTGRES_DB=local \
-p 5432:5432 \
postgres:16
npm run db:migrate
npm run db:seed
This loads the Spanish word list into the words table.
npm run dev
Open http://localhost:5173.
npm run build
npm run preview
For deployment, install the appropriate SvelteKit adapter for your target environment (Node, Vercel, Cloudflare, etc.).
Authentication is optional — all games are playable without an account.
Creating an account enables:
Sign up with any email address and password on the /login page.
The app includes a service worker and web manifest. It can be installed on mobile and desktop via the browser's "Add to Home Screen" / install prompt.
The app requires an internet connection. Attempting to play offline shows an error message.
src/
app.css # Tailwind v4 theme tokens
lib/
game/
word-engine.ts # Shared Wordle logic (evaluateGuess, applyGuess)
lingo-engine.ts # Lingo-specific logic (bingo card, ball pit, timer)
components/
word/ # Shared tile/row/board/keyboard components
lingo/ # CountdownTimer, BallPit, BingoCard
LangToggle.svelte # Language switcher
i18n/
translations.ts # ES + EN strings
lang.svelte.ts # Reactive language store
server/
db/
schema.ts # Drizzle schema (words, scores, auth tables)
routes/
+layout.svelte # Root layout with offline banner
+page.svelte # Home page
login/ # Auth pages
palabra-del-dia/ # Wordle game
lingo/ # Lingo game
static/
manifest.json # PWA manifest
sw.js # Service worker