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.2.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.2-py3-none-any.whl (150.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tui_wordle-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 8ff876560c9a654ab35eb4a28839a0f4b5811da60e73d25fe0436b39d654bf7e
MD5 6a6b4a312b1e98231f6923cf8c70d3d1
BLAKE2b-256 b395867d371d4276f3764fe1ad6fe661d1c4f03d54126a865b615f78e5d127e6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tui_wordle-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 21b34da739a7441a0c1c5acb7be416920bfb160c4fa04592631641a810232452
MD5 0324575df0e9540b721c3d73f8d6f617
BLAKE2b-256 7f0fe75c1f409324c10c2da12eeee9cce4512df17929734530e6354e81838879

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