Terminal tool for watching hockey games
Project description
Faceoff
A terminal user interface (TUI) application for following NHL hockey games in real-time.
Features
- Live Game Schedule: Browse NHL games by date with easy navigation (previous/next day)
- Real-time Updates: Auto-refreshing scores for live games
- Game Details: View play-by-play, box scores, and scoring summaries for in-progress and completed games
- Pre-Game Preview: View matchup data including goalie comparison and skater leaders for upcoming games
- League Standings: View current NHL standings with multiple views (Wild Card, Division, Conference, League)
- Player Stats Leaders: View top players in various statistical categories for skaters and goalies
- Team Browser: Browse all NHL teams, view rosters, and team schedules
- Player Profiles: View detailed player information, career stats, and game logs
- Responsive Layout: Game cards automatically arrange based on terminal width
- Local Time Display: Game times shown in your local timezone with timezone abbreviation
Installation
Using uvx (recommended)
uvx faceoff
Using pip
pip install faceoff
Then run:
faceoff
From source
git clone https://github.com/vgreg/faceoff.git
cd faceoff
uv run faceoff
Usage
Schedule Screen (Main Screen)
| Key | Action |
|---|---|
Arrow keys |
Navigate between game cards |
h |
Previous day |
l |
Next day |
t |
Jump to today |
s |
View standings |
p |
View player stats |
m |
Browse teams |
r |
Refresh |
Enter |
Select game (for live/completed games) |
q |
Quit |
Game Screen
| Key | Action |
|---|---|
b or Escape |
Back to schedule |
r |
Refresh |
Tab |
Switch between tabs (Play-by-Play, Box Score, Summary) |
q |
Quit |
Pre-Game Screen
| Key | Action |
|---|---|
b or Escape |
Back to schedule |
r |
Refresh |
q |
Quit |
Standings Screen
| Key | Action |
|---|---|
Tab |
Switch between views (Wild Card, Division, Conference, League) |
Up/Down or j/k |
Scroll standings |
b or Escape |
Back to schedule |
r |
Refresh |
q |
Quit |
Stats Screen
| Key | Action |
|---|---|
Tab |
Switch between Skaters and Goalies |
b or Escape |
Back to schedule |
r |
Refresh |
q |
Quit |
Teams Screen
| Key | Action |
|---|---|
Arrow keys |
Navigate between team cards |
Enter |
Select team to view details |
b or Escape |
Back to schedule |
r |
Refresh |
q |
Quit |
Team Detail Screen
| Key | Action |
|---|---|
Tab |
Switch between Roster and Schedule |
Enter |
Select player to view profile |
b or Escape |
Back to teams |
r |
Refresh |
q |
Quit |
Player Screen
| Key | Action |
|---|---|
Tab |
Switch between Info, Stats, and Game Log |
b or Escape |
Back |
r |
Refresh |
q |
Quit |
Screenshot
Acknowledgments
This project was inspired by Playball, a similar terminal application for following MLB baseball games.
Built With
- Textual - The modern TUI framework for Python that powers the user interface
- nhl-stats-api-client - Python client for accessing NHL API data
Disclaimer
This project is not affiliated with, endorsed by, or in any way officially connected with the National Hockey League (NHL), any of its teams, or any of its affiliates. All NHL logos, trademarks, and data are the property of the NHL and its teams.
This application uses publicly available NHL API data for informational and educational purposes only.
Development
Setup
git clone https://github.com/vgreg/faceoff.git
cd faceoff
make install
Running Tests
uv run pytest
Linting
uv run ruff check src/
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Project details
Release history Release notifications | RSS feed
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 faceoff-0.1.1.tar.gz.
File metadata
- Download URL: faceoff-0.1.1.tar.gz
- Upload date:
- Size: 367.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
293519af174daea6c29b8e1228e7c4fb6054b4a457377c4d238134317000885c
|
|
| MD5 |
ba3165f84ea49d14edd47a10b1fd5ad2
|
|
| BLAKE2b-256 |
2b744a42fd40270d624d40802bd493ac68c18ec40650dd3187440491578479f6
|
Provenance
The following attestation bundles were made for faceoff-0.1.1.tar.gz:
Publisher:
publish.yml on vgreg/faceoff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
faceoff-0.1.1.tar.gz -
Subject digest:
293519af174daea6c29b8e1228e7c4fb6054b4a457377c4d238134317000885c - Sigstore transparency entry: 842501851
- Sigstore integration time:
-
Permalink:
vgreg/faceoff@f5db34022e438e164210f425b35ce0a265d2daec -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/vgreg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f5db34022e438e164210f425b35ce0a265d2daec -
Trigger Event:
release
-
Statement type:
File details
Details for the file faceoff-0.1.1-py3-none-any.whl.
File metadata
- Download URL: faceoff-0.1.1-py3-none-any.whl
- Upload date:
- Size: 37.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d385cb8b9ac35d8a04d2f698b2c49ea505b92421b774ff64da48e57512b9416
|
|
| MD5 |
047ed5a815b74de2e55fbf38ca0725e3
|
|
| BLAKE2b-256 |
44c39a1f333d5c5a00d28f03999e4c3ddd7a9b18a5a0762a34581519c46fe2ef
|
Provenance
The following attestation bundles were made for faceoff-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on vgreg/faceoff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
faceoff-0.1.1-py3-none-any.whl -
Subject digest:
8d385cb8b9ac35d8a04d2f698b2c49ea505b92421b774ff64da48e57512b9416 - Sigstore transparency entry: 842501853
- Sigstore integration time:
-
Permalink:
vgreg/faceoff@f5db34022e438e164210f425b35ce0a265d2daec -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/vgreg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f5db34022e438e164210f425b35ce0a265d2daec -
Trigger Event:
release
-
Statement type: