Implement complete World Cup 2026 informational website with countdown, fixtures, and deployment #2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This PR implements a complete, production-ready World Cup 2026 informational website as specified in the requirements. The site provides comprehensive information about the tournament including a real-time countdown, fixtures with advanced filtering, venue details, and team information.
What's New
Core Features
Real-time Countdown
aria-liveattributes for screen readersFixtures Management
Venue Information
Team Pages
Technical Implementation
Stack & Architecture
Data Structure
All tournament data is stored in validated JSON files:
Quality & Testing
CI/CD Pipeline
Automated GitHub Actions workflow that:
Accessibility & SEO
Screenshots
Homepage with Real-time Countdown

The homepage features a hero section with tournament information, a large countdown timer, quick access cards, and upcoming matches.
Fixtures Page with Interactive Filters

The fixtures page allows users to filter matches by phase and group, with real-time client-side filtering. Here showing only Group A matches after clicking the filter.
Deployment
The site is configured for automatic deployment to GitHub Pages:
maintrigger the deployment workflowSee DEPLOYMENT.md for detailed instructions.
Data Management
Update tournament data by editing JSON files in the
/datadirectory:Important Configuration Notes
2026-06-11T16:00:00Zinlib/constants.ts. This should be updated when FIFA confirms the official start date.The constant is clearly marked with a TODO comment for easy discovery:
Running Locally
Future Enhancements
The architecture supports easy extension for:
Project Structure
This implementation delivers a complete, accessible, and maintainable World Cup 2026 website ready for production deployment.
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
fonts.googleapis.com/usr/local/bin/node /home/REDACTED/work/VSCodeDevDaysLatam/VSCodeDevDaysLatam/node_modules/next/dist/compiled/jest-worker/processChild.js(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
Quiero que crees una web pública centrada en el Mundial de Fútbol 2026 (fixtures, fechas, sedes/lugares y equipos). La página principal debe mostrar un countdown de días (y horas/minutos) restantes para el inicio del torneo.
Entrega el proyecto completo en un repositorio nuevo y déjalo deployado en GitHub Pages.
Objetivo y alcance
Sitio informativo con:
Inicio: hero + countdown al inicio del Mundial, CTA a fixtures, búsqueda rápida.
Fixtures: calendario por fase, grupo y fecha; detalle de partido (equipos, sede, hora local).
Sedes: lista de ciudades/estadios con ficha (capacidad, ubicación, mapa embebido opcional).
Equipos: grid por confederación/grupo con ficha de selección (bandera, plantel opcional).
Acerca/FAQ: fuente de datos, créditos y notas legales.
Idioma por defecto: español (es-AR); preparar i18n para fácil futuro soporte en inglés.
Accesible (WCAG AA), responsive (mobile-first), con buen SEO y metadatos sociales.
Requisitos técnicos
Stack: Next.js 14 (App Router) + TypeScript + TailwindCSS.
UI components accesibles (Radix/shadcn) y iconos (lucide-react).
Estado ligero con React Server Components y/o Zustand para filtros (sin overengineering).
Datos: por ahora usa archivos JSON estáticos en /data con estructura limpia; deja un README explicando cómo actualizar a una API pública más adelante.
Fecha de inicio: crea una constante TOURNAMENT_START_UTC en lib/constants.ts (ejemplo: "2026-06-XXT00:00:00Z"). Añade un TODO visible para confirmar la fecha oficial.
Countdown: componente con SSR + client hydration, tick en tiempo real cada segundo, y prueba unitaria básica.
Rutas:
/ (home con countdown)
/fixtures (lista + filtros por fase, grupo, sede, fecha; vista calendario/tabla)
/fixtures/[matchId]
/sedes y /sedes/[slug]
/equipos y /equipos/[code]
/acerca
Filtros & UX: búsqueda por equipo/ciudad/estadio; chips de fase (grupos, 16avos/8vos, cuartos, semi, 3° puesto, final); paginación o virtualización si hace falta.
Formato de fechas: mostrar en hora local del usuario con fallback a horario de la sede; usar Intl.DateTimeFormat('es-AR', …) y timeZone por sede.
Accesibilidad: contrastes, focus rings, navegación por teclado, aria-live para el countdown, alt en banderas/escudos.
SEO: next-seo, sitemap, robots.txt, Open Graph/Twitter cards, títulos y descripciones únicas.
Rendimiento: imágenes optimizadas con next/image; lazy loading donde tenga sentido; eslint, prettier.
Diseño
Look & feel limpio: tipografía sans, cards con sombras suaves y bordes rounded-2xl, layout en grid.
Paleta neutra + acentos en un color (verde/azul) y modo oscuro con class-based theming.
En home: hero con background sutil, contador grande, y tres shortcuts (Fixtures, Sedes, Equipos).
Estructura de datos (ejemplo en /data)
teams.json
[
{ "code": "ARG", "name": "Argentina", "group": "C", "confed": "CONMEBOL", "flag": "/flags/ARG.png" }
]
venues.json
[
{ "slug": "estadio-azteca", "name": "Estadio Azteca", "city": "Ciudad de México", "country": "México", "capacity": 87000, "tz": "America/Mexico_City" }
]
matches.json
[
{ "id": "mx-001", "dateUTC": "2026-06-XXT19:00:00Z", "stage": "Group A", "group": "A",
"home": "MEX", "away": "X", "venue": "estadio-azteca"
}
]
Incluye scripts de validación de schema (Zod) en scripts/validate-data.ts.
Páginas y componentes mínimos
app/page.tsx: Hero + + tarjetas de acceso rápido + “Próximos partidos”.
app/fixtures/page.tsx: tabla con filtros (fase, grupo, sede, fecha); client component para filtrado.
app/fixtures/[matchId]/page.tsx: detalle con banderas, estadio, hora local/UTC, mapa opcional (iframe).
app/sedes/page.tsx y [slug]: ficha de estadio con metadatos y lista de partidos en esa sede.
app/equipos/page.tsx y [code]: ficha de selección; lista de partidos.
app/acerca/page.tsx: fuentes, cómo actualizar datos, crédito de banderas.
components/Countdown.tsx: calcula (Días, Horas, Min, Seg) con aria-live="polite".
components/MatchCard.tsx, TeamBadge.tsx, VenueCard.tsx, FiltersBar.tsx.
Calidad, pruebas y CI
Tests: vitest + @testing-library/react para y filtrado de fixtures.
Lints: ESLint + Prettier + tsconfig estricto.
CI: GitHub Actions (Node LTS) con jobs: install → lint → typecheck → test → build → deploy (Pages).
Docs: README.md con: cómo correr, cómo editar datos, cómo publicar, cómo cambiar TOURNAMENT_START_UTC.
Deploy
Usa GitHub Pages (Next.js estático):
next.config.js con output: 'export' y images: { unoptimized: true }.
basePath si el repo no es de usuario orgánico.
Workflow pages.yml que haga next build && next export y publique ./out.
Añade un favicon y un manifest.webmanifest.
Tareas que debes ejecutar (en orden)
Crear repo nuevo world-cup-2026-web (público).
Scaffolding Next.js + TS + Tailwind.
Añadir shadcn/ui (los básicos: Card, Button, Badge, Tabs, Input).
Crear /data con los JSON de ejemplo y validadores.
Implementar rutas, component...
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.