🚀 Cómo desplegar una aplicación Full-Stack en producción con Seenode

(Node.js + Express + Prisma + PostgreSQL + Next.js en repos separados)

Deployar una aplicación web moderna no debería sentirse como configurar un satélite. Sin embargo, cuando intentas conectar backend, frontend, base de datos, variables de entorno y dominios… puede volverse un caos rápidamente.

En este tutorial aprenderás cómo subir a producción una aplicación full-stack usando Seenode, con:

  • Repos separados para frontend y backend
  • PostgreSQL administrado
  • Deploy automático desde GitHub
  • HTTPS y dominio personalizado
  • Prisma como ORM
  • Configuración real para un entorno estable en producción

Ideal para proyectos profesionales, SaaS, MVPs o aplicaciones para clientes.


🧱 Arquitectura del proyecto

graph TD;
User --> Frontend["Next.js (Frontend)"];
Frontend --> Backend["Node.js + Express API"];
Backend --> DB["Seenode PostgreSQL"];

📂 Estructura de repositorios

Tu proyecto debería estar organizado así:

/
├─ backend/   → Repo independiente (Express + Prisma)
└─ frontend/  → Repo independiente (Next.js)

Esto es importante porque Seenode desplegará cada uno como servicio individual.


1️⃣ Configurar la Base de Datos en Seenode

Antes de deployar cualquier código necesitas la base de datos.

  1. En tu panel Seenode → Databases → Create Database
  2. Selecciona PostgreSQL
  3. Copia tu DATABASE_URL, ejemplo:
postgresql://user:password@host:5432/dbname?sslmode=require
  1. Guarda esta cadena: la usarás en el backend y opcionalmente en Prisma Studio remoto.

💡 Consejo: activa backups automáticos si tu proyecto es para un cliente o producción real.


2️⃣ Preparar el Backend (Node.js + Express + Prisma)

Tu backend debe tener:

  • server.js o index.js
  • Prisma con migraciones
  • Scripts de producción correctos
  • Variables de entorno externas (no commit .env)

Ejemplo de package.json:

{
  "scripts": {
    "dev": "nodemon server.js",
    "build": "echo 'Nothing to build'",
    "start": "node server.js",
    "migrate": "npx prisma migrate deploy"
  }
}

Archivo .env.example recomendado:

DATABASE_URL=
PORT=3000
JWT_SECRET=
NODE_ENV=production

Prueba local:

npx prisma migrate deploy
npm start

Si responde en:

http://localhost:3000/api/health

ya estás listo.


3️⃣ Deploy del Backend en Seenode

  1. En Seenode → New Application
  2. Elige Deploy from GitHub
  3. Selecciona el repo backend
  4. Configura:
Configuración Valor
Install command npm install
Build command npm run migrate
Start command npm start
  1. En Environment variables añade:
DATABASE_URL=postgres://...
PORT=3000
JWT_SECRET=tu_secreto
NODE_ENV=production
  1. Ejecuta deploy

Obtendrás algo como:

https://api-tuapp.seenode.app

📌 Guarda esta URL. El frontend la usará.


4️⃣ Preparar el Frontend (Next.js)

Asegúrate de tener scripts correctos:

{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  }
}

Variables necesarias:

NEXT_PUBLIC_API_URL=https://api-tuapp.seenode.app
NEXT_TELEMETRY_DISABLED=1

⚠️ Usa NEXT_PUBLIC_* solo para valores seguros, ya que quedan accesibles en el browser.


5️⃣ Deploy del Frontend en Seenode

  1. Crear nueva aplicación en Seenode
  2. Conectar repo frontend
  3. Configurar:
Configuración Valor
Install npm install
Build npm run build
Start npm start
  1. Agregar variables:
NEXT_PUBLIC_API_URL=https://api-tuapp.seenode.app

Cuando finalice tendrás algo como:

https://app-tuapp.seenode.app

6️⃣ 📌 Conectar Dominios Personalizados

Si tienes un dominio, así debería verse la asignación ideal:

Servicio URL
Frontend https://app.midominio.com
Backend https://api.midominio.com

Seenode emitirá certificados SSL automáticamente con Let’s Encrypt.


7️⃣ 🔍 Logs, Debugging y Observabilidad

Seenode incluye herramientas útiles como:

  • Logs en tiempo real
  • Restart automático si la app falla
  • Estadísticas de CPU / RAM

Si tu backend falla por Prisma, revisa:

npx prisma migrate deploy

o errores típicos como:

  • Falta de DATABASE_URL
  • Puerto distinto al definido en start script
  • Migraciones no aplicadas

8️⃣ Check-list antes de lanzar a usuarios 🚨

Verificación Estado
Base de datos conectada
Backend responde en /api/health
Frontend consume el backend correctamente
Variables de entorno configuradas
SSL activo
Deploy automatizado desde GitHub
Backups (opcional pero recomendado)

🎯 Resultado Final

Ahora tienes una arquitectura real lista para producción:

  • Frontend y Backend en repos independientes
  • PostgreSQL en la nube administrado
  • Deploy automático con cada push
  • Dominios personalizados con HTTPS
  • Infraestructura mínima y efectiva

Seenode elimina gran parte del dolor de “DevOps obligatorio” y te deja centrarte en construir.