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:
El formulario de contacto:
Todo mediante entorno server-side seguro.
npm install
cp .env.example .env.local
npm run dev
Aplicació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 FirebaseConfigurar 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.
Agregar en .env.local y en Vercel:
RESEND_API_KEY=
Cada envío del formulario ejecuta:
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:
Resend
Nodemailer + Gmail
Todo el envío de emails se ejecuta server-side mediante API Routes de Next.js, evitando exponer credenciales en el frontend.
Configurar variables de entorno:
No requiere servidor adicional.
Sistema completamente serverless.
Este portfolio prioriza:
La base permite incorporar:
Sin necesidad de reestructuración.