# Nuxt 4 + Authentik OAuth + PWA Template Template de aplicación Nuxt 4 con autenticación OAuth/OIDC usando Authentik y funcionalidad PWA (Progressive Web App). ## 🚀 Características - ✅ **Nuxt 4** - Framework Vue.js de última generación - ✅ **Autenticación OAuth/OIDC** - Integración con Authentik - ✅ **PWA** - Funciona offline con Service Workers - ✅ **Docker** - Despliegue con Docker Compose - ✅ **Traefik** - Configurado para reverse proxy - ✅ **Gitea Actions** - CI/CD automático incluido - ✅ **TypeScript** - Tipado estático - ✅ **Nuxt UI** - Componentes UI modernos ## 📋 Requisitos Previos - Docker y Docker Compose - Authentik corriendo (en la misma red Docker) - Traefik como reverse proxy - Gitea (opcional, para CI/CD) ## 🛠️ Instalación Rápida 1. **Clona el repositorio** ```bash git clone https://tu-repo.git cd seguidor-lotes ``` 2. **Configura variables de entorno** (ver `SETUP.md` para detalles) 3. **Despliega** ```bash docker-compose up -d ``` ## 📖 Documentación Completa Ver [SETUP.md](./SETUP.md) para: - Configuración detallada de Authentik - Variables de entorno requeridas - Configuración de Gitea Actions - Troubleshooting - Personalización ## 🏗️ Estructura del Proyecto ``` ├── .gitea/ │ └── workflows/ # CI/CD workflows ├── nuxt4-app/ │ ├── app/ │ │ ├── components/ # Componentes Vue │ │ ├── middleware/ # Middleware de autenticación │ │ └── pages/ # Páginas de la aplicación │ ├── server/ │ │ └── api/ # API endpoints │ │ ├── auth/ # Rutas de autenticación OAuth │ │ └── protected.get.ts # Ejemplo de API protegida │ ├── public/ # Assets estáticos y PWA icons │ ├── nuxt.config.ts # Configuración de Nuxt │ └── Dockerfile # Dockerfile para producción ├── docker-compose.yml # Configuración de Docker Compose └── SETUP.md # Guía de configuración detallada ``` ## 🔐 Autenticación El template implementa OAuth 2.0 / OpenID Connect con: - Login con Authentik - Protección de rutas con middleware - Protección de APIs con `requireUserSession` - Información de usuario (email, nombre, grupos) - Logout completo ## 🎨 Personalización 1. **Cambiar nombre de la app**: Edita `nuxt4-app/nuxt.config.ts` 2. **Añadir páginas protegidas**: Usa `definePageMeta({ middleware: 'auth' })` 3. **Crear APIs protegidas**: Usa `requireUserSession(event)` en tus handlers 4. **Customizar UI**: Modifica componentes en `app/components/` ## 🐛 Troubleshooting Problemas comunes y soluciones en [SETUP.md - Sección 10](./SETUP.md#10-troubleshooting) ## 📝 Licencia MIT ## 🤝 Contribuir Este es un template base. Siéntete libre de: 1. Fork el proyecto 2. Crear una rama para tu feature 3. Commit tus cambios 4. Push a la rama 5. Abrir un Pull Request