A sentence-guessing game on the Fediverse, inspired by Wordle but with full sentences. https://frases.degu.cl
  • Rust 98.5%
  • Shell 1.5%
Find a file
2026-03-29 16:14:09 +02:00
admin Add admin refresh endpoint to update unplayed games with current sentence 2026-03-22 05:26:03 +00:00
art Add 2x2 icon for repository avatar 2026-03-21 18:13:36 +00:00
doc Refactor distribution to sentence-number-based system 2026-03-28 10:04:58 +01:00
nginx Add abuse mitigations and nginx config 2026-03-19 08:09:49 +01:00
src Fix admin progress/set to always save today's date (prevents immediate re-distribution) 2026-03-29 16:14:09 +02:00
tests Add sentence numbering and first solver notification 2026-03-25 07:18:58 +01:00
.gitignore Add admin endpoints and remote management scripts 2026-03-21 17:02:16 +00:00
Cargo.lock Add per-actor timezone support for sentence activation 2026-03-21 10:02:07 +00:00
Cargo.toml Add author identifiers to license and package metadata 2026-03-21 17:51:36 +00:00
deploy.sh Immediate game distribution, multi-actor fixes, and deploy scripts 2026-03-20 05:25:20 +00:00
frases.service Phase 5: Integration and deployment 2026-03-18 22:03:07 +01:00
frases.toml.example Add Spanish keyboard layout and dead key support 2026-03-20 08:29:02 +00:00
LICENSE License under AGPL-3.0 2026-03-21 17:41:50 +00:00
README.org Add author identifiers to license and package metadata 2026-03-21 17:51:36 +00:00
sentences.toml.example Replace hint_chars with hint_positions notation 2026-03-24 06:55:03 +01:00
update.sh Immediate game distribution, multi-actor fixes, and deploy scripts 2026-03-20 05:25:20 +00:00

Frases

A sentence-guessing game on the Fediverse, inspired by Wordle but with full sentences.

Players follow a game actor from their Mastodon (or any Fediverse) account and receive a daily sentence to guess, character by character.

Website: https://frases.degu.cl

How it works

  1. Follow one of the game actors from your Fediverse account.
  2. You receive a direct message with a link to today's sentence.
  3. Guess the full sentence — you get up to 11 attempts.
  4. After each guess, cells change color:

    • 🟩 Green: correct position.
    • 🟪 Purple: correct pair but wrong position.
    • 🟨 Yellow: exists in the sentence but wrong position.
    • Gray: not in the sentence.
  5. When you finish, the actor posts your result so you can share it.

Actors

Actor Language Content
Chile Spanish Frases populares, dichos y refranes chilenos
Argentina Spanish Frases populares, dichos y refranes argentinos
CostaRica Spanish Dichos ticos y expresiones costarricenses
English English Famous quotes and well-known sentences in English
Deutschland German Deutsche Märchen, Sprichwörter und berühmte Sätze
Danmark Danish Danske ordsprog, eventyr og berømte sætninger

Technology

  • Written in Rust with Axum.
  • Embedded database (redb) — no external database server needed.
  • ActivityPub federation with HTTP Signatures.
  • Runs as a single binary behind a reverse proxy (nginx).
  • Typical resource usage: ~14 MB RAM, negligible CPU.

Building

cargo build --release

The binary is at target/release/frases.

Deployment

See doc/deployment.org for full deployment instructions.

Quick start:

./deploy.sh    # initial deployment (requires sudo)
./update.sh    # rebuild and redeploy

Configuration

The server is configured via a TOML file. See frases.toml.example for a complete example.

Each game actor supports:

  • Per-language keyboard layouts (es, de, da).
  • Configurable messages (game ready, result won/lost).
  • Per-actor timezone for sentence activation.
  • Actor bio (summary) and verified links.

Sentences are configured per actor in TOML files with optional hint_chars (reveal first N letters) and explanation (shown after game ends).

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

Copyright 2026 Daniel Hernández <daniel@degu.cl> — https://daniel.degu.cl