Partir de las personas y de la señal del producto
Una funcionalidad de producción responde a un motivo y necesita una forma de saber si resulta útil. La analítica introduce esa capa de medición: identificar actividad significativa y utilizarla para orientar decisiones de producto, en vez de tratar los números recopilados como un fin.
Integrar servicios en una experiencia coherente
Las API de IA y Stripe aportan capacidades externas distintas: una puede ofrecer comportamiento basado en modelos y la otra participa en flujos de pago. En ambos casos, la integración necesita un lugar claro en el producto, un comportamiento predecible y una configuración gestionada con cuidado.
Entender qué mantiene la aplicación en marcha
Una funcionalidad no termina cuando funciona en el ordenador de quien la desarrolla. Los conceptos de VPS presentan el entorno de servidor que puede alojar una aplicación activa y el contexto operativo que la rodea. Esta etapa conecta la intención del producto, los servicios externos y el pensamiento de despliegue.
Del concepto al código funcional
Estos fragmentos muestran cómo aparecen en proyectos reales los conceptos de cada nivel. Son puntos de partida para leer, cuestionar, adaptar y probar; no código para copiar sin entenderlo.
Mantener las credenciales en el servidor
La ruta valida la solicitud antes de llamar al servicio de IA. La clave procede de una variable de entorno del servidor y los errores externos se convierten en respuestas controladas; el secreto nunca llega al navegador.
export async function POST(request) {
const { prompt } = await request.json();
if (typeof prompt !== "string" || !prompt.trim()) {
return Response.json({ error: "Prompt is required." }, { status: 400 });
}
const upstream = await fetch(process.env.AI_API_URL, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ prompt: prompt.trim() }),
});
if (!upstream.ok) {
return Response.json({ error: "The service is unavailable." }, { status: 502 });
}
return Response.json(await upstream.json());
}Hacer reproducible la ejecución
El Dockerfile instala dependencias bloqueadas, compila en una etapa separada y ejecuta en modo producción con un usuario sin privilegios. Para publicar, añade una comprobación de salud, fija la imagen base e inyecta secretos desde la configuración.
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-alpine AS runtime
ENV NODE_ENV=production
WORKDIR /app
COPY --from=build /app .
EXPOSE 3000
USER node
CMD ["npm", "start"]Léelo y después adáptaloCambia un requisito, predice el resultado y ejecuta el código para comprobarlo. En la revisión, explica la decisión tomada y una mejora que harías después.