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.3.tar.gz (194.3 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.3-py3-none-any.whl (150.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tui_wordle-0.1.3.tar.gz
  • Upload date:
  • Size: 194.3 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.3.tar.gz
Algorithm Hash digest
SHA256 09a8da55e20a712d977627cabd52920b48cff06d5332d353f756f32bdf75cf7f
MD5 5d23797028e6382a2afda41c069fc43e
BLAKE2b-256 cb9a7516052cd273de2b37581d170a3cea60807bcc21f76c3f71e1d2712d677a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tui_wordle-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 150.2 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 750ce23a6e887a6159c5a0d90ef9b2760e6a00931f7313a2f2ca3c70012a3760
MD5 4ec30f308bb8cfb3c5669eb15186492d
BLAKE2b-256 6b2b3b94bf6cea6b54ecd0d14493e78f1cf7fe98a774ae85fbe7a1a75e77908d

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