📬 Mi primera waitlist: aprendiendo a construir hype desde cero
Juan Daniel Martínez
Publicado en Julio 24, 2025

Me animé a lanzar mi primera waitlist para mi side project de Pokémon. No es un producto revolucionario, pero aprendí bastante sobre asegurar las peticiones de una waitlist. A veces, lo importante no es el resultado… sino lo que aprendes en el camino.
Hace poco me subí al tren de las waitlists, y aunque quizá no era tan necesario, fue una experiencia divertida y me dejó varias lecciones. Este post no es para contarte que tengo una app revolucionaria (aún), sino para motivarte a que uses tus side projects como excusa para experimentar, probar cosas nuevas y disfrutar el proceso.
¿Cómo empezó todo?
Desde hace unos meses he estado bastante activo en X/Twitter. Empecé a seguir a mucha gente que está creando proyectos increíbles y compartiéndolos abiertamente con el mundo. Esto se le conoce como building in public, y como yo también quiero tener presencia online, hasta me compré la palomita azul para comprometerme con el viaje.
Una de las cosas que más se repiten entre los devs que crean productos es la famosa waitlist, donde los usuarios pueden dejar su correo para enterarse cuando el producto esté listo. Es como si fuera el tráiler de una película o un videojuego que todo mundo lleva esperando como el GTA VI, en pocas palabras genera mucho hype.
Dos casos que me inspiraron:
Athas.dev, un editor de código open source que incluso llamó la atención del mismísimo Guillermo Rauch, CEO de Vercel.
Maze, quien creó una alternativa open source a Capcut, el popular editor de videos, y que incluso su waitlist explotó con más de 500k registros (sí, también por un ataque de bots).
¿Y yo qué hice?
Aunque mi proyecto no es un SaaS revolucionario ni una herramienta super fancy, me animé a crear una waitlist para una app que empecé hace 4 años: Pokémon Stats. Es una herramienta simple para consultar evoluciones y debilidades entre tipos de Pokémon, ideal para no perder tiempo entre wikis mientras juego.
Siempre que empezaba una nueva partida de pokémon le iba agregando más cosas a medida que iba jugando y veía áreas de oportunidad, y ésta última vez retomando mi vieja partida olvidada de Pokémon Let's Go no fue la excepción. Ahora me reté a trabajar en un re-diseño de toda la app, mejorando el rendimiento, añadiendo nuevas funciones, y lograr el diseño que siempre quise que tuve, así que también por lo mismo decidí que era buena idea:
Dar de baja temporalmente la web.
Crear una landing page prometiendo que vendría una versión mejorada, junto con una waitlist.
Y aprovechar este impulso para aprender cosas nuevas en el camino (y obligarme a terminarlo, porque ya me comprometí con todo esto, así sean dos personas esperando por ello, no los puedo defraudar).
Ahora lo interesante ¿Cómo protegí mi waitlist?
Aprendí de errores ajenos y para llevarlo más allá que un simple formulario, tomé medidas para evitar bots y spam. Aquí un resumen técnico rápido:
1. Protección con CSRF Token
Genero un token único desde el servidor, sólo si la petición viene de un host autorizado.
El token se firma con una llave secreta que se configura en una variable de entorno.
Se guarda en una cookie con un tiempo de vida de 1 hora.
Cada petición
POST
para registrar un correo en la waitlist debe validar ese token, de lo contrario se rechaza y manda un error.
2. Detección de bots con BotID de Vercel
Funciona como un reCaptcha invisible.
Evalúa la interacción del usuario y valida si es un bot o no, tanto en frontend como en backend.
Me encantaría decir que entendí perfectamente la utilización de esta librería, pero a decir verdad sólo seguí los pasos de la implementación básica. A futuro me gustaría escribir un post explicando cómo funciona este sistema tras bambalinas.
3. (Faltante) Rate Limiter
No lo implementé... aún. Pero sería una buena excusa para aprender sobre el tema, incluso si mi tráfico no lo necesita de momento.
Conclusión
¿Era necesario? No.
¿Aprendí algo? Muchísimo.
¿Me divertí? También.
Este tipo de side projects no tienen que ser revolucionarios para enseñarte cosas. Estoy seguro de que todo esto me servirá cuando algún día lance algo más grande.
Así que si te gusta Pokémon, suscríbete a la waitlist, dale estrellita al repo, o échale un ojo al código (es open source, por cierto). ¡También me encantaría recibir feedback y recomendaciones!
Si te gustó este post, considera suscribirte a mi newsletter para recibir notificaciones de nuevos posts y contenido exclusivo.
Puedes hacerlo en la sección de Newsletter.