Portfolio profesional desarrollado con Next.js, React y TypeScript, diseñado con Tailwind CSS y una estética cyberpunk/futurista definida.
Este proyecto combina diseño visual sólido, animaciones controladas, integración 3D y backend real con Firebase, incluyendo un sistema de notificaciones por correo en tiempo real.
Es una aplicación moderna lista para producción que demuestra:
- Arquitectura clara con App Router.
- Componentes reutilizables y desacoplados.
- Feedback visual inmediato.
- Integración real con backend.
- Envío automático de notificaciones por email.
- Preparación directa para deploy en Vercel.
El formulario de contacto:
- Guarda los mensajes en Cloud Firestore.
- Envía notificación automática al administrador.
- Envía respuesta automática de confirmación al usuario.
Todo se ejecuta mediante un entorno server-side seguro.
npm install
cp .env.example .env.local
npm run devAplicación disponible en:
http://localhost:3000
src/app Rutas y estructura principal
src/components Componentes reutilizables
src/config Configuración editable de perfil y proyectos
src/app/api/contact Endpoint de guardado y notificaciones
src/lib/firebaseAdmin.ts Inicialización segura de Firebase
src/lib/mailer.ts Configuración de Nodemailer
- Crear un proyecto en Firebase Console.
- Activar Cloud Firestore.
- Ir a Project Settings.
- Entrar en Service Accounts.
- Generar una nueva clave privada en formato JSON.
Configurar en .env.local y en Vercel:
FIREBASE_PROJECT_ID=
FIREBASE_CLIENT_EMAIL=
FIREBASE_PRIVATE_KEY=Importante: la clave privada debe mantener los saltos de línea usando
\n.
Resend es un servicio moderno de envío de correos electrónicos transaccionales diseñado para aplicaciones web.
En este proyecto se utiliza para gestionar el envío de mensajes desde el formulario de contacto, permitiendo notificaciones inmediatas y confiables sin necesidad de configurar manualmente un servidor SMTP.
Esta arquitectura permite una comunicación robusta, escalable y alineada con prácticas modernas de desarrollo.
- Registrarse en Resend.
- Generar una API Key.
Agregar en .env.local y en Vercel:
RESEND_API_KEY=Cada envío del formulario ejecuta:
- Guardado seguro en Firestore.
- Email transaccional de notificación al administrador.
Todos los envíos se realizan desde el entorno server-side usando API Routes.
Nodemailer es una librería de Node.js que permite enviar emails usando protocolos SMTP tradicionales. A diferencia de servicios API como Resend, Nodemailer permite conectarse directamente a proveedores de correo como Gmail, Outlook u otros servidores SMTP.
En este proyecto se utiliza Nodemailer para enviar el email automático de confirmación al usuario que completa el formulario de contacto.
Esta implementación permite el envío programático de correos electrónicos mediante SMTP, ofreciendo control total sobre la configuración y el proveedor de envío.
Su uso resulta adecuado para entornos donde se requiere personalización avanzada o integración con servidores propios.
Agregar la dependencia al proyecto:
npm install nodemailerAgregar en .env.local y en Vercel:
GMAIL_USER=tu_email@gmail.com
GMAIL_APP_PASSWORD=tu_app_passwordImportante:
GMAIL_APP_PASSWORDes una contraseña de aplicación generada desde la cuenta de Google y requiere 2FA activado.
Ejemplo en src/lib/mailer.ts:
import nodemailer from "nodemailer";
export const transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: process.env.GMAIL_USER,
pass: process.env.GMAIL_APP_PASSWORD,
},
});El flujo completo del formulario es:
- Guardado seguro del mensaje en Firestore.
- Envío de notificación al administrador usando Resend.
- Envío de email automático de confirmación al usuario usando Nodemailer + Gmail SMTP.
- Ideal para emails transaccionales.
- Alta entregabilidad.
- Fácil integración con API.
- Permite enviar auto-respuestas sin necesidad de dominio propio.
- Útil para proyectos personales y portfolios.
- Control directo del envío SMTP.
- Nunca exponer credenciales en el repositorio.
- Usar siempre variables de entorno.
- Mantener activado 2FA en la cuenta de Gmail utilizada.
Todo el envío de emails se ejecuta server-side mediante API Routes de Next.js, evitando exponer credenciales en el frontend.
- Subir el repositorio a GitHub.
- Importar el proyecto en Vercel.
- Configurar variables de entorno:
- Firebase
- Resend
- Nodemailer
- Ejecutar el deploy automático.
No requiere servidor adicional.
- El usuario envía un mensaje.
- Validación con Zod.
- Persistencia en Firestore.
- Notificación por email al administrador.
- Auto-respuesta automática al usuario.
- Confirmación visual mediante SweetAlert2.
Sistema completamente serverless.
Este portfolio prioriza:
- Identidad visual coherente.
- Código mantenible.
- Integración real con backend.
- Seguridad en entorno server-side.
- Arquitectura escalable.
La base permite incorporar:
- Autenticación.
- Panel administrativo.
- Analytics.
- Logs estructurados.
- Monitorización.
- Integración con CRM.
Sin necesidad de reestructuración.