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 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 mediante 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 principalsrc/components→ Componentes reutilizablessrc/config→ Configuración editable (perfil y proyectos)src/app/api/contact→ Endpoint de guardado y notificacionessrc/lib/firebaseAdmin.ts→ Inicialización segura de Firebase
- Crear proyecto en Firebase Console
- Activar Cloud Firestore
- Project Settings → Service Accounts
- Generar nueva clave privada (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 https://resend.com
- 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 nodemailer
Agregar en .env.local y en Vercel:
GMAIL_USER=tu_email@gmail.com
GMAIL_APP_PASSWORD=tu_app_password
Importante:
La GMAIL_APP_PASSWORD es una contraseña de aplicación generada desde la cuenta de Google (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.
Resend
- Ideal para emails transaccionales
- Alta entregabilidad
- Fácil integración con API
Nodemailer + Gmail
- 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 proyecto en Vercel.
-
Configurar variables de entorno:
- Firebase
- Resend
- Nodemailer
-
Deploy automático.
No requiere servidor adicional.
- Usuario envía 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.