# Evil Wordle A dark Wordle-style browser game with daily, infinite, daily evil, custom length, and super evil modes. ## Install ```bash npm install ``` ## Run ```bash npm run dev ``` Open the local URL printed by Vite. ## Build ```bash npm run build ``` ## Docker ```bash docker compose up --build ``` The compose service publishes the app on `0.0.0.0:6666`. ## CI Image Publishing Gitea Actions workflow: `.gitea/workflows/ci.yml` Required repository or organization secrets: - `REGISTRY_PASSWORD`: Gitea personal access token with package read/write access - `REGISTRY_USERNAME`: Gitea username that owns the token - `REGISTRY_IMAGE`: optional; defaults to `gitea.reversed.dev/space/evil-wordle` The workflow also accepts `REGISTRY_TOKEN` as a fallback for `REGISTRY_PASSWORD`. For organization packages such as `space/evil-wordle`, the username is still the actual Gitea user account for the token, not the organization name. That user needs permission to publish packages under `space`. The workflow uses `catthehacker/ubuntu:act-latest`, validates the app through the Dockerfile `ci` target, publishes with Docker Buildx, and links the package back to the `space/evil-wordle` repository through the Gitea API. On pushes to `main`, CI publishes: ```bash gitea.reversed.dev/space/evil-wordle:latest gitea.reversed.dev/space/evil-wordle: ``` Tags like `v1.2.3` also publish `gitea.reversed.dev/space/evil-wordle:1.2.3`. The app is built with React, Tailwind CSS, and Vite. Progress, settings, and stats are stored in `localStorage`. Guess validation uses `word-list-json`; curated local word buckets in `src/data/words.ts` control target selection and provide the fallback pool.