Files
Kanjin/web/README.md

47 lines
1.4 KiB
Markdown

# web/ — Kanjin Web Server & PWA
## Quick start (Docker)
From the project root:
```bash
docker build -t kanjin -f web/Dockerfile .
docker run -p 8080:8080 kanjin
```
Open http://localhost:8080 in any browser. On Chrome/Edge you can **"Install as app"** via the address bar icon — removes the URL bar and adds a home-screen icon.
## Windows standalone .exe
From the project root, with PyInstaller installed:
```bash
pip install pyinstaller
pyinstaller --onefile --name Kanjin main.py
```
Deliver `dist/Kanjin.exe` — no Python or dependencies needed on the player's machine.
## Development
```bash
cd web
python -m pip install -r requirements.txt
python generate_icons.py
python server.py # starts uvicorn on :8080 with hot-reload
```
Requires Linux or WSL (uses `pty`). The server spawns `main.py` from the parent directory in a pseudo-terminal and streams it to the browser over WebSocket.
## File layout
| Path | Purpose |
|---|---|
| `server.py` | FastAPI app: serves index.html, mounts /static, handles /ws WebSocket |
| `static/index.html` | xterm.js in-browser terminal connected over WebSocket |
| `static/manifest.json` | PWA manifest — enables Chrome "Install as app" |
| `static/sw.js` | Service worker — precaches the shell for offline launch |
| `static/generate_icons.py` | Generates placeholder PNG icons (run once) |
| `requirements.txt` | Python deps (fastapi, uvicorn) |
| `Dockerfile` | Multi-stage Docker build |