1.4 KiB
1.4 KiB
web/ — Kanjin Web Server & PWA
Quick start (Docker)
From the project root:
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:
pip install pyinstaller
pyinstaller --onefile --name Kanjin main.py
Deliver dist/Kanjin.exe — no Python or dependencies needed on the player's machine.
Development
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 |