alexandrev-tibco 2a8d055da3
Build and push image / build (push) Successful in 1m19s
Fix Close label translation and replace liga with campeonato in clues
- Fix feedback color label: Close → Cerca/Proche/Nah/Vicino/Perto
  in all non-English locales (was using the verb "to close" instead
  of "near/close")
- Replace "liga/ligas" with "campeonato/campeonatos" in all ES
  translations that refer to league titles, to avoid confusion with
  the competition name LaLiga
- Add new player fields (ballonDOr, goldenBoot, worldCupWinner,
  copaAmericaWinner, eurocupWinner) and rework clue generation with
  difficulty-aware mixing (easy=all direct, medium=2 direct+2 harder,
  hard=1 direct+2 medium+comparisons)
- Add new clue types: club, trophy (World Cup/Euro/Copa), award
  (Ballon d'Or/Golden Boot), with full i18n support in 6 languages

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 07:18:58 +02:00
2026-05-02 20:50:36 +02:00
2026-05-02 20:50:36 +02:00
2026-05-02 20:50:36 +02:00
2026-05-02 20:50:36 +02:00
2026-05-02 20:50:36 +02:00
2026-05-05 11:17:46 +02:00
2026-05-02 20:50:36 +02:00
2026-05-02 20:50:36 +02:00
2026-05-02 20:50:36 +02:00
2026-05-02 20:50:36 +02:00
2026-05-02 20:50:36 +02:00

hidden11

Daily football lineup puzzle built with Next.js, React, TypeScript and Tailwind CSS.

Player data provenance and clue rules are documented in docs/data-sources.md.

Local development

npm install
npm run dev

Open http://localhost:3000.

Optional analytics env vars:

  • NEXT_PUBLIC_GA_MEASUREMENT_ID: GA4 measurement ID, e.g. G-XXXXXXXXXX
  • NEXT_PUBLIC_CLARITY_PROJECT_ID: Microsoft Clarity project ID

Optional feedback env vars:

  • N8N_FEEDBACK_WEBHOOK_URL: n8n webhook URL used to receive feedback submissions

Optional sponsor env vars:

  • NEXT_PUBLIC_SPONSOR_ENABLED: set to false to hide the sponsor slot
  • NEXT_PUBLIC_SPONSOR_NAME: sponsor name shown in the slot
  • NEXT_PUBLIC_SPONSOR_TAGLINE: short sponsor copy
  • NEXT_PUBLIC_SPONSOR_CTA: sponsor button text
  • NEXT_PUBLIC_SPONSOR_URL: outbound sponsor URL
  • NEXT_PUBLIC_SPONSOR_LABEL: small label above the sponsor name

Production build

npm run build
npm start

Docker

docker build -t hidden11:latest .
docker run --rm -p 3000:3000 hidden11:latest

CI/CD

Gitea Actions workflow:

  • .gitea/workflows/build-and-push.yaml
  • Builds on main
  • Pushes:
    • gitea.alexandre-vazquez.cloud/alexandrev/hidden11:<git-sha>
    • gitea.alexandre-vazquez.cloud/alexandrev/hidden11:latest

Required Gitea repository secrets:

  • REGISTRY_USERNAME: alexandrev
  • REGISTRY_TOKEN: token with package/container registry permissions

Create/read tokens from pass; never commit credentials.

Kubernetes

kubectl apply -f deploy/k8s

The app is configured for:

  • Namespace: hidden11
  • Ingress host: hidden11.app
  • Ingress class: public
  • TLS secret: hidden11-tls

To enable analytics in Kubernetes, create a secret named hidden11-analytics in the hidden11 namespace with:

  • NEXT_PUBLIC_GA_MEASUREMENT_ID
  • NEXT_PUBLIC_CLARITY_PROJECT_ID

To enable feedback submission, create a secret named hidden11-feedback in the hidden11 namespace with:

  • N8N_FEEDBACK_WEBHOOK_URL

To configure the sponsor slot in Kubernetes, create a secret named hidden11-sponsor in the hidden11 namespace with any of:

  • NEXT_PUBLIC_SPONSOR_ENABLED
  • NEXT_PUBLIC_SPONSOR_NAME
  • NEXT_PUBLIC_SPONSOR_TAGLINE
  • NEXT_PUBLIC_SPONSOR_CTA
  • NEXT_PUBLIC_SPONSOR_URL
  • NEXT_PUBLIC_SPONSOR_LABEL

ArgoCD

kubectl apply -f deploy/argocd/application.yaml

The ArgoCD Application includes ArgoCD Image Updater annotations for:

  • image: gitea.alexandre-vazquez.cloud/alexandrev/hidden11
  • strategy: digest
  • write-back: argocd
S
Description
No description provided
Readme 893 KiB
Languages
TypeScript 86.4%
JavaScript 13%
Dockerfile 0.4%
CSS 0.2%