¡Suscribite al newsletter!
En mi grupo de amigos hay necesidades de compraventa. Está quien quiere vender cartas de Magic, o el que quiere cambiar el auto. Tenemos un grupo de Whatsapp espectacular para esto, donde buscamos comprar y vender sin pasar por Mercado Libre, que cobra una interesante comisión, o Facebook Marketplace, donde es difícil encontrar vendedores honestos. La comunidad funciona.
Sin embargo, es cierto que lo que queda en compraventa se pierde en un grupo de Whatsapp, y se pierde relevancia. Entonces, teniendo un hosting, quise crear algo en WordPress para armar un marketplace.
Y era un exceso: no cubría lo que yo quería hacer. Y los lenguajes de programación que conozco (orientados a backend y data) no podían, rápidamente, cubrir la creación de un sitio web de Marketplace.
Hasta que me acordé de Cursor, del que hablé la semana pasada en esta nota.
Vibrando código
El prompt fue tan simple como “armame una app en php que permita a usuarios registrados publicar artículos, y a otros usuarios registrados contactar con el creador de la publicación por Whatsapp clickeando un botón, usando una base de datos MySQL”.
Y Cursor, con el modelo Claude Sonnet 3.7, empezó, de a poquito, a hacer su magia: me armó todo lo básico y necesario para que la aplicación funcione: scripts de tablas en MySQL, formulario de registro, lista de productos, página de login, y, puntualmente, la lógica de negocio que necesitaba: que sólo usuarios registrados puedan ver los links al Whatsapp del vendedor.
Eso sí, tuve que instalar dependencias, que con el agente de Cursor no costó mucho (aunque me dió a elegir entre distintas opciones que, reconozco, alguien sin conocimiento técnico alguno no podría tocar). PHP y MySQL fueron instalados en local. Y nada más. Así que me propuse probar este nuevo monstruo.
Localmente, funcionaba de mil maravillas en un primer intento. No tuve que cambiar absolutamente nada para que la aplicación funcione. Y todo lo que quise hacer, estaba hecho.
El problema es, como suele suceder, cuando tuve que cambiar cosas. Para el formulario de registro no tuve muchos inconvenientes: tuve que agregar un validador reCaptcha para que los bots no se registren “tan fácilmente”, mientras que además, tuve que crear un sistema de aprobación: los usuarios se pueden registrar pero deben esperar a que yo, o la persona que los sugirió, los apruebe. Caso contrario, no pueden ver los teléfonos. En este punto en concreto, hizo la mitad de las cosas: lo hizo para el sitio del artículo a la venta, pero no para la página de listado. Tuve que pedirle que lo haga.
Le pedí también que me arme un script de deploy con los datos FTP de mi cuenta, pero lo hizo bastante mal: listó mal los archivos y armó carpetas donde no debía. Al final, lo hice como correspondía: subiendo los archivos a mano.
Por último, fue necesario habilitarle un “modo debug”, porque me estaban fallando cosas y resolvía páginas en blanco (que usualmente significan errores). Cursor no se gastó mucho en resolver qué versión de reCaptcha iba a usar o explicitarlo en el prompt, por lo que hubo que corregir eso. Y finalmente, sí señores, anduvo.
Mis conclusiones
Cursor gratuito y Claude Sonnet 3.7 (y después rebajado a 3.5, por limitaciones del plan) fueron suficientes para la tarea en mano. Sin gastar un centavo más que en café y luz, hice un prototipo de una aplicación, bastante funcional. ¿Es un proyecto sólo per sé? No, ni cerca: proyectos de marketplace necesitan comerciales y alcance. No es mi idea, si no que mis amigos y conocidos puedan comprar y vender de manera directa, con algo de trazabilidad y privacidad sobre quién los contacta.
Dicho esto, esto aceleró mucho algo que me hubiese tardado una semana, por mis propias limitaciones, tanto técnicas como de tiempo. En total, considerando configuraciones de desarrollo y de entorno, tardé 4 horas.
También considero que a alguien que no tenga ningún conocimiento técnico podría haberle tardado muchísimo más. ¿Cómo sabe qué lenguaje tiene que usar? ¿Qué tablas de bases de datos crear? ¿Algoritmos de seguridad? ¿Y configurar un dominio y su correspondiente DNS?
Si yo no le hubiese especificado exactamente lo que yo quería, y esto lo hubiese intentado, por ejemplo, un administrativo desde cero, no creo que hubiese tardado 2 meses, pero al menos una semana full time.
Ah, el prototipo (funcional) lo encontrás acá: https://tienda.animadata.com/. Estás invitado a registrarte y ponerme a mí como referente (Martin, sin tilde). Si te interesa vender algo (y te conozco), sos libre de usar la plataforma. Eso sí, vas a tener que dejar tu número real.