TUI Wordle
Play Wordle in your terminal with style
╦ ╦╔═╗╦═╗╔╦╗╦ ╔═╗
║║║║ ║╠╦╝ ║║║ ║╣
╚╩╝╚═╝╩╚══╩╝╩═╝╚═╝
A beautiful terminal-based Wordle game with shared leaderboard, streaks, and statistics.
Installation • Features • Usage • Self-Hosting • Contributing
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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Play Now · Report Bug · Request Feature
Made with love by @subinium
Metadata
Release files for tui-wordle 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tui_wordle-0.1.3.tar.gz | 194.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tui_wordle-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 344.4 kB
Release files / tui_wordle-0.1.3.tar.gz
| Download URL | tui_wordle-0.1.3.tar.gz |
|---|---|
| Size | 194.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09a8da55e20a712d977627cabd52920b48cff06d5332d353f756f32bdf75cf7f
|
|
BLAKE2b-256 checksum How to use checksums |
cb9a7516052cd273de2b37581d170a3cea60807bcc21f76c3f71e1d2712d677a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|
Release files / tui_wordle-0.1.3-py3-none-any.whl
| Download URL | tui_wordle-0.1.3-py3-none-any.whl |
|---|---|
| Size | 150.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
750ce23a6e887a6159c5a0d90ef9b2760e6a00931f7313a2f2ca3c70012a3760
|
|
BLAKE2b-256 checksum How to use checksums |
6b2b3b94bf6cea6b54ecd0d14493e78f1cf7fe98a774ae85fbe7a1a75e77908d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|