Volver al inicio

Vibecoding MVP: tinder para películas en Node.js y AI

Ingeniero QA con Ayuda de AI Construyó MVP KiSwipe — Servicio para Selección Conjunta de Películas vía Swipes de Tráilers. Stack: Node.js, vanilla JS, TMDB. Arquitectura Modular y Lecciones de Vibecoding para Prototipo Rápido.

QA Creó Movie-TikTok con Coincidencias: vibecoding en Práctica
Advertisement 728x90

Vibecoding en acción: un MVP de Tinder de películas creado por un ingeniero QA con Node.js y TMDB

Un ingeniero QA especializado en pruebas manuales desarrolló KiSwipe — una aplicación web para parejas que descubren películas juntas, inspirada en el sistema de deslizamiento de Tinder y una fila vertical de tráilers — en apenas un fin de semana. Sin presupuesto, con una pila mínima: Node.js, Express, JavaScript puro y Swiper.js. La inteligencia artificial (Gemini 3.1 Pro) generó código a partir de instrucciones detalladas, mientras el desarrollador mantuvo el control total sobre la arquitectura y la descomposición de tareas.

La app resuelve el problema de descripciones aburridas de películas con una alimentación automática de tráilers en alta definición, deslizar hacia arriba o abajo, guardar gustos en favoritos y sincronización de sesiones para ver juntos. El servidor detecta coincidencias en los gustos y activa una animación de '¡Es una coincidencia!' con la portada de la película.

Cómo funciona KiSwipe: desde la lista hasta la coincidencia

Los usuarios acceden a una fila completa de tráilers extraídos de la API de TMDB. Funcionalidades clave:

Google AdInline article slot
  • Reproducción automática de videos en una lista vertical impulsada por Swiper.js.
  • Al dar me gusta a un tráiler, se guarda en favoritos (usando localStorage + memoria RAM del servidor).
  • Crear una 'Conexión' genera una sala única (/room=ID).
  • Un compañero se une mediante un enlace y introduce un nombre.
  • Los gustos se sincronizan cada 2 segundos usando un mecanismo de sondeo similar a WebSocket.
  • Cuando ambos usuarios les gusta la misma película, la lista se bloquea y aparece '¡ES UNA COINCIDENCIA!' con la portada de la película.

Los filtros por género aparecen en la barra lateral izquierda, y el desplazamiento infinito está habilitado mediante paginación. La interfaz es completamente responsiva — funciona sin problemas en móviles y escritorios.

Pila tecnológica y decisiones arquitectónicas

La IA recomendó una pila óptima para despliegue rápido en un VPS:

  • Backend: Node.js + Express para endpoints de API y servir archivos estáticos.
  • Datos: API de TMDB para metadatos de películas (sin base de datos local), salas y gustos almacenados en memorias RAM del servidor + localStorage del cliente.
  • Frontend: HTML/CSS/JS puros, Swiper.js para la lista, YouTube Iframe API para la reproducción de videos.

La versión inicial era un archivo monolítico index.js (~1000 líneas). La experiencia en QA aconsejó dividirlo en módulos para aislar errores.

Google AdInline article slot
// _ui.js — manipulación del DOM solo
class UIManager {
  showModal(type, data) { /* modales, notificaciones */ }
  updateLikeButton(filmId, liked) { /* botones */ }
}

// player.js — YouTube Iframe API
class VideoPlayer {
  init() { /* onYouTubeIframeAPIReady */ }
  loadTrailer(videoId) { /* cueVideoById */ }
}

// _swiper.js — paginación y deslizamientos
class SwiperManager {
  fetchNextPage(page) { /* llamada a la API de TMDB */ }
  handleSwipe(direction) { /* temporización, pre-carga */ }
}

// storage.js — envoltorio para localStorage
class Storage {
  saveLikes(likes) { localStorage.setItem('likes', JSON.stringify(likes)); }
}

La modularidad permitió actualizaciones independientes: cambiar el comportamiento de deslizamiento no rompía el reproductor. La IA generó código por módulo bajo estricto control de prompts.

Desafíos del vibecoding y sus soluciones

El vibecoding implica generar código mediante IA a partir de descripciones de alto nivel sin profundidad técnica. Ventajas: entrega rápida del MVP. Desventajas: arquitectura débil sin supervisión.

Conclusiones clave:

Google AdInline article slot
  • Monolito → Módulos: Aislar lógica (UI, reproductor, swiper, almacenamiento) simplificó la depuración.
  • Almacenamiento de datos: RAM + localStorage en lugar de base de datos — ideal para MVPs no persistentes.
  • Estrategia de sincronización: Sondeo cada 2 segundos en lugar de WebSockets — bajo costo computacional.

Pruebas: QA manual cubrió escenarios principales (deslizamientos, coincidencias, creación de sala). Abierto a pruebas de colapso comunitarias.

Adaptación al mercado global

La API de YouTube Iframe estaba bloqueada en Rusia — lo que provocaba retrasos en la carga. Solución: cambiar la interfaz a inglés y establecer la región de TMDB en EE.UU. (Netflix, Hulu, Amazon Prime). Ahora los tráilers cargan sin problemas, y la conversión no se ve afectada por restricciones de red.

Despliegue en VPS: funciona sin problemas en navegadores de escritorio y móvil. Próximos pasos: escalabilidad de tráfico mediante Shorts generados por IA usando FFmpeg + OpenAI.

Lo que más importa

  • La arquitectura modular salvó el vibecoding del código espagueti: editar un archivo no rompe otros.
  • La pila Node.js + JS puro + TMDB minimiza dependencias para desarrollo rápido del MVP.
  • La sincronización de gustos mediante RAM/localStorage funciona perfectamente en prototipos de bajo tráfico.
  • Cambiar a la región EE.UU. resolvió el bloqueo de YouTube sin necesidad de proxies.
  • Prompts de IA guiados por QA: dividir tareas en partes más pequeñas acelera la iteración.

— Editorial Team

Advertisement 728x90

Leer después