Tutoriales por semana
Semana 1 · Tu landing en vivo
Setup completo, landing personalizada con waitlist y deploy en producción.
Esta es la semana del hito grande: al terminarla, tu producto tiene una página web pública en internet, con tu nombre, tu copy y una URL que puedes mandar por WhatsApp. Todo lo que sigue en el curso se construye encima de esto.
Qué vas a tener al final
- ✅ La plantilla VibeFast clonada y corriendo en tu compu.
- ✅ Landing con tu copy, tus colores y un solo CTA claro.
- ✅ Waitlist funcionando en tu landing, guardando emails en tu base de datos.
- ✅ Todo deployado en Vercel con una URL pública.
Lo que debes tener antes
- Ficha de proyecto de Semana 0 — necesitas saber qué producto y para quién antes de escribir el copy.
- Cuentas creadas y compu preparada (Pasos 2 y 3 de la Semana 0). Si te lo saltaste, hazlo ahora — sin eso el Paso 1 no avanza.
Paso 1 · Setup de entorno
Este paso completo vive en el Quick start. Ahí vas a:
- Hacer tu fork del repo y clonarlo en tu compu.
- Instalar dependencias y crear tu
web/.env.localcon las 3 keys de Supabase. - Subir el schema a Supabase (Paso 6 — con esto tu waitlist ya guarda de verdad).
- Correr el proyecto con
yarn dev.
→ Sigue Empieza aquí → Quick start hasta el Paso 8 (30–60 min). Si no adelantaste tu proyecto de Supabase en Semana 0, el propio Quick start te manda a crearlo antes del Paso 1.
Regresa aquí cuando veas la landing por default de VibeFast en localhost:3000.
✅ Ves la landing por default de VibeFast en localhost:3000.
✅ En Supabase → Table Editor ves las tablas del boilerplate (Paso 6 hecho).
¿Atorado en algún paso? → Errores comunes. No te quedes solo: pregunta en el canal del curso.
Paso 2 · Personaliza tu producto en web/config.js
web/config.js es el único archivo que hay que cambiar para que la landing sea tuya — y lo cambia Cursor por ti. Copia este prompt y rellena las llaves con los datos de tu ficha de Semana 0:
Soy founder de un producto que {describe tu producto en 1 frase}.
Mi ICP es {describe tu cliente ideal en 1 frase}.
El dolor principal que resuelvo es {describe el dolor}.Edita web/config.js. Actualiza:
app.name, app.description, app.domain
brand.primary (sugiere un hex acorde al producto)
landing.hero (eyebrow corto, title de máximo 12 palabras, subtitle de 1 frase, cta.label como verbo de acción)
landing.features.items: 3 items relevantes a mi producto, cada uno con icon de lucide-react, title corto y body de 1 frase
landing.faq.items: 4 preguntas que un visitante real haría
Devuelve el archivo completo. No cambies la estructura del objeto.El prompt es el arranque, no el final
Si el copy que salió no suena a ti, díselo a Cursor: "el título suena genérico, hazlo más directo y con el dolor del cliente". Itera 2-3 veces — es normal y es el músculo que estás entrenando.
Paso 3 · Guarda y mira el cambio
Guarda web/config.js y refresca localhost:3000.
✅ Tu título aparece en el Hero. ✅ Los 3 features tienen iconos. ✅ El color primario es el tuyo.
Paso 4 · Prueba tu waitlist
Escribe un email en el formulario de la landing y envíalo.
✅ El formulario responde con su mensaje de confirmación.
✅ En Supabase → Table Editor → tabla waitlist, el email aparece como una fila nueva. Tu waitlist guarda de verdad.
¿El formulario da error o la fila no aparece? Casi siempre es que faltó el Paso 6 del Quick start (subir el schema) o una key mal pegada en web/.env.local — revisa Errores comunes.
Paso 5 · Deploy a Vercel
El paso a paso vive en el Quick start. Ahí vas a:
- Importar tu fork en Vercel (login con GitHub).
- Poner Root Directory =
web(crítico — es monorepo). - Pegar tus variables de entorno (las 4 mínimas).
- Deployar, y luego actualizar
NEXT_PUBLIC_APP_URLcon la URL real + redeploy.
→ Sigue el Paso 9 del Quick start (~10 min).
Regresa aquí cuando tengas tu URL pública abriendo en el navegador.
✅ Tienes una URL pública tipo tu-producto.vercel.app.
✅ La abres desde tu celular (no solo tu compu) y se ve tu landing.
✅ Actualizaste NEXT_PUBLIC_APP_URL en Vercel con esa URL (no localhost) y redeployaste.
Entregable de la semana
URL pública de tu landing. Mándala al docente con:
- La URL.
- 1 captura de pantalla.
- 1 párrafo de qué hace tu producto (el mismo del
app.description).
Y compártela en el canal del curso — ver las landings de los demás es parte del ejercicio.
Si te sobra tiempo
- Favicon: pídele a Cursor — "cambia el favicon en web/public/ por uno acorde a mi producto (puede ser un emoji renderizado a SVG)".
- Preview en redes: pídele a Cursor — "configura el og:image y los metadatos para que el link de mi landing se vea bien al compartirlo en WhatsApp y Twitter".
- Sección extra: una fila de "logos de clientes" con tu logo + placeholders — descríbesela a Cursor y deja que la proponga.