Beautiful terminal-based Wordle game with shared leaderboard
Project description
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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09a8da55e20a712d977627cabd52920b48cff06d5332d353f756f32bdf75cf7f
|
|
| MD5 |
5d23797028e6382a2afda41c069fc43e
|
|
| BLAKE2b-256 |
cb9a7516052cd273de2b37581d170a3cea60807bcc21f76c3f71e1d2712d677a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
750ce23a6e887a6159c5a0d90ef9b2760e6a00931f7313a2f2ca3c70012a3760
|
|
| MD5 |
4ec30f308bb8cfb3c5669eb15186492d
|
|
| BLAKE2b-256 |
6b2b3b94bf6cea6b54ecd0d14493e78f1cf7fe98a774ae85fbe7a1a75e77908d
|