Skip to main content

Beautiful terminal-based Wordle game with shared leaderboard

Project description

TUI Wordle

Play Wordle in your terminal with style

PyPI version Python License: MIT

╦ ╦╔═╗╦═╗╔╦╗╦  ╔═╗
║║║║ ║╠╦╝ ║║║  ║╣
╚╩╝╚═╝╩╚══╩╝╩═╝╚═╝

A beautiful terminal-based Wordle game with shared leaderboard, streaks, and statistics.

InstallationFeaturesUsageSelf-HostingContributing


Features

  • Daily Wordle - New word every day at 9 AM KST
  • Google Login - One-click browser authentication
  • Global Leaderboard - Compete with players worldwide
  • Streaks & Stats - Track your winning streaks and performance
  • GitHub-style Graph - Visualize your play history
  • Auto-save - Resume your game anytime
  • Offline Mode - Play without an account
  • Beautiful TUI - Smooth animations powered by Textual

Installation

# Using pip
pip install tui-wordle

# Using uv (recommended)
uv tool install tui-wordle

# Using pipx
pipx install tui-wordle

Usage

# Start the game
wordle

# Alternative commands
tui-wordle
wd

Controls

Key Action
A-Z Type letter
Enter Submit guess
Backspace Delete letter
ESC Quit
F1 Statistics
F2 Leaderboard
F3 Help
F4 Settings

Project Structure

tui-wordle/
├── client/                 # TUI Client (Textual)
│   ├── app.py              # Main application
│   ├── screens/            # Game screens
│   │   ├── game_screen.py
│   │   ├── login_screen.py
│   │   ├── result_screen.py
│   │   ├── stats_screen.py
│   │   └── ...
│   └── widgets/            # UI components
│       ├── game_board.py
│       ├── keyboard.py
│       ├── tile.py
│       └── ...
├── server/                 # FastAPI Backend
│   ├── main.py
│   ├── auth/               # Authentication
│   ├── games/              # Game logic
│   ├── words/              # Daily words
│   ├── leaderboard/        # Rankings
│   ├── streaks/            # Streak tracking
│   └── stats/              # Statistics
├── admin-web/              # Admin Dashboard (Vue)
├── data/                   # Word lists
├── alembic/                # DB migrations
└── scripts/                # Utility scripts

Self-Hosting

Want to run your own Wordle server? See the Self-Hosting Guide.

Quick Start

# Clone the repository
git clone https://github.com/subinium/tui-wordle.git
cd tui-wordle

# Install dependencies
pip install -e ".[server]"

# Set environment variables
export DATABASE_URL="postgresql+asyncpg://user:pass@localhost/wordle"
export SECRET_KEY="your-secret-key"
export GOOGLE_CLIENT_ID="your-google-client-id"
export GOOGLE_CLIENT_SECRET="your-google-client-secret"

# Run migrations
alembic upgrade head

# Seed words
python scripts/seed_database.py

# Start server
uvicorn server.main:app --reload

Environment Variables

Variable Description Required
DATABASE_URL PostgreSQL connection string Yes
SECRET_KEY JWT secret key Yes
GOOGLE_CLIENT_ID Google OAuth client ID Yes
GOOGLE_CLIENT_SECRET Google OAuth client secret Yes
ADMIN_EMAILS Comma-separated admin emails No
CORS_ORIGINS Allowed CORS origins No

Tech Stack

Component Technology
TUI Client Textual + Rich
Backend FastAPI + SQLAlchemy
Database PostgreSQL (via Neon)
Admin Dashboard Vue 3 + Vite
Deployment Railway

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Inspired by Wordle by Josh Wardle
  • Built with Textual by Textualize

Play Now · Report Bug · Request Feature

Made with love by @subinium

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tui_wordle-0.1.1.tar.gz (193.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tui_wordle-0.1.1-py3-none-any.whl (149.4 kB view details)

Uploaded Python 3

File details

Details for the file tui_wordle-0.1.1.tar.gz.

File metadata

  • Download URL: tui_wordle-0.1.1.tar.gz
  • Upload date:
  • Size: 193.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.6

File hashes

Hashes for tui_wordle-0.1.1.tar.gz
Algorithm Hash digest
SHA256 32dbe860493c8a7f555c43fb8325bc4f0a6530559245df42ac1e95d65e0fbef8
MD5 94e471928b0e1dddbbcc62a7946f795f
BLAKE2b-256 f18168faf35a0cac78ac9564c7d3e4436e7a04aba8876ffe9eca6d94ff299789

See more details on using hashes here.

File details

Details for the file tui_wordle-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tui_wordle-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 149.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.6

File hashes

Hashes for tui_wordle-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f3b8eeb90fadbeba657e5a03fc764ea43530c612d6cd26d8300654dac8be5692
MD5 4779f7ff53c2eb482c7388e61a879523
BLAKE2b-256 4d3732b260b285690f2502e724961effa1af00a39b7d43980f0ae17b468e5e35

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page