Plataforma para gestionar partidos de fútbol, equipos y torneos, construida con Nuxt 4, Vue 3 y Vuetify.
- Nuxt 4 (SSR) y Vue 3
- Vuetify 3 (UI)
- Pinia + pinia-plugin-persistedstate
- Autenticación con
nuxt-auth-sanctum - i18n (
@nuxtjs/i18n) - Google Maps (
vue3-google-map) - Formularios y validación:
@vee-validate/nuxt,yup - Utilidades:
@vueuse/nuxt,@nuxt/image,@nuxt/icon,nuxt-svgo,vue-sonner
- Node.js 18+
- Yarn 1.x o npm
- Opcional: PM2 (para producción), Docker
- Instalar dependencias
yarn install
# o
npm install- Variables de entorno
Copia .env.example a .env y completa los valores necesarios:
NUXT_PUBLIC_URL_BACKEND= # URL del backend (Laravel)
NUXT_PUBLIC_BACKEND_PREFIX=api/v1 # Prefijo API del backend
NUXT_PUBLIC_APP_NAME=Futzo # Nombre de la app (meta)
NUXT_GOOGLE_MAPS_API_KEY= # API key de Google Maps
NUXT_GOOGLE_MAP_ID= # Map ID (opcional)
NUXT_HOST=0.0.0.0 # Host de arranquePara compilaciones de producción, usa .env.prod (ver sección de build).
Levanta el servidor en http://localhost:3000:
yarn dev
# o
npm run devdev: inicia el entorno de desarrollobuild: compila la app para producción usando.env.prodbuild:test: compila usando.envpreview: previsualiza la build localmentegenerate: genera salida estática (si aplica)test: corre Vitest (unit + nuxt UI)test:nuxt: corre sólo los tests de UI con @nuxt/test-utils (mocks)test:e2e: corre E2E headless (peticiones reales) con RUN_E2E=1pw:install: instala navegadores de Playwrighttest:pw: corre E2E de navegador (Playwright) contra backend realtest:pw:headed: igual que arriba pero con navegador visible
- Compilar
# usa .env.prod automáticamente
yarn build
# o
npm run build- Previsualizar la build
yarn preview
# o
npm run preview- Ejecutar en producción
- Sin PM2:
node .output/server/index.mjs- Con PM2 (recomendado):
pm2 start ecosystem.config.cjs
pm2 statusEl archivo ecosystem.config.cjs lanza .output/server/index.mjs en el puerto 3000.
El script deploy.sh realiza el build, copia ecosystem.config.cjs a .output/ y hace push forzado del contenido de .output/ al branch web del repositorio. Requiere GITHUB_TOKEN configurado y un archivo .env.prod válido.
export GITHUB_TOKEN=xxxx
./deploy.shNota: Este flujo asume una infraestructura que consuma el branch web. Ajusta según tu proveedor.
El Dockerfile actual ejecuta el modo desarrollo:
docker build -t futzo .
docker run --env-file .env -p 3000:3000 futzoPara producción, considera una build multi-stage que ejecute .output/server/index.mjs.
- Google Fonts: la integración
@nuxtjs/google-fontsnecesita red durante el build. En ambientes sin acceso, desactiva el módulo o provee las fuentes localmente. - Íconos personalizados: ver
app/assets/iconsy la configuración de@nuxt/iconennuxt.config.ts.
- Mocks de endpoints con
registerEndpointpara validar wiring UI→API sin salir al backend. - Config:
vitest.config.ts(proyectonuxt).
- Proyecto
nuxt-e2eapunta al backend definido porNUXT_PUBLIC_URL_BACKEND. - Ejecutar:
RUN_E2E=1 NUXT_PUBLIC_URL_BACKEND=http://app.futzo.test yarn test:e2e- Configurar
.env(ver.env.example):
NUXT_PUBLIC_URL_BACKEND=http://app.futzo.test
NUXT_PUBLIC_BACKEND_PREFIX=api/v1
PW_E2E_EMAIL=tu-usuario@example.com
PW_E2E_PASSWORD=tu-password
# Opcional si usas host local custom
# PW_BASE_URL=http://futzo.test:3000- Instalar navegadores de Playwright:
yarn pw:install- Correr tests:
yarn test:pw # headless
yarn test:pw:headed # con navegador visibleRequisitos para entorno local:
- El dominio
app.futzo.testdebe resolver a tu backend local (edita/etc/hostssi aplica). - Backend con Sanctum/CORS configurado para permitir origen del front (
127.0.0.1:3000ofutzo.test:3000).
app/Componentes, layouts y assets de la appserver/(si aplica) endpoints y middlewarepublic/assets públicos.output/resultado de la build (se genera tras compilar)
- Crea una rama desde
main - Haz cambios y valida localmente
- Abre un Pull Request con contexto y capturas si aplica
UNLICENSED