149 lines
2.9 KiB
Markdown
149 lines
2.9 KiB
Markdown
# Euchre Scoreboard
|
||
|
||
A web-based Euchre scoring app with a card-table theme. Track scores for two teams, handle march/euchre/lone outcomes, and play to 10 or 11 points.
|
||
|
||
## Features
|
||
|
||
- Two-team scoreboard with editable team names
|
||
- Quick scoring: Made (+1), March (+2), Lone (+4)
|
||
- Defensive scoring: Euchre (+2), Lone stopped (+4)
|
||
- Hand history with undo
|
||
- Configurable target score (10 or 11)
|
||
- Scores persist in browser localStorage
|
||
- Mobile-friendly layout
|
||
|
||
## Quick Start
|
||
|
||
Both local and Docker modes serve the app at [http://localhost:20010](http://localhost:20010).
|
||
|
||
### Run locally
|
||
|
||
Requires Python 3.7+ (usually pre-installed on Linux and macOS).
|
||
|
||
```bash
|
||
python3 serve.py
|
||
```
|
||
|
||
Other ways to start locally:
|
||
|
||
```bash
|
||
make run
|
||
# or
|
||
npm start
|
||
```
|
||
|
||
Options:
|
||
|
||
```bash
|
||
python3 serve.py --port 3000 # use a different port
|
||
python3 serve.py --no-open # don't open a browser automatically
|
||
```
|
||
|
||
### Run with Docker
|
||
|
||
Requires Docker and Docker Compose.
|
||
|
||
```bash
|
||
docker compose up --build
|
||
```
|
||
|
||
Other ways to start with Docker:
|
||
|
||
```bash
|
||
make docker
|
||
# or
|
||
npm run start:docker
|
||
```
|
||
|
||
Without Compose:
|
||
|
||
```bash
|
||
docker build -t euchre-scoreboard .
|
||
docker run -p 20010:80 euchre-scoreboard
|
||
```
|
||
|
||
Stop Docker:
|
||
|
||
```bash
|
||
make stop
|
||
# or
|
||
docker compose down
|
||
```
|
||
|
||
## Publish the Docker image
|
||
|
||
Build a tagged image ready to push or share:
|
||
|
||
```bash
|
||
# Local tag (default)
|
||
make docker-image
|
||
|
||
# Your registry tag (Docker Hub, GHCR, etc.)
|
||
make docker-image IMAGE=yourusername/euchre-scoreboard TAG=latest
|
||
```
|
||
|
||
### Push to a registry
|
||
|
||
Log in first (`docker login`), then push:
|
||
|
||
```bash
|
||
make docker-push IMAGE=yourusername/euchre-scoreboard TAG=latest
|
||
```
|
||
|
||
Examples:
|
||
|
||
```bash
|
||
# Docker Hub
|
||
docker login
|
||
make docker-push IMAGE=yourusername/euchre-scoreboard TAG=1.0.0
|
||
|
||
# GitHub Container Registry
|
||
docker login ghcr.io
|
||
make docker-push IMAGE=ghcr.io/yourusername/euchre-scoreboard TAG=latest
|
||
```
|
||
|
||
Others can run your published image with:
|
||
|
||
```bash
|
||
docker run -p 20010:80 yourusername/euchre-scoreboard:latest
|
||
```
|
||
|
||
### Export as a file (upload elsewhere)
|
||
|
||
Creates a `.tar` archive you can upload to any host and load with `docker load`:
|
||
|
||
```bash
|
||
make docker-save IMAGE=euchre-scoreboard TAG=1.0.0
|
||
```
|
||
|
||
On the destination machine:
|
||
|
||
```bash
|
||
docker load -i euchre-scoreboard-1.0.0.tar
|
||
docker run -p 20010:80 euchre-scoreboard:1.0.0
|
||
```
|
||
|
||
## Scoring Reference
|
||
|
||
| Outcome | Points |
|
||
|---------|--------|
|
||
| Makers win 3–4 tricks | +1 |
|
||
| Makers win all 5 tricks (march) | +2 |
|
||
| Makers win 0–2 tricks (euchred) | +2 to defenders |
|
||
| Lone wins 3–4 tricks | +1 |
|
||
| Lone wins all 5 tricks | +4 |
|
||
| Lone stopped (0–2 tricks) | +4 to defenders |
|
||
|
||
## Project Layout
|
||
|
||
```
|
||
Euchre/
|
||
├── public/ # Static web app (HTML, CSS, JS)
|
||
├── serve.py # Local dev server
|
||
├── Dockerfile # Production-style nginx container
|
||
├── docker-compose.yml
|
||
└── Makefile # run / docker shortcuts
|
||
```
|
||
|
||
No build step is required for local development.
|