Crea aplicaciones de IA rápidamente: de una idea a un MVP sin necesidad de programar. | Nima Tahami | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Crea aplicaciones de IA rápidamente: de una idea a un MVP sin necesidad de programar.

teacher avatar Nima Tahami, Entrepreneur & Product Designer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción del curso

      1:06

    • 2.

      Nota detrás de cámaras.

      1:16

    • 3.

      Diseñar con velocidad

      6:05

    • 4.

      Cómo usar ChatGPT para planificar nuestra aplicación

      7:54

    • 5.

      Decidir el dispositivo.

      3:14

    • 6.

      Cómo inspirarse

      2:46

    • 7.

      Planning Our Features

      4:53

    • 8.

      Reviewing Designs

      4:38

    • 9.

      Cómo elegir una pila

      4:39

    • 10.

      Configuración de nuestro proyecto

      3:31

    • 11.

      Con Git

      3:28

    • 12.

      Elegir el modelo de cursor

      1:42

    • 13.

      Cómo agregar página de inicio

      6:35

    • 14.

      Toques de diseño

      2:50

    • 15.

      Página de viajes

      5:45

    • 16.

      Cómo ir al panel de control

      3:21

    • 17.

      Adición de gastos.

      4:43

    • 18.

      Páginas de autenticación

      6:13

    • 19.

      Base de datos

      4:29

    • 20.

      Autenticación final

      5:37

    • 21.

      Crear viajes

      9:06

    • 22.

      Expense Flow

      4:24

    • 23.

      Identidad de marca

      2:57

    • 24.

      Conectar el dominio para volver a enviarlo.

      4:08

    • 25.

      Configuración de la invitación a amigos

      3:26

    • 26.

      Prueba de enlaces de invitación

      4:51

    • 27.

      Adding Balances

      5:05

    • 28.

      Conclusión

      2:43

    • 29.

      Revisión final de la aplicación

      3:04

    • 30.

      Landing Page Review

      6:44

    • 31.

      Configuración de Stripe

      8:36

    • 32.

      Webhook de Stripe

      3:35

    • 33.

      Configuración de seguridad

      3:17

    • 34.

      Impulso a la producción

      6:42

    • 35.

      Integración de la franja final

      3:39

    • 36.

      ¿Qué sigue?

      3:23

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

46

Estudiantes

--

Proyectos

Acerca de esta clase

La mayoría de las personas nunca construyen sus ideas. Piensan de más, se atascan en los detalles técnicos o pasan semanas viendo tutoriales sin crear nada real.

Este curso es diferente. Pasarás rápidamente de una idea simple a una aplicación real y funcional con IA en funcionamiento.

Sin pelusas. No hay teoría infinita. Crearás paso a paso conmigo con herramientas modernas que eliminan la necesidad de conocimientos avanzados de codificación. Te mostraré los pasos exactos que he seguido para lanzar 1 aplicación al mes en los últimos meses.

Aprenderás a hacer lo siguiente:

  • Convierte cualquier idea en un producto claro y construible.

  • Diseña y estructura tu aplicación para usarla en el mundo real.

  • Usa herramientas de IA para acelerar el desarrollo y generar características.

  • Crear y enviar un MVP en funcionamiento sin estancarte.

Al terminar este curso, no solo entenderás cómo se crean las aplicaciones. Tendrás el propio.

Una aplicación real que podrás compartir, mejorar o incluso convertir en un producto de pago.

Tanto si eres diseñador, creador o principiante, este curso está diseñado para ayudarte a pasar de pensar a construir.

Si has querido crear algo pero no sabías por dónde empezar, este es tu punto de partida.

Conoce a tu profesor(a)

Teacher Profile Image

Nima Tahami

Entrepreneur & Product Designer

Profesor(a)

Hello, I'm Nima. I'm a design instructor with more than 12 years of experience designing and developing dozens of mobile & web apps for both clients and startups of my own. I've co-founded ShiftRide, which has been covered in many news outlets, including Forbes, where our app design was highlighted for its ease of use.

I teach online to help people become the best designer they can be. Design is the foundation of all great products, websites, advertisements, and everything in between. I've also designed and developed an open-source iPhone development library by the name of FCAlertView, helping thousands of app developers use beautiful customizable alert prompts within their applications.

Join me on a mission to design a better future together!

Ver perfil completo

Habilidades relacionadas

ChatGPT Figma IA para el desarrollo Desarrollo
Level: Intermediate

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción del curso: Oye, ahí. Bienvenido al curso Build AI Apps VAST. Mi nombre es Nima Tahami, y en los últimos años, he tenido la suerte de enseñar a más 18,000 estudiantes y construir Verás, la mayoría de las personas renuncian a su idea incluso antes de que realmente comiencen a construirla y lanzarla. Empiezan a pensar demasiado en todas las partes o se quedan atascados en el código Ya no necesitas tener ninguna habilidad de codificación para dar vida a tus ideas. Gracias a AI. A lo largo de este curso, voy a mostrarles los pasos exactos que doy para llevar una idea desde solo una idea hasta diseños para vivir producto. No se necesita experiencia en codificación, y te vas con una aplicación que realmente está en vivo en Internet y la gente puede usar y pagar. Entonces, si eres diseñador una vez que superas el diseño pantallas o eres un gerente de producto que quiere dar vida a sus ideas, entonces este curso es exactamente para ti. Y no vas a estar solo viendo este curso. De hecho, puedes construir junto a mí y dar vida a tu propia idea y aprender a usar herramientas como Claude y Cursor para ayudarte a construir tu aplicación de manera más rápida. Este es un súper rumbo manos a la obra. Espero que vengas listo para ejecutar realmente y finalmente dar vida a tu idea. Empecemos. 2. Nota detrás de cámaras.: Antes de continuar con las conferencias, quiero hacer una pausa realmente rápida aquí solo para mostrarles el breve detrás de escena de cómo se hacen realmente estas conferencias, se dedica mucho tiempo a planificar las conferencias y en realidad filmarlas y editarlas. Construí una herramienta llamada clip en la que ahora hago toda mi grabación, incluyendo las conferencias que estabas a punto de ver. Estoy muy entusiasmado con ello, así que por eso te lo estoy enseñando. Esencialmente dejo caer el metraje que tengo para las conferencias, y en lugar de tener que pasar, ya sabes, decenas de horas al lado del editor editando todo el curso, ahora tengo la IA dentro de esta herramienta, hago la edición para. Si estás pensando remotamente en hacer algún tutoriales o YouTube o tipo de contenido del curso, para el caso, o tipo de contenido educativo de cabeza parlante, esto podría ser muy útil. Entonces ahora mismo lo está pasando y limpiando todos los errores que cometí para que cuando estés viendo las conferencias, ya sabes, sea profesional, sea suave, esté limpio, y no estés sentado ahí perdiendo el tiempo viendo conferencias que no tienen sentido o simplemente pausas aleatorias a lo largo del video Así que compruébalo. Aquí hay un enlace si, de nuevo, te interesa filmar contenido o simplemente para hurgar y ver si es algo que puedes usar para tu propio tipo de uso diario. Disfruta el resto del curso. 3. Diseña con velocidad: Así que esta es una semana emocionante en la que realmente conseguimos construir nuestro producto, pero no cualquier producto o cualquier versión de nuestro producto, el producto mínimo viable, del que estoy seguro que has oído hablar de lo que significa la parte más valiosa del producto o el valor que nuestra empresa va a tener, vamos a empaquetarlo en una pequeña aplicación o producto y venderlo específicamente, ¿verdad? Um, entonces, por supuesto, sé que podrías tener toneladas de características en mente y toneladas de formas que quieres ejecutar en tu idea, y, ya sabes, lo mismo para mí y para la aplicación en la construcción, pero no voy a saltar a escribir una lista de 20 características y luego a construir cada una, bien. A menos que tenga la garantía de que voy a conseguir clientes para mi producto, eso va a ser potencialmente una pérdida de tiempo. Pero lo que va a ser útil es reducir qué características o qué partes del tipo de valores de los que hablamos el usuario quiere del producto y enfocarse específicamente en eso Um, así que con ese set, vamos a diseñar para la velocidad y no para la perfección. Entonces te voy a dar un ejemplo. Esta es la primera versión de mi clip de aplicación de edición que construí. Todavía no era un editor a gran escala. Primero, en realidad construí solo una característica de ese producto. Y esta característica es en realidad convertir conferencias largas o videos más largos en carretes cortos. Por lo que tardará tu video más largo, y lo convertiremos en otros más pequeños en función la transcripción y lo que sea interesante de él Y así como puedes ver, los diseños también son súper simples. No hay fantasía, como, diseño, aunque probablemente podría haber pasado más tiempo diseñando esto. Fui con la versión más sencilla que pude. Simplemente dejas caer tus videos. Y en ese momento, en realidad, incluso en los diseños, permití que la gente dejara caer varios videos, pero eventualmente recurriera a un solo video Entonces, nuevamente, desea reducir sus funciones al valor más básico que desea generar para los usuarios. Ve con eso. Lo mismo. Aquí tengo un onboarding para el video. Una vez que dejes caer el video, te preguntará, es esto sobre el curso de Figma Nuevamente, diseñé este Figma, pero en realidad, realidad incluso di este paso y lo hice para que simplemente eliges los temas que quieres exportar Una vez que analizó la transcripción, en lugar de preguntarte de qué se trata este curso, solo te hará marcar cuál de los temas quieres exportar Um, tan súper simple. Nuevamente, todo esto probablemente sea como tres pantallas en total, tal vez cuatro. Todo esto es parte de la misma pantalla. Es como una pantalla de carga. Y nuevamente, aunque soy diseñadora y busco la perfección, trato de no adentrarme demasiado en los detalles del diseño y simplemente ir con la parte más simple de este producto. Y así entonces puedes ver sus videos, y desde aquí, ellos pueden otra vez, dice editar. No hubo capacidad de edición en la primera versión. Todo lo que puedes hacer es simplemente abrirlo, ver los footages, exportarlo, eliminarlo, y luego pasar al siguiente Tan súper simple otra vez. Y aquí hasta lo tuve para que puedas tener, nuevo, carpetas para cada proyecto, y puedas entrar en proyectos. Y así para la primera versión, fue súper simple, y te animo a que hagas lo mismo. No diseñes a la perfección, diseñado para una especie de MVP o compilación de funciones, ¿verdad Entonces, concéntrate en cuál es la característica más importante de tu aplicación que realmente resuelve el punto preciso para las personas y concéntrate en eso Olvídate de todas las demás características, ¿verdad? Y así para ayudarte a hacer eso, realmente te recomiendo que también uses la sección de comunidad en Figma si estás haciendo tus diseños en Figma, lo cual animo mucho Tienen toneladas de kits de interfaz de usuario ya ahí que la gente ya ha diseñado. Te animo mucho si estás usando una biblioteca de diseño como ShatCN Esa también es una gran. Muchas empresas lo usan, especialmente si estás diseñando algo que podría tener una pantalla de tablero o algo un poco más sofisticado. Tienen toneladas de componentes como gráficos que puedes usar y dashboards Entonces definitivamente refiérase a este de aquí. De nuevo, si abres alguno de ellos, digamos que abrí este primero por aquí. Nuevamente, esta es una biblioteca de diseño que está abierta por Verso y que puedes usar. Para que puedas ver todos los componentes que ya tienen. Al igual que, no necesitas diseñar un componente de entrada desde cero, solo arrastra uno desde aquí. Tienen el tipo de colores, y también hay versiones más extensas de estos, creo. Entonces, si nos fijamos en éste, tienen, como todos los componentes desglosados por páginas. Entonces tienes diálogos de alerta, um, avatares, insignias, navegación por migas de pan, grupos de botones, así sucesivamente y así sucesivamente Así que explora lo que tienes a tu disposición y no trates de inventar desde cero. Y verás a medida que empecemos a construir realmente nuestro producto, aprovecharemos estas bibliotecas en lugar de hacer todo desde cero. Entonces, a medida que avanza sobre el diseño del producto y volveremos y realmente usaremos ChatGPT para ayudarnos a reducir nuestro conjunto de características, tenga esto en cuenta que desea usar bibliotecas externas Quieres mantenerlo simple número mínimo de páginas que necesitas para tu app. No necesitas configuraciones elegantes o funciones de perfil solo en, ya sabes. Entonces esos pequeños detalles importan a escala, pero inicialmente, cuando recién estás comenzando, en realidad no necesitas dedicar tiempo a elaborar todas las páginas individuales Vuelve y luego empieza a planear realmente, ¿qué vamos a construir? Voy a hablar de mi producto, pero obviamente, mientras hago esto, haces lo mismo por tu producto. 4. Cómo usar ChatGPT para planificar nuestra aplicación: Correcto, así que nos estamos preparando para comenzar a trabajar en nuestra primera versión de nuestra aplicación antes de ir a construirla e incluso a redactar las características que queremos. Queremos aprovechar la IA, por supuesto, para ayudarnos a decidir algunas de esas características. Y uno de mis ejercicios favoritos para hacer es platicar con ChatGPT sobre, ya sabes, la primera versión de nuestro producto Entonces aquí, he escrito un prompt, ayúdame a planear la primera versión de un MVP de una app Para una aplicación que ayuda a los usuarios a realizar un seguimiento de los gastos y dividir fácilmente las facturas en los viajes y solo escribir las funciones que más generarán valor para los usuarios. Investigue qué competidores como split wise faltan en su producto o qué se quejan los usuarios en línea. Esto hace dos cosas. Una es que nos da algunas características que son más importantes que vamos a construir en lugar de simplemente todo lo que podamos construir. Entonces también va a echar un vistazo a una especie de un poco en línea, tal vez en reedición y otras fuentes Por lo que en realidad buscará esos recursos cuando le digas que investigue algo para ver en línea cuáles son sus quejas de esos productos, si quieres, puedes ser más específico y decir, Mira en reeditar y sitios web como G two, que es la plataforma de revisión para aplicaciones Entonces vamos a darle a Enter y ver qué se le ocurre. Y como puede ver, buscará la web y luego elaborará un plan MVP basado en las quejas reales de los usuarios de Redt, revisará los paneles piloto de Trust y de comentarios de aplicaciones Entonces en base a eso, volví con fricción artificial y muros de pago, el mayor dolor. Esto tiene sentido. Cada vez que uso Blitwise, como, solo puedes agregar cierto número de transacciones Como dice aquí, hay tres al día que realmente puedes agregar, y luego te obliga a pagar por la aplicación, ¿verdad? Entonces esto podría ser interesante para nosotros aprovechar y realmente hacer un producto que tal vez sea, ya sabes, pagar una vez, como un trato de por vida o algo así. Paga, no sé, 20, 30, 40 pavos. Nuevamente, vamos a llegar a los precios, pero pagaremos X cantidad de dólares. Obtienes el producto, no necesitas preocuparte por cada vez que te pida un pago, ¿verdad? Y entonces creo, dividir los cargos amplios un par de dólares al mes. Pero de nuevo, podría ser molesto que siempre te golpearan con esa pantalla, y sé que me pasó antes. Cualquier fricción se siente inaceptable. Así que vamos a construir con eso, ¿verdad? Aunque esa no es una característica, es una experiencia de usuario sobre la que vamos a construir y construir una mejor versión de la misma. Demasiada fricción de configuración tiene sentido. Yo también lo he hecho. Hay grupos involucrados, y las invitaciones pueden ser desordenadas. Entonces, si invitamos a amigos, vamos a hacerlo súper simple. De hecho, vamos a lograrlo para que ni siquiera necesites ingresar sus correos electrónicos, tal vez solo compartas un enlace y la gente pueda auto unirse a viajes sin tener que conocer sus correos electrónicos con anticipación. Entonces, si vamos a construir esto, lo vamos a construir de una manera en la que los usuarios puedan dar el menor número de pasos para invitar a amigos, ¿ verdad? Entonces vamos a mantener eso adentro. No es una característica necesariamente. Nuevamente, es una mejora de la experiencia de usuario, pero estoy construyendo esto con el diseño como diferenciador, y tú quieres hacer lo mismo Así que sigamos adelante y tenlo en mente. Y a medida que atraviesas esto, nota también, ya sea en papel o en tu computadora, anota lo que quieres hacer que sea diferente a lo están haciendo los competidores por ahí para que eso te ayude a diferenciarte. Confundir conformarse modelo mental, ¿verdad? Entonces, cuando intentas conformarte, la gente no necesariamente entiende cómo funciona, poco claro quién debería pagar a quién demasiadas microtransferencias, torpeza emocional Y así también podemos cocer eso en el producto, ¿verdad? Una vez terminado el viaje, ¿por qué no hacemos que sea súper sencillo averiguar quién tiene que pagar cuánto? Tal vez incluso enviarles recordatorios por correo electrónico o algo así, ¿verdad Me di cuenta en split wise, no he recibido ningún recordatorio cuando necesito pagarle a alguien Me envía como estados de cuenta mensuales, pero eso es diferente a, ya sabes, cuando necesitas darle un codazo a tu amigo para, oye, como, ¿ me puedes pagar esto como 100 dólares por lo que sea esto como Airbnb, verdad Entonces esos podrían ser como momentos incómodos, y así ese podría ser otro ángulo para diferenciar nuestro producto de split wise. Así que sí, aquí hay toneladas de cosas que no voy a entrar demasiado en detalles, pero voy a tener en cuenta para mi proceso de diseño. Así que la oportunidad central, los usuarios no quieren una herramienta financiera. Quieren un ayudante de coordinación de viajes que maneje el dinero automáticamente. Estamos de viaje, solo haz esta lista de esfuerzos. MVP solo características que impulsan creación de viajes instantáneos de valor real, ¿verdad? Entonces esto es decir que no hay cuentas. Crear un viaje, generar compartir Vincular exactamente lo que tenía en mente también. La gente se une a través de Link. No se requiere registro. No estoy 100% seguro en la parte de registro y solo por el hecho de que todavía necesitamos que los usuarios se autentiquen Pero pude ver que potencialmente también funciona. Entonces, al menos una persona necesita crear una cuenta para crear el viaje, pero potencialmente los invitados no necesitan hacerlo. Y nuevamente, estos son ahora mismo, solo estamos haciendo una lluvia de ideas. Cuando bajemos a la parte del edificio real, lo que va a suceder poco después, en realidad los definiremos antes de seguir adelante. Incluso viene con un montón de características que dice ChatGPT, seguro, no las pongas en el MVP, y vamos a tener eso en mente, como, ya sabes, integración bancaria, suscripciones, etcétera Entonces esto es lo que se le ocurrió. Dice, Cor loop, crear un viaje, compartir enlace, agregar gastos al instante, ver saldo, claramente, liquidar con pagos mínimos. Creo que es genial, ¿verdad? Entonces esto es un poco más simple que todas las demás características que configuró aquí. Pero si construimos una versión fácil de esto, realmente la característica es solo una cosa. Y eso es, ya sabes, poder liquidar tu viaje en base a los gastos, ¿verdad? No estamos construyendo a pesar de que nos está diciendo este bucle de diferentes tipos de pantallas que podríamos necesitar, es posible que necesites una pantalla para crear un viaje. En la misma pantalla puedes compartir enlace. Agregar gasto sería parte de la misma pantalla, viendo saldo, nuevamente, misma pantalla. A pagos mínimos, vamos a llegar a sólo una ola desde la misma pantalla exacta que en realidad se puede ver quién es el dueño de qué. Obviamente, la pantalla va a tener diferentes estados y diferentes componentes, pero vamos a mantener esto lo más limpio posible. Obviamente, también necesitarás una pantalla de inicio para poder crear viajes desde. Entonces tienes una pantalla de inicio para ver todos tus viajes. Um, entonces dentro de la página de viajes, no necesitas navegar a diferentes lugares, un lugar súper simple para ver qué es un total, cuál es el saldo corriendo, ¿a quién le pertenece qué? Y luego una capacidad de agregar tipo de gastos, y vamos a mantenerlo lo más limpio posible e ir con el menor número de pantallas posible, nuevamente. Entonces con eso en mente, voy a empezar con los diseños. Tú haces lo mismo en la próxima conferencia, volveré a explicarte cómo he hecho mi diseño y cuáles son las decisiones que he tomado alrededor de las páginas que acabo de explicar ahora mismo. Entonces voy a diseñar esas primeras dos o tres pantallas principales, autenticación, todos los viajes y luego páginas de viaje individuales específicas. Entonces voy a diseñar eso. Diseñas tus pantallas esenciales, mantenlas abajo a tres o cuatro como máximo, si puedes. Sé que algunos productos pueden ser un poco más complicados que otros, pero de nuevo, trata de mantenerlo al mínimo y a las pantallas más importantes. Te veré en un minuto y ganas de ver también tu diseño. 5. Decidir sobre el dispositivo: Antes de comenzar realmente su proceso de diseño, tal vez se pregunte, ¿debería construir una aplicación web? ¿Debo construir una aplicación móvil? ¿Debo construir una aplicación de escritorio? Hay toneladas de preguntas ahí en términos de qué construir y también con qué pila construir. La pila son todas las herramientas y los softwares que vamos a utilizar para construir realmente nuestra aplicación Ahora, mi opinión sobre esto es súper simple. En general, solo voy con una aplicación web que sea amigable para dispositivos móviles, que los usuarios puedan acceder a ella en la web en su navegador a menos que ahora aquí es donde entran en juego las aplicaciones nativas. A menos que estés haciendo algo específico, como la edición de video, algo que implique la máquina de parada del usuario. Quiere utilizar parte de esa memoria o energía o almacenamiento. Para mi clip desktop Editor, decidí hacerlo realmente solo para escritorio, pero está procesando localmente toda la edición de video, y el renderizado, y no tengo que hacerlo en un servidor, lo cual podría ser costoso, especialmente para empezar. Ahora, para una aplicación web simple como Bitwise petitor friends en viajes, ser capaz de dividir facturas Una aplicación web es suficiente. Ahora, podría inclinarme hacia hacer una aplicación nativa más tarde, que puedo enviar a las tiendas de aplicaciones y los usuarios pueden descargarla en su teléfono. Será útil si mi ENS va a estar usando esta aplicación a diario o semanalmente, especialmente si voy a rutas b2b y tengo usuarios que podrían estar viajando semanalmente por trabajo Ese es un lugar donde hacer una aplicación nativa móvil tiene más sentido. O tu caso, si estás construyendo una aplicación que involucre al usuario para interactuar con esa aplicación diaria o semanalmente y con frecuencia, podría ser una mejor experiencia construirla como una aplicación nativa. Por supuesto, todos vienen con sus retos. Si haces una aplicación nativa, entonces tienes que enviarla a la tienda de aplicaciones y Apple tiene que revisarla antes de que puedas verla en vivo en la tienda de aplicaciones. La tienda de aplicaciones también puede ser súper competitiva. Pero también si estás haciendo una Web App, también enfrentarás ese reto. Pero hay pros y contras para. Tienes que decidir por ti mismo en base a eso, qué tiene más sentido. Nuevamente, en general, solo iría con una aplicación web que sea accesible en el navegador. Todos tienen un navegador en su teléfono y hay que pensarlo de verdad. ¿Es tu aplicación un SAS al que solo se puede acceder en la web en una computadora, entonces en ese caso, es una elección fácil. Pero si estás construyendo algo donde gente podría usarlo más en el móvil, entonces la elección se vuelve un poco más complicada. Pero nuevamente, me inclino hacia una aplicación web a menos que tengas casos específicos en los que el usuario necesite A, usar la potencia de la máquina del dispositivo en la medida en que, por ejemplo, un juego, o si quieres construir una aplicación que los usuarios usarán a construir una aplicación que los usuarios diario o semanalmente, por ejemplo, digamos, una aplicación de compras. Ahora, ten en cuenta, más adelante, siempre podrás cambiar tu stack. Siempre puedes hacer que tu aplicación web también sea una aplicación móvil. Solo empieza con lo básico, empieza con lo que sea el más rápido, y por eso sugiero una aplicación web para la mayoría de las ideas. 6. Cómo inspirarse: Bien, ahora que hemos decidido qué queremos construir y cuáles son las características que queremos construir en torno a él para nuestro MVP, necesitamos algo de inspiración de otras herramientas que ya existen para armar nuestra propia aplicación La mejor manera de hacerlo es usar esta plataforma llamada Mobiin que tiene capturas de pantalla de literalmente miles de aplicaciones diferentes, e incluso muestran animaciones como parte de ella también Esta es una gran herramienta para ver qué están haciendo otras aplicaciones. Entonces aquí arriba, en realidad puedes buscar por la aplicación específica. También puedes filtrar por si buscas diseños web o el IOS o el móvil. Entonces aquí arriba, voy a buscar split wise porque esa es una herramienta similar a la que voy a estar construyendo. Si la abro, puedes ver todas las pantallas sabias divididas que aparecen aquí. En realidad puedes seguir adelante y guardarlo. Voy a salvar esa. ver todas las pantallas individuales aquí. Aquí tenemos sumar y gasto. Voy a estar usando algo de esto para poder diseñar realmente. Se puede ver exactamente cómo se pueden hacer las divisiones. Cómo muestran su página de transacciones e incluso tienen algunas páginas adicionales aquí abajo. A medida que avanzas sobre eso, en realidad puedes seguir adelante y seleccionar pantallas individuales. Me gusta seleccionar estas pantallas por aquí para agregar en flujo de gastos. Voy a seguir adelante y copiar estos tres. Tienen este enchufe que puedes instalar y luego dirígete a la aplicación, golpea Ejecutar. Entonces a partir de aquí, en realidad puedes pegar las pantallas. Voy a golpear al Comando V. Y se adelantó y pegó esas pantallas aquí dentro Mientras estoy diseñando mi app, voy a estar echando un vistazo estas pantallas en busca de inspiración. Eso se puede hacer, por supuesto, con múltiples aplicaciones diferentes. Si buscas en Mobiin, definitivamente encontrarás las capturas de pantalla para tus competidores y las usarás como inspiración para tus propios diseños Hay una forma más súper útil de usar mobiin y esa es la pestaña de flujos de aquí Desde las pantallas, si realmente cambias a flujos, puedes buscar pantallas más fácilmente. Por ejemplo, quiero echar un vistazo a cómo la gente agrega gastos en split wise. Puedo ver la categoría de flujos. Entonces aquí vamos a ir a sumar y Gasto, y tenemos todas las pantallas relacionadas con agregar un gasto lado a lado, lo cual es súper útil. Ahora cuando estoy diseñando mi propia app, me aseguro de no perderme nada de este flujo. De nuevo, puedo o bien guardar esto en mi colección móvil, llamarlo Aplicación de gastos de viaje, pulsar Crear, o de nuevo, puedo copiarlo a Figma. 7. Planificación de nuestras características: Ahora que vimos algunos ejemplos de aplicaciones que hacen una funcionalidad similar, voy a correr por las maquetas o ahora su mayoría wireframes los que armé Ni siquiera wireframes, sino sobre todo solo requisitos, diría yo Para la página de autenticación, saqué de la biblioteca ShatSN Figma, pantalla registro simple O pantalla de inicio de sesión en este caso, voy a mantener la pantalla de registro luciendo muy similar con una imagen aquí, entrada a la izquierda, y luego potencialmente una verificación de correo electrónico que se ve así. Nuevamente, saqué esto directamente de esa biblioteca CN de chat. Ahora voy a tener una página de bienvenida que rápidamente pida el nombre del usuario y potencialmente incluso para hacer su primer viaje. Estos serían tres campos rápidos para poder obtener el nombre de ellos así como su primer viaje, lo que implicará el nombre del viaje y las fechas, pero las fechas, estoy pensando en tenerlo en su lugar. Entonces una vez que van a su tablero, que es la pantalla principal de inicio, ven todos sus viajes. Pueden crear un nuevo viaje a partir de ahí, hacer clic en un botón para crear un nuevo viaje. Ellos ven un Navbar Luego debajo de cada viaje o para cada tarjeta de viaje, va a haber un nombre dentro de ella, fechas potencialmente a quienes se han unido, y se puede ver quién y cuántos estados Yo sea si los viajes concluyeron, todos pagados o aún está en curso, digamos, costo total. Ahora bien, esta podría ser opcional. Nuevamente, nada de esto está escrito en piedra por ahora y el costo para el usuario. Para el usuario que lo está viendo desde su tablero, el costo de este viaje para ellos. Entonces un enlace de copia rápida sería bueno que ni siquiera tengas que entrar en el viaje si quieres invitar rápidamente a alguien más a él. Ese va a ser el tablero, súper simple otra vez. Entonces finalmente, la página del viaje. La página del viaje va a tener todos los detalles sobre el viaje. Va a ser el nombre, fechas, nuevo, potencialmente opcional. Toda la información de la tarjeta, todo el camino hasta aquí, donde el usuario puede realmente dejar el viaje o eliminarlo si lo creó, pueden asentarse y te da un simple desglose de quién debe, cuánto a quién si es un público o si un usuario que no está autenticado o conectado visita, pueden ver un botón para unirse al viaje y luego estarán se le solicita registrarse y unirse, súper simple dos clics Max. Si el usuario está creando un viaje, entonces todo lo que necesita hacer es agregar un nombre las fechas serán opcionales y luego simplemente presionar Copiar enlace para compartirlo. Para agregar un gasto, va a haber un flujo simple. Estoy pensando de nuevo, en la misma página, no creo que quiera mostrar ni siquiera un pop up u otra página, pero una vez que me ponga a diseñar, los averiguaré en detalle. Entonces tenemos el nombre del gasto. ¿Cuál fue este gasto? ¿Cuál fue el total? Quién estuvo involucrado, y luego algunos tipos divididos. ¿Era igual? ¿Fueron cantidades o porcentajes específicos entre personas, o incluso potencialmente, estoy pensando que esta es una nueva. No he visto esto en otras herramientas, pero en días. Imagina algo como Airbnb si alguien se quedó 20 días frente a 30 días, simplemente pon cuántos días o cuántas noches se quedó alguien en comparación con todos los demás y esta manera puedes calcularlo fácilmente. agradable tenerlos pero Es agradable tenerlos pero probablemente lo vamos a mantener fuera del MVP, al menos para mí Las etiquetas que etiquetan podrían ser tipos de categorías de cercas, ¿ era un costo de comida o era B&B, vivienda, etcétera? Después también selección de moneda. Si quieres tener varias monedas, eso también estaría bien porque como puedes imaginar, si tienes varias monedas en la app, podría complicarse un poco más. Por ahora MVP, primera versión, los usuarios vienen y se quejan después de esto Pero por ahora, solo queremos sacar lo más rápido posible la primera versión. Entonces va a haber una sola moneda, cualquiera que sea la moneda que conozcas, use en tu país o en el país del usuario, vamos a ir con eso. Entonces estos ya están todos establecidos. Nuevamente, algo de esto podría cambiar y cambiará en el proceso de diseño y desarrollo real. Todavía no es necesario tener una imagen cristalina de él en la etapa de enmarcado o planificación de alambre de sal Hemos mirado algunos ejemplos. Elaboramos una lista de lo que queremos en cada página. Súper simple. Nuevamente, aparte de la autenticación, que aquí son dos páginas, todo lo demás es solo una pantalla de bienvenida y otras dos pantallas. Esto es lo que realmente es un MVP. Incluso podrías ir un paso más allá y hacerlo menos, pero yo diría que este sería el producto mínimo viable que también es valioso. Queremos que sea valioso. No queremos que sea demasiado MVP tampoco donde es muy poco para cobrar porque recuerden, estamos cobrando por este producto y no se va a congelar También queremos asegurarnos de que genere valor y se vea profesional y limpio. Pero no necesariamente necesitas miles de funciones para cobrar a los usuarios, una simple es suficiente. Sí, voy a empezar a diseñar ahora con todas estas pantallas. Vuelve y explica mi proceso de diseño y espero que hagas lo mismo. 8. Revisión de diseños: Bien, así que ya terminé de diseñar mi primera versión. Y nuevamente, no estoy súper orgulloso de esto porque se supone que este es MVP Junté estos diseños en quizá menos de, diría yo, cuatro o 5 horas. La clave aquí es la velocidad y eso es lo que quieres para tu primera versión. Um, así que de nuevo, tengo autenticación aquí. Muchos de estos componentes, ya ves, los saqué de la biblioteca ShatSN en Figma. Lo puedes encontrar en la sección de comunidad. Yo pegué la pantalla de verificación de ahí, y entonces esta es una página muy simple ¿cuál es tu nombre Se ve un poco sencillo, así que tal vez en el MVP real, lo haré un poco mejor Y luego tenemos el MiTripspage. Tengo mis viajes aquí. Uh, Bali con siete amigos, y esto es lo que se te debe. Así que de inmediato, te haces una idea para todos tus viajes, cuánto te deben o cuánto debes. Entonces en este caso, se me debe algo y agrego este pequeño y agradable toque aquí, igual que, ya sabes, sello que obtienes en un pasaporte. Así que poco toque de diseño como ese sigue siendo, um importante, diría yo. Entonces MVP no quiere decir que debas hacer algo feo. Um, ya sabes, no es fácil de usar. Simplemente significa la versión más simple que puedes poner ahí fuera y que no te cueste semanas de tiempo de desarrollo. Enlace de copia rápida aquí, para que los usuarios puedan copiar rápidamente el viaje y enviarlo a sus amigos. Pueden crear un nuevo viaje y si están en esta página y aún no tienen ningún viaje, tienen un estado un poco vacío como este. Nuevamente, saqué esta plantilla de la biblioteca de Chat CN, le hice algunos ajustes, y aquí estamos Uh entonces la página más importante. Empecé con dos versiones. Primero, empecé con esta versión y empecé a armarla, y estaba un poco por todas partes y me recordó a split wise. Aquí es donde entra en juego ChatGPT. En realidad, antes que nada, se lo pregunté, ¿cómo puedo hacer que mi app sea diferente? Desde la perspectiva del diseño, cuáles son las cosas que de otra manera yo. Una de las cosas que enfatiza es contar una historia y hacer que sea fácil entender exactamente dónde te encuentras con tu saldo. En lugar de liderar con transacciones, lideramos con cuánto me deben los usuarios y pueden entender fácilmente. Le di el primer diseño y le dije: ¿Qué opinas de esto? Esto es lo que tengo hasta ahora. Nuevamente, iteró conmigo. Me lo dije, tener un resumen más claro para los usuarios. A medida que empecé a actualizar el diseño cada vez más y más, seguí enviando versiones y obteniendo algunas ideas. Obviamente, no implementé todo esto, pero en algún momento, decía, eres lo suficientemente bueno para lanzar esto como MVP. Este fue V uno. Diseñé esto para que se me ocurriera algo así. Ahora aquí en la página de viajes, tengo invitar a amigos aquí arriba. Ese es el CTA principal, todos los viajes que puedas volver a todos los viajes, y luego aquí abajo, tener alguna información rápida de quién creó el viaje, cuándo y cuántas personas están involucradas Estoy pensando que tal vez si pasas el cursor sobre él, puedas ver la lista real de personas o algo así Nuevamente, esas pequeñas interacciones que tratamos en el proceso de desarrollo real. No necesitas ir súper a fondo con tus diseños. Entonces tienes una lista de saldos como quién te debe cuánto de inmediato, sabes cuánto se te debe en total y quién tiene que pagarte Marca rápida pagada. No necesitas hacer un arreglo completo en otras aplicaciones. Aquí vemos la actividad del viaje, luego puedes ver todas las transacciones listadas una por una. ¿Cuáles fueron las transacciones? Título, ¿quién lo adiciona y quién estuvo entre? Lo más importante, ¿ cuánto te devuelves o cuánto debes si tienes que pagar por algo? Nuevamente, súper simple, no agrega un gasto aquí. Todavía no he trabajado en esa pieza por agregar un gasto. Ese es mi diseño. Espero que hayas hecho algo similar para tu app. Nuevamente, manténgalo en el número mínimo de pantallas si no ha iniciado este proceso y aproveche ChatGPT y otras herramientas de IA para darle algunos comentarios al respecto, pero no confíe completamente en él porque nuevamente, no es perfecto , no es diseñador, a veces te dirá lo que quieres escuchar o te dirá algunas cosas extra que podrían no ser relevantes. Ahí es donde tú como diseñador también o tu lado diseñador puedes salir y contraatacar o desafiar un poco con IA aquí. Um, así que sí, ahí lo tenemos y es hora de empezar a construir esto. Entonces, antes de saltar al Cursor real y construir esta aplicación, repasemos qué pila usaremos realmente. 9. Elección de una pila: Bien, finalmente llega a la parte emocionante, construyendo nuestra primera versión, nuestra app MVP Vamos a repasar la pila que vamos a estar usando o al menos voy a estar usando. Si quieres seguir adelante, usa la misma pila, por favor hazlo por todos los medios. Si ya tienes una pila que prefieras, hacer la misma pila esencialmente se refiere a todas las herramientas y lo que estás usando para codificar tu aplicación o darle vida. En este momento solo estamos diseñando Figma, es una aplicación que nos permite diseñar nuestras pantallas Pero para convertir realmente ese diseño en una verdadera aplicación web funcional y tenerla en vivo para que la gente la use, pague, reciba correos electrónicos , etcétera, necesitamos usar una pila para que esencialmente todo funcione, tanto en términos del front-end, que es la parte de diseño y el back end, que es toda la parte del servidor que maneja toda la información y los datos. Así que muy rápido, repasemos lo que voy a usar y luego decides por ti mismo si quieres seguir esto o usar otro ciervo Las principales herramientas que usaré para codificar este proyecto serán Cursor, que es la herramienta de codificación de IA. Cuenta con un agente de IA integrado con el que puedes chatear, y por supuesto, usa modelos como Cloud así como GPT Um, y otros para darle vida a la idea. Entonces tenemos el repositorio de código en Github. Aquí es donde se almacenará el código. Cada vez que actualices el código, eventualmente también lo enviará en vivo a los usuarios, lo que discutiremos en un segundo cómo funciona eso. Para la pila, la aplicación web real se construirá con NexGs lo que nos permite crear aplicaciones y API tanto front-end como backend, y luego para la base de datos, cómo estaremos almacenando los datos o donde estaremos almacenando los datos, será a través de Mongo DEB, que es súper fácil de configurar Ahí es donde estaré usando para almacenar mis datos de usuario y viaje. Siguiente ATJS esencialmente nos permite autenticar a los usuarios, por lo que les permiten simplemente registrarse, tener algunas opciones de registro simples como iniciar sesión con Google, correo electrónico, etcétera Versal es lo que usaremos para desplegar nuestro código. Una vez que se implementa nuestro código en GitHub, irá y se sentará en Versal que esencialmente aloja la aplicación y el back end. A partir de ahí incluso podemos ver cosas como analíticas y registros y cosas por el estilo. Stripe será la compañía de pagos para ayudarnos a procesar los pagos de esta aplicación. Nuevamente, decidiremos cómo fijar el precio de nuestra aplicación, pero una vez que lo hagamos, Stripe es la herramienta que usaremos para procesar esos pagos. Reenviar es una herramienta de envío de correo electrónico. Tanto para las notificaciones como para los correos electrónicos de inicio de sesión, usaremos Reenviar para enviarlo prácticamente todo esto es gratis para empezar Todos tienen planes pagados, por supuesto, y cosas como Stripe, Stripe solo cobra el porcentaje de las transacciones para que no tengas que preocuparte por ningún otro pago de ellas. Nuevamente, todos los demás, ya sea gratis o gratis para. Estos son algunos opcionales. AW es para almacenamiento. Si quieres almacenar imágenes de usuario o subidas de recibos, en mi caso, lo estaré haciendo usando AWS De nuevo, para MVP, probablemente dejando eso fuera. Google Analytics es bueno para realizar un seguimiento de los datos de visitantes y usuarios. Otra buena herramienta de análisis es PosThG donde incluso puedes obtener más información como mapas de calor y cómo interactúan los usuarios y qué están viendo cuando interactúan con tu aplicación Muy bueno para depurar y cosas así para averiguar dónde están los problemas Entonces definitivamente una buena útil. Pero nuevamente, la censura Super base opcional reemplaza off y base de datos, por lo que no necesitarás Next JS y Mongo DB Si usas Super Base y creo que incluso para algunos correos electrónicos de inicio de sesión, probablemente tampoco lo necesites. Voy a reemplazar algunas cosas. Pero otra vez, realmente no lo he usado porque realmente no veo tanta necesidad ya tenemos una pila resolverlo. Si estás estudiando y quieres probarlo, tampoco es mala opción por lo que sé. Esta es la pila que vamos a usar. Ahora vamos a empezar saltando a Cursor. Antes de eso, realmente vamos a configurar nuestro proyecto en el siguiente video y luego volver a empezar a trabajar en él. 10. Configuración de nuestro proyecto: Todo bien. Antes de comenzar, quieres instalar NOJs. Dirígete a nojs.org y golpea a Genjs. Necesitarás esto para poder crear realmente una nueva aplicación usando la pila que discutimos. Nuevamente, si no quieres seguir esa pila y ya tienes tuya o ya te diste cuenta de que no hay JS, no necesitas seguir esto obviamente. Esto es si solo estás haciendo esto por primera vez y nunca has creado una aplicación NOJs Una vez que hayas terminado, quieres seguir adelante y abrir terminal. Así que desde tu máquina o desde tu carpeta de aplicaciones, sigue adelante y encuentra la app llamada terminal. Se ve algo así, y entonces realmente puedes seguir adelante y crear una carpeta en tu escritorio o donde sea que ya guardes tal vez código u otros proyectos para ti mismo. Si tienes una carpeta, lo mejor es navegar a esa carpeta. Ya tengo una carpeta llamada código. Yo sólo voy a hacer código de CD así. Ahí vamos. Estoy dentro de la carpeta de códigos. Obviamente, si tienes una carpeta para ti, hazlo ahí. No es necesario. Esto es solo más para la organización. Entonces quieres escribir NPX, crear Next App, tenía Enter, y te va a preguntar, cuál es el nombre del proyecto Por ahora, voy a llamar a esta app de Trips y presionaré Enter ahí. De hecho voy a personalizar la configuración, así que voy a elegir mis propias preferencias, solo ve aquí abajo. No voy a usar TypeScript, voy a usar yes int, dale no a este, sí a ese El resto, voy a mantener el default. Sí, no. Ahí vamos ahora, está instalando. Nuevamente, así es como configuro proyectos, no hay que seguir esto, pero es como lo haría yo. Está yendo y creando ese proyecto ahora mismo. Ahora dentro de esa carpeta, tengo esta app de gastos de viaje y se ha ido adelante y ha creado todos los archivos. Lo que quiero hacer ahora es abrir esta carpeta dentro de Cursor. Ya tengo instalado Cursor. Si no lo tienes instalado, adelante y hazlo. Entonces una vez que lo abro Cursor, veo que me sale esta interfaz aquí. Me gusta tener la barra lateral por aquí, la barra lateral primaria. También puedes hacer Comando B. Y ahora puedes ver todas las carpetas aquí, lo cual es perfecto. Incluso puedes seguir adelante y ejecutar este proyecto. Voy a abrir una nueva terminal yendo a la pestaña arriba en la barra de estado o en la barra de menú y golpeando terminal y golpeando Nueva terminal. Por aquí, si ejecutas NPM ejecuta Dev So, seguirá adelante y en realidad ejecutará el proyecto y se abrirá en un nuevo navegador Así. Si tienes esto, eso significa que has creado una aplicación sin JS y está funcionando bien. Esto va a actuar como nuestro beisón para el código o el proyecto que usaremos Volvamos en la siguiente conferencia para empujar esto a GitHub o repositorio de código. 11. Uso de Git: Todo bien. Queremos realmente poner nuestro código que acabamos de crear, pesar de que es una base en este momento en Git Hub para que el código se almacene allí. De esta manera, cuando hacemos actualizaciones a nuestro código, podemos empujarlo hasta allí para que se guarde con todos los cambios. Entonces más adelante cuando conectemos la versal, que si recuerdas es la plataforma de hosting, automáticamente tomará el último código de GitHub e implementará eso a los usuarios o en línea en tu dominio para que los usuarios puedan usar tu producto fácilmente. Um, es súper sencillo configurar Git a través de Inside of Cursor. Obviamente, puedes hacerlo a través de github.com y pasar por el registro ahí así que crea una cuenta si ya no tienes Pero por aquí, si solo vas a la pestaña esencialmente de Git por aquí, puedes crear tu primer, ya sabes, Commit. Yo solo voy a hacer Commit inicial así y publicar esta rama. Ahora, ahora mismo, me está diciendo, ¿quieres hacer de esto un repositorio público? ¿Es decir, todos en GitHub pueden ver mi código o uno privado? Para la mayoría de los casos, quieres crear un repositorio privado a menos que estés haciendo algo así como un proyecto de código abierto. Pero de lo contrario, vas a elegir privado y enseguida, va a publicar a eso. Entonces incluso puedes abrirlo en GitHub. Si presionas Abrir en GitHub, se crea en mi cuenta de GitHub esta app de gastos de viaje como un repositorio privado con todo el código aquí. Uh, y así ahora si haces algún cambio en el código, solo como ejemplo, voy a ir a la página punto JS, que es, ya sabes, esa pantalla inicial que vimos. Entonces, antes que nada, voy a asegurarme de que la app esté funcionando. Entonces esta pantalla inicial, digamos, solo quiero actualizar el texto aquí para comenzar, um, ya sabes, y cambiar esto a gasto de viaje. Er hit Guardar eso automáticamente, por cierto, actualiza esto. Ahora tenemos esto. Entonces podemos ver si te diriges a la pestaña Git, podemos ver que hay cambios en el punto de página JS, y podemos ver si haces clic en él exactamente qué cambió, esta línea cambia a esto, que es correcto, y entonces realmente podemos hacer este cambio de texto de Commit. Entonces presionaremos Commit y luego sincronizaremos estos cambios. Este cambio ya está disponible en GitHub también. Si vas en tu Si abro este repositorio de Git Hub, nuevamente, puedes ver justo ahora hubo un commit y puedo ver todos los commits aquí Eso lo mantiene fácil con el fin de realizar un seguimiento de todos los cambios que has hecho en tu código a lo largo del tiempo, en caso de que hayas cometido un error en alguna parte, siempre puedes volver a uno de estos commits Es por eso que usamos Git a lo largo del proyecto como lo estoy haciendo, vas a ver que lo use varias veces entre cada característica o implementación o pantalla para que haga cada característica o implementación o un seguimiento del progreso en caso de que vuelva a haber algún problema, pueda volver atrás o retroceder al commit anterior. 12. Elección del modelo de cursor: Quería tocar brevemente las diferencias entre los diferentes modelos y modos de agente y cómo los uso. En cuanto a los modos, tienes el modo Agente, que hemos estado usando para dar tareas para que Cursor las complete por nosotros. Pero también tenemos el modo plan que antes de que el agente tome medidas para cambiar el código, le pedimos que planifique las cosas y nos diga qué va a hacer y cómo implementaría algo para que podamos revisar un documento antes de que realmente se implemente. También hay modo de depuración, que puedes pedir para abordar específicamente errores y también preguntar modo si solo quieres hacer preguntas sobre tu código o cómo funciona tu app en este momento. De los modelos, en realidad puedes desactivar Auto si no quieres y puedes activar el modo Max si quieres la cantidad máxima de tokens utilizados para esa tarea. Composer es el propio modelo del cursor que funciona bastante bien. Eso lo he intentado muchas veces. Ops también es genial, incluido Sont. Normalmente no trabajo con los modelos GPT, pero también están disponibles aquí Mi favorito personal es Sonnet o compositor de operaciones también. Pero ten en cuenta que no es necesario a menos que estés dando alguna tarea más compleja o complicada con la que normalmente tendría problemas el autómata Una vez que tengas un poco más de complicación o tarea complicada para darle a Cursor, ahí es cuando usaría esos modelos, teniendo en cuenta que por supuesto, costó más fichas y créditos usarlos. 13. Añadir página de inicio: Por supuesto, hay múltiples cosas que puedes hacer desde aquí. O bien configura las rutas API para el backend, puedes hacer la base de datos y configurar MongoDB Puede configurar la interfaz de usuario y los diseños. Lo que me gusta hacer personalmente es configurar primero los diseños y luego entrar en la funcionalidad de la app, uno de los errores más grandes que veo en la codificación de vibra es darle la app todo lo que hacer a la vez. Una vez que haces eso, técnicamente pierdes el control de todo y luego tienes que regresar y decirle que haga cambios por todas partes. Pero si mantienes controlado todo el aspecto de codificación de la vibra, donde solo das una tarea, una cosa a la vez para trabajar, no solo podemos controlarla y contenerla porque podemos ver lo que hace cada página a la vez, sino que también es mejor porque está más organizada y hay menos posibilidades de que ocurran errores. Aunque estoy bastante seguro de que todavía hay errores que van a venir oh, voy a empezar con la interfaz de usuario. Voy a empezar con la página principal. Aquí, de vuelta en los diseños, tenemos las páginas de autenticación, y estoy seguro de que podrías necesitar páginas de autenticación para ti también. Pero mi página principal es una página de tablero, y si tienes una página de panel o página de inicio como esta, siempre puedes comenzar con esa y eso es lo que te animo a que hagas. Um, y vamos a usar lo se llama Figma servidor MCP, que esencialmente crea una conexión entre Figma y Cursor para poder hacer eso o hacerlo fácilmente para que podamos copiar un enlace de Figma, pegarlo en Cursor, y en realidad tomaremos todas las propiedades de la pantalla, no solo capturas de pantalla e implementar una muy cercana, no solo capturas de pantalla e implementar versión limpia de este diseño o interfaz de usuario. Uh, entonces para hacer eso, necesitarás Figma Pro, necesitas la cuenta de nivel profesional y luego vas a cambiar al modo Dev por aquí Por aquí, se puede ver el MCP en este panel. Si no lo ve, es posible que tenga MCP deshabilitado. Si tiene MCP deshabilitado, verá este servidor MCP de escritorio habilitado . Vas a pegarle a eso. Entonces obtendrás MCP habilitado en esta URL y vas a seguir adelante y copiarlo Una vez que vuelvas a copiar eso en Cursor, si estás usando otras herramientas, también tienen MCP para la mayoría de ellas, investiga un poco sobre tu herramienta y cómo configurar MCP Para Cursor, vas a ajustes, vas a herramientas y MCP, y luego golpeas nuevo servidor MCP, y luego reemplazas esta URL obtuviste del Ya lo tengo configurado, así que no voy a hacer eso, pero asegúrate de que pegues guardar una vez que hagas eso. Entonces si lo hiciste bien, deberías ver FICMA el número de herramientas habilitadas y está habilitada por aquí Asegúrate de eso antes de continuar. De esta manera, lo que puedes hacer es simplemente hacer clic en la página que quieras. Quiero la página del tablero. Copia este prompt por aquí, aunque vamos a hacer algunos cambios él y luego traerlo de vuelta al nuevo chat de aquí en Cursor. Pégalo en. Voy a usar solo un modelo de auto para este. Pero claro, hay otros modelos que puedes usar y hablaremos un poco sobre los modelos y cómo elegir uno más adelante. Pero por ahora, un moode auto debería ser suficiente. Vamos a escribir algunas notas debajo de esto. Vamos a asegurarnos de convertir cada carta en un componente. Y asegúrate de convertir Navbar en un componente. Lo que le estoy diciendo a Cursor es tomar la barra de navegación y estas tarjetas y convertirlas en componentes para que podamos hacer cambios fácilmente a las más adelante y nuestro código esté más limpio Sólo vamos a hacer eso, dale a Enter. Voy a empezar a hacer eso. Ahora bien, si tienes MTP yendo bien, deberías verlo pedirte algunos permisos en solo un minuto. Ahí vas. Ya ves que se está ejecutando obtener contexto de diseño Figma. Puedes ver las capturas de pantalla. Nuevamente, podría pedirte algunos permisos si no has ejecutado esto antes. Le daremos un minuto a eso. Mientras tanto, voy a volver a la página principal y ver qué cambios hace o el navegador de archivos real, debería decir. Ahora está comenzando a crear cada componente, está creando un componente NAVR, un componente tarjeta de viaje y actualizando la página con NAVR y el uso de tarjetas de viaje Nuevamente, nos enfocamos primero en el diseño, luego en la implementación de características reales, base de datos y la funcionalidad de la creación real del viaje y demás. Todo está hecho. Nos dio un resumen de todo lo que hizo con esos componentes y se actualizó la página que JS. Vamos a mantener todos los cambios, volver a nuestro navegador que está ejecutando esta aplicación. Ahí lo tenemos. Este es el diseño, está copiado de Figma. Es bastante decente. Obviamente, tiene temas como este íconos para estirarse, pero está muy cerca de lo que queremos que sea eventualmente. Voy a hacer una cosa más y voy a hacer que instale ChadSN para usar componentes de ahí en el futuro Como estoy usando la biblioteca ShatSN, quiero asegurarme de que tenga acceso a los componentes de CN de Shad Debería seguir adelante e instalar eso y buscará el Shad CNUI e lo instalará y ojalá haga algunas actualizaciones para que esos botones en realidad provengan de Shad CN a diferencia de los botones codificados Voy a dejar que haga eso. Puedes hacer lo mismo, y luego volveremos en la próxima conferencia para pulir eso y pasar a nuestra página de viaje. 14. Refinamientos del diseño: Aquí hice algunas cosas para mejorar un poco el diseño. Yo sólo te voy a mostrar aquí. Yo arreglé los problemas con la elipse y el texto dentro del cual no estaba ahí y este SVG que se estiraba para el avión Para ello, escribí algunas indicaciones. Voy a repasarlos muy rápido porque de nuevo, no quiero enfatizar demasiado en la fase de construcción o esta parte del edificio, sino simplemente decir rápidamente qué tipo de indicaciones le di a la IA Me aseguré de que haga que la elipse de texto sea más grande. Pero en realidad antes de eso, permítanme comenzar con lo que inicialmente hice. Al principio le di dos arreglos para hacer. Dije: Asegúrate de que haya una capa de texto alrededor de la elipse dentro y repite los nombres de las ciudades como en el diseño de Figma. Quieres volver a referirte al diseño Figma que le diste y el logo liso está squished, ¿ puedes asegurarte de que conserva la No hizo un gran trabajo de esa. Entonces lo que hice fue repasar Figma, seleccioné esta capa simple, y luego la exporté como SVG Como SBG aquí. Una vez que exporte eso, asegúrese pegarlo en la carpeta pública. Si vas dentro de tus carpetas donde está tu archivo tu proyecto, asegúrate de pegar dentro de esta carpeta pública, cualquier icono que quieras porque ahí es donde se deben almacenar los iconos. Incluso puedes crear carpetas dentro de aquí y esa es una buena práctica. Si quieres crear una carpeta de iconos y luego almacenar todos tus iconos allí. Voy a mantenerlo sencillo y simplemente colocaré todo dentro. Entonces hice un trabajo decente. El texto era un poco demasiado pequeño en comparación con la elipse que ya estaba ahí, el círculo Me aseguré de que sea la talla correcta. Yo sólo le pedí que lo hiciera para que siga el mismo camino. Uno era más circular que ovalado, así que me aseguré de que eso coincidiera e hizo un gran trabajo de eso y le dije que usara el SPG para el avión Um, y de nuevo, algunos pequeños ajustes hacen que los textos sean un poco más grandes Entonces, si tienes que hacer algún ajuste, solo díselo un poco más pequeño o más grande, gira el plano SPG porque estaba mirando hacia el camino equivocado Así que asegúrate de darle esas rotaciones específicas de 90 grados, etcétera Nuevamente, luego se apagó el sello de fecha. Así que puedes ver en los diseños aquí, se ve bastante bien. Pero inicialmente en la app, no lo hizo. Pero luego le pedí que me asegurara de que es centro. Entonces ahora se ve bastante bien. Nuevamente, algunos micro ajustes, trae el texto más bajo, prueba uno oh cinco, dale algunos cambios. Me dijiste que este es el relleno de 110 píxeles, en vez de 100, dije prueba uno oh cinco porque era demasiado. Da números específicos cuando puedas. A continuación, vamos a volver y trabajar en la página del viaje. 15. Página de viajes: Entonces, antes de continuar, me voy a asegurar de escribir el diseño actualizado de la tarjeta de viaje y comprometerme este cambio. Nuevamente, entre tus cambios que realices, quieres empujar a Github de vez en cuando para que puedas hacer un seguimiento de todo y de todos los cambios que hiciste. si acaso necesitas retroceder, lo hace mucho más fácil. En nuestra página siguiente, que es la página de viaje para mí, supongo, esta de aquí. Este es el actualizado. Voy a cambiar al modo Dev, copiar el enlace MCP, minimizarlo. De nuevo, asegúrate de que lo que selecciones, eso va a Figma. Asegúrate de Cursor. Asegúrese de que desde Figma, seleccione todo el marco Bien, así que asegúrate entre tus cambios que realices, creas un nuevo chat en tu sección de chat de IA aquí para que no use demasiado crédito o no estés haciendo un chat súper largo, lo que podría ser ineficiente para los cambios así como la base crediticia también Quieres asegurarte de crear un nuevo chat, golpear Comando o Control en Windows, y luego voy a seguir adelante y pegar ese enlace de Figma para esa página de viajes, y voy a darle alguna información Voy a decir, agrega una nueva página de viajes. Basado en los diseños que aparecen a continuación, el usuario navega a esta página haciendo clic en la tarjeta de viaje de la página principal Déjame echar otro vistazo a los diseños y ver si hay algo más. De nuevo, voy a tenerlo para que las tarjetas de saldo se conviertan en componentes así como convertir las tarjetas de gastos en componentes. El resto se ve bien. Una cosa más que quiero hacer es asegurarme de que esto esté en descarga, para que descargue los iconos. Sin embargo, a veces esto no funciona, es posible que necesitemos exportar manualmente los iconos y las imágenes a nuestro proyecto Pero veamos cómo le va esto al principio. Voy a hacer una pausa y volver cuando termine. Todo bien. Está hecho y me da un resumen de todo lo que está hecho, incluyendo la tarjeta de gastos del componente de la tarjeta de saldo y la página de viajes, así como las rutas. Las rutas son la forma en que la gente navega en tu app NextGS y así se maneja todo eso Ahora podemos probarlo e incluso creamos el enlace aquí. Trips Slug es esencialmente la identificación de ese viaje. Incluso está estableciendo algunas de las bases para nuestro back end más tarde, lo cual es increíble. Hasta el momento, no hemos tenido ninguna integración de back end o servidor. Pero pronto lo haremos y esto va a ser súper útil. En el proceso, está estropeado un poco el diseño aquí para las tarjetas de viaje Lo arreglaremos en sólo un segundo. Pero veamos si hacemos clic en uno. Tenemos un error. Esto es muy común cuando se trabaja con IA. Si obtiene un error como este, simplemente copie la información del error por aquí, pásela de nuevo a su agente de codificación. Solo déjalo ver ese error y arreglarlo. La mayoría de las veces es o algún error lógico o se olvidó definir una variable o algo así donde suele ser pequeña y se solucionará de inmediato. Dale algo de tiempo. Y mientras está haciendo eso, podemos volver aquí y allá vamos. Está arreglado, y se ve genial, para ser honesto. Es de inmediato, es lo más cerca que podemos llegar a los diseños de Figma. Otra vez, esa es la belleza de MCP. Esto me hubiera llevado al menos un par de días hacerlo antes. Pero ahora tenemos todo esto. Por supuesto, no ha hecho nada que no le hayas dicho que sume en gastos aún no funciona. Todos los viajes funcionan, se remonta a todos los viajes. Invitar amigos aún no hace nada, tampoco estos tres puntos aquí. Y se puede ver que se ha creado dos versiones diferentes. Aquí está esta versión para Tokio. Pero si vuelvo, también está esta versión para Bali, se ven diferentes. Estos no son botones todavía, así que claro, tenemos algunas cosas que arreglar. Voy a tomar nota de estas cosas y tú también deberías. A medida que avanzas por armar cada página, toma nota de lo que está mal. Voy a hacer una nota del botón aquí que necesita ser arreglado. Toma nota del add en gasto, pero también para ese, voy a crear un nuevo prompt para ello. Um el resto se ve bien, pero claro, hay temas como estos problemas de alineación. Ya ves que este de aquí está en align. Pequeñas cosas así, toma nota de ello y devuélvalas a la IA. Aquí no hay gradiente detrás de la flecha como lo tengo en mis diseños. Es algo muy pequeño y sutil. Voy a hacer esos arreglos porque son más pequeños y luego regresan y continúan con el resto del flujo, que va a estar sumando en gasto. Entonces también, voy a trabajar en la creación de un nuevo viaje. Esas son dos cosas en las que voy a trabajar a continuación. Um, y otra vez, para tu app, sigue adelante. Pero si estás haciendo exactamente lo mismo, ya sabes, puedes seguir exactamente. 16. Rutamiento al panel: Todo bien. Mi Cursor ahora está haciendo pequeños cambios como el gradiente aquí del que estaba hablando. Ahora, una cosa que quiero decir es un pequeño cambio que quiero hacer y asegurarme de que hagas en tu proyecto es ese proyecto en tu carpeta de aplicaciones, tu página punto JS es inicialmente la página original que aparece. Entonces en nuestro caso, ahora mismo, es solo anfitrión local, 3,000. No hay ningún tipo de barra, página de suma. Cuando estás por aquí, hiplah Bali, entonces básicamente estás mirando dentro de esta carpeta de aplicaciones, la página de viajes Ahí es donde tienes esta identificación de viaje. También queremos mover nuestra página aquí ahora mismo, esta de aquí. Si tienes una página de panel como esta que tengo, no quieres que esa sea tu página de punto JS porque en realidad está destinada a ser para tu landing page. Cuando la gente aterriza en tu sitio web, la página de marketing, la primera página que aparece por ejemplo, aquí para la versión actual de QClip es esta página, entonces tengo una página de dashboard Slash dashboard es en realidad la página del tablero. Un pequeño cambio, lo voy a tener y voy a hacer esto en un nuevo chat. Asegúrese de que la página actual JS se convierta en una página de panel. Y cambia el punto de página JS para que solo tenga un texto de marcador de posición para nuestra landing page No queremos que haga una landing page en este momento. Vamos a hacer eso en un rato. Pero por ahora, solo quiero asegurarme de que esa página se convierta en una página de tablero para que no haya confusión más adelante. Asegúrate de hacer algo así también si no lo has hecho ya que hace un cambio, si volvemos aquí, la página de destino próximamente y luego si vas a barra de Dashboard, ahí vamos Tenemos una página de tablero aquí. Sólo por simplicidad, voy a decir añadir un botón en la landing page que me lleve al dashboard. Para que cada vez que lanzamos el proyecto porque por defecto, aterrizamos en la landing page, que actualmente está aquí. Queremos tener sólo un botón. Nuevamente, esto es temporal solo para que lleguemos a esta página rápidamente. Así que voy a seguir haciendo pequeños cambios principalmente en el diseño y funcionalidad como esta de aquí por el lado del diseño. Entonces una vez que las cosas estén listas, procederemos o procederé a agregar un gasto y agregar un flujo de viaje. Una cosa más que voy a hacer es, um, ya sabes, cambiar los enlaces de todos los botones que anteriormente estaban vinculados a Page JS para ir a porta JS, en la página de Trips. Solo quiero estar seguro de que también cambia este enlace aquí. Todos los viajes deben volver a Dashboard en lugar de la página de inicio o nuevamente, a la página de destino. Asegúrate de hacer ese cambio. Sólo algo sutil a tener en cuenta. 17. Incorporación de gastos: Bien, las cosas empiezan a verse bien y mucho más limpias, así que voy a seguir adelante y comprometer los cambios. Cambiar tarjetas y agregar página de viajes. Voy a sincronizar estos cambios ahora volviendo atrás, quiero agregar mi flujo de gastos de agregar. Ya lo diseñé por aquí porque pensé por qué no es más fácil pasarle esto a Cursor. Aquí, voy a hacer doble clic para seleccionar esta tarjeta que básicamente agrega un gasto y luego dirigirme a MCP para copiar el enlace o el modo Dev aquí en Cursor Va a crear un nuevo chat, pegar eso y decir, agregar una tarjeta para permitir a los usuarios agregar gastos una vez que hagan clic en el agregar gasto. Pero en la página de viajes, quieres ser específico así, dar el ejemplo de dónde está, aunque lo más probable es que dar el ejemplo de dónde está, aunque lo también lo averiguaremos, pero esto lo hace un poco más fácil. Asegúrate de desvanecer este blog y si el usuario hace clic en Cancelar, entonces ciérrelo. Si hay cambios realizados dentro o números agregados en los campos de entrada, mostrar una alerta, primero, luego cancelarla o cerrarla. Todo bien. Le dio algunas instrucciones ahí y la principal fue si el usuario hace clic para cancelar este gasto, asegúrese de que realmente se les pida, ¿realmente quieren cerrar eso o no? De esta manera no pierden algunos datos. Simplemente un desglose realmente rápido. Aquí tengo un campo de cantidad, por lo que el usuario pone la cantidad. Les dice para qué fue. Aquí es donde aparece la categoría por aquí. O el nombre del gasto. Entonces así es como se divide. Por lo general se divide por defecto es igual, lo que igual entre todos. Pero entonces si quieren, en realidad pueden entrar y cambiar los números y dinámicamente se actualizará. Si quieren ir con base porcentual, pueden hacerlo. Si van base dólar por dólar, pueden hacer eso, o si quieren por día, también pueden hacerlo. Entonces si recuerdas, calculará cuántos días del viaje total, ¿esta persona durmió en este Airbnb por lo tanto cobra la cantidad correcta y luego agrega gasto. Así que bastante sencillo sencillo. Empezará a hacer eso y veamos qué hace en un minuto. Todo bien. Está hecho de trabajar y vamos a ver con un gasto. Entonces es obvio que no accedió a los diseños de Figma. Puedo decir por el diseño, simplemente no siguiendo exactamente cómo debería ser. Se lo voy a preguntar, ¿seguiste exactamente los diseños del FICMA y se lo preguntaste No teníamos acceso, recogiendo los diseños ahora. A veces esto sucede. Comete errores, en realidad no accede a él por el motivo que sea, posible que necesites repmpt Solo un recordatorio amistoso, es posible que deba hacerlo varias veces si no sucede la primera vez. Veamos qué hace esta vez. En esta ocasión, lo arregló. De hecho, ingresé algunos números $20 automáticamente calcula todo a $30, ahí tienes. Se puede quitar a la gente de ella. Estos probablemente no sean los estados correctos, así que solo necesito actualizar esas pequeñas cosas. Se puede hacer base porcentual. Y esto tampoco se ve bien. Nuevamente, tal vez necesite hacer algunos cambios aquí y allá para asegurarme de que para los detalles, lo actualice Pero el diseño base es decente. La colocación de estos, por supuesto, no es correcta, pero al menos nos pregunta, ¿queremos descartarlos realmente, a un costo, y entonces no puedes ahora te está dejando agregar gastos vacíos Pequeñas cosas como esa necesitan ser arregladas. Pero haremos esos cambios y continuaremos en la siguiente ecture. 18. (Artículos para autenticar tu sitio web): Bien, nos estamos metiendo en la carne del curso, la fase de construcción, y volviéndonos más reales con ella. Cambié la configuración de la luz detrás de mí para que coincida con esa vibra. Pero básicamente, en realidad vamos a empezar a trabajar en nuestra autenticación ahora. Así que voy a ejecutar el proyecto y una especie de revisión una vez más donde estamos. Tengo mi página de tablero configurada. Obviamente, estos son datos de prueba y no reales, por lo que llegaremos a crear viajes reales y datos reales. Por ahora, todas estas son solo pruebas, pero tengo una IU de trabajo, primera que va. Obviamente, todavía hay mejoras por hacer, pero no vamos a bajar a los detalles. De hecho, haciendo tu MVP, deberías estar priorizando el impulso y sacándolo rápido en lugar de los pequeños detalles que como diseñador, a veces me voy por esa madriguera de arreglar pequeños detalles de diseño también, y hasta cierto punto, importan Sí, tengo el flujo de gastos también agregado por aquí para mí. Otra vez, no perfecto. Aún quedan retoques por hacer Pero creo que este es un buen momento para empezar a trabajar en la autenticación. En otras palabras, permitir que los usuarios realmente inicien sesión y creen una cuenta. Para eso, vamos a usar dos herramientas. Vamos a usar ATJS que es esta biblioteca que te permite iniciar sesión a tus usuarios usando diferentes aplicaciones, incluso como Github y Google, Twitter, Apple, así como Email, por supuesto De nuevo, vamos a hacer MVP y vamos a seguir con solo correo electrónico por ahora Pero obviamente, para configurar estos, también puedes pasar por eso. Simplemente toman un poco más de tiempo y un poco más de configuración per se. De hecho, puedes ir a través de las instrucciones para esos sobre cómo configurar, por ejemplo, Google, así que por ahora, comenzaremos con solo iniciar sesión por correo electrónico, así los usuarios pondrán su correo electrónico. Les enviaré un enlace mágico para iniciar sesión. Y para ese enlace mágico, necesitamos realmente enviar correos electrónicos. Para enviar correos electrónicos, vamos a utilizar esta herramienta llamada Reenviar y este reenvío esencialmente le permite enviar hasta 3,000 correos electrónicos al mes de forma gratuita Esta es una gran opción. Así que adelante y empieza a crear una cuenta para Reenviar Yo voy a hacer lo mismo por aquí. Todo bien. Entonces, una vez que estés dentro, puedes crear una clave API para tus cuentas, seguir adelante y hacerlo. Y asegúrate de copiarlo. Ahora lo que vas a querer hacer es que vas a volver en tu Cursor o donde sea que tengas tus archivos y vas a crear un nuevo archivo, y lo vas a llamar exactamente deletreado punto ENV punto Local Por lo que este es un archivo de entorno donde se almacenarán todas tus claves API para que estas claves API puedan ser utilizadas para autenticar tu app con reenvío para enviar correos electrónicos Este es un archivo súper privado. No quieres publicar o publicar esto en GitHub. Es por eso que en realidad está automáticamente en el archivo Ignorar lo que ignorará la carga de ese archivo Este archivo en realidad define lo que se insertará en GitHub versus lo que no es y los archivos ENV punto no lo serán Estos son secretos. Quieres mantenerlo en secreto y en tu máquina. Um, así que por aquí, realmente puedes teclearlo como quieras, pero me gusta simplemente hacer Resend underscore API underscore key, equals, y luego pegar tu Una vez que pegue su valor, presione Guardar, cierre ese archivo. Ahora, también queremos configurar Auth JS. Entonces vamos a contar, ya sabes, Cursor para que nos ayude con eso. Pero primero, en realidad voy a copiar el diseño de nuestras pantallas de autenticación. Entonces solo voy a hacer esta de aquí. Voy a ir por aquí. Ahí vamos. Implementemos esta pantalla de inicio de sesión desde Figma. Primero, sigamos adelante e implementemos el diseño antes de integrar realmente la pantalla de inicio de sesión. Voy a estar seguro de usar elementos Shad CN. Y esta página debe ser recortada Iniciar sesión. Te estoy diciendo qué nombre crearlo, aunque probablemente lo hubieras descubierto de todos modos, pero te estoy diciendo explícitamente que hagas una página de inicio de sesión bajo nuestra aplicación Cuando vas a tu app.com barra de inicio de sesión, personas y en esta página Empezaremos con eso. Volveremos en un segundo para ver cómo le va. Vamos a cortar Iniciar sesión. Y ahí vamos. No está nada mal, muy cerca de lo que tenemos. Nos preocuparemos por el gráfico aquí más tarde una vez que tengamos nuestra aplicación en marcha. Pero esto es genial. Hay cosas menores de nuevo que arreglar cuando estoy pasando el cursor sobre los botones, este botón de inicio de sesión no muestra el Cursor correcto Nuevamente, para esas pequeñas cosas, solo asegúrate de hacérselo saber en el botón de inicio de sesión, el enlace correcto El tipo de cursor no aparece. Así es como quieres acercarte a tu conjunto de arreglos pequeños y uno a la vez. Entonces vemos que tenemos un cartel. Todavía no tenemos una pantalla de registro, así que también le voy a pedir que duplique esta página y también haga una versión de registro en slash sign up Yo hago cola eso. A continuación, trabajará en eso. Y mientras está haciendo eso y terminando eso, volvamos en la siguiente conferencia para continuar con nuestra configuración de autenticación. 19. Base de datos: Bien, tengo una página de registro que va a y antes de que realmente podamos hacer que nuestra autenticación realmente funcione, necesitamos configurar una base de datos. Entonces la base de datos es donde se almacenan los datos. Entonces, una vez que un usuario pone en su correo electrónico, la contraseña y quiere crear una cuenta, aquí es donde en la base , esencialmente se creará un registro de cuenta, y en cualquier momento necesitamos hacer actualizaciones a ese usuario o necesitamos agregar viajes o necesitamos agregar gastos. Todos esos tienen que estar separados. Se pueden pensar en ellos como tablas o categorías separadas de documentos que necesitamos usando una base de datos. Para nuestra base de datos, vamos a estar usando MongoDB. Por supuesto, hay otras opciones como Postgres y Neon y un montón de otras. Si ya estás acostumbrado a uno, cógelo. Si no, comenzar con Mongo DB es sencillo. Dirígete a mongodb.com, empieza. Ya tengo una cuenta, voy a iniciar sesión. Una vez que hayas iniciado sesión, asegúrate de ir a crear un nuevo proyecto. sólo voy a nombrar mi proyecto Por ahora sólo voy a nombrar mi proyecto trip Expense app. Nuevamente, puedes cambiar esto más tarde. Golpea siguiente. Golpear Crear proyecto. Entonces una vez que estés aquí, quieres seguir adelante y crear un clúster. El clúster es esencialmente un contenedor para su base de datos. Aquí es donde van a aparecer algunas opciones. Voy a elegir el gratuito es lo suficientemente bueno para empezar, y luego a medida que consigas más y más usuarios, es posible que quieras actualizar a los otros. Solo para dejarlo clúster cero para el nombre y luego dejarlos con la configuración predeterminada, cree despliegue. Ahora, enseguida, verás alguna contraseña de nombre de usuario aquí. Vas a seguir adelante y golpear Crear usuario de base de datos. Vas a elegir un método de conexión y yo voy a elegir brújula. Entonces Compass es esta aplicación que vive en tu máquina y puedes administrar esencialmente los datos por ahí puedes ver los datos. No es necesario que inicie sesión en mongodb.com cada vez en su navegador De hecho, solo puedes usar esta aplicación MongoDB Compass para hacer eso Adelante y descárgalo. Tómate un segundo para hacerlo si no lo tienes. Ya lo tengo, así que voy a golpear tengo instalado Compass. Entonces aquí abajo, obtendrás algo de cadena para tu conexión. Necesitas esta cadena nuevamente para tenerla dentro de tu código. Asegúrate de copiar eso. Hit hecho aquí. Vuelve a tu código y dentro de punto punto Local que creamos, vas a crear una nueva línea Mongo subrayado URI es igual, y luego pega en esa cadena que obtuviste de Mongo Golpea Guardar y Cerrar eso. Ahora, una vez que estés dentro de la brújula MongoDB, puedes agregar una nueva conexión, pegar en ese URI que tienes Voy a cambiar el nombre a la app de gastos de viaje aquí y luego guardar y conectar. Así que ahora estoy dentro de aquí. Aún no hay datos, así que aquí no hay nada que puedas ver. Vamos a hacer una cosa más. Vas a volver a tu on local al final de tu cadena aquí donde dice mongodb.net slash, vas a No importa necesariamente cómo lo escribas o incluso si escribes desarrollo o tal. Eso es todo solo para crear una carpeta aquí llamada Dev o un contenedor, puedes pensarlo que básicamente separa tu base de datos Dev of testing de tu producción. Una vez que estemos en vivo y otros usuarios puedan usar esto, querrás que normalmente permanezca en otro contenedor en tu base de datos o en tu clúster para que no esté todo mezclado. Esto es más para la organización y las mejores prácticas. Una vez que lleguemos a la producción real, ya verás cómo hacerlo. Pero por ahora, asegúrate de agregar ese slash Dev. Todos estamos arreglados aquí. Volvamos ahora en la siguiente conferencia para comenzar realmente a autenticar a los usuarios 20. Finalizar la autenticación: Para llegar a crear usuarios. Una cosa que sí quiero señalar es que ahora mismo dentro de mi app, tenemos este correo electrónico y contraseña. Voy a elegir no ir con contraseña y simplemente mantenerla simple para que los usuarios solo pongan su correo electrónico, obtengan un enlace para realmente iniciar sesión en la aplicación fácilmente. De esta manera, es mucho más sencillo y no necesitan recordar contraseña y así sucesivamente. Obviamente, puedes optar por hacerlo si quieres. Por supuesto, estos botones probablemente no funcionarán para empezar. Después, si tenemos el tiempo, siempre podemos configurarlo. Pero por ahora, centrémonos en conseguir que los usuarios inicien sesión con correo electrónico. Para hacer eso, voy a ir por aquí y en una nueva charla. Vamos a instalar next auth e implementar la autenticación, funciona y además agregaremos un modelo de usuario y los archivos necesarios para Mongo Vas a escribir eso y básicamente todo lo que te estás diciendo que hagas es instalar esa siguiente biblioteca JS de la que hablamos, y luego seguirá adelante y creará un modelo de usuario. Cada vez que hablamos de algo así como un modelo, significa básicamente definir cuáles son los parámetros de un usuario, por ejemplo, un usuario tiene un correo electrónico tiene una contraseña, tienen nombre, tienen viajes que crearon y los viajes son aquellos que podrían vincularse a otro modelo, esencialmente. Quieres pensar en ello como cuáles son los datos relacionados con el usuario o cualquier otro modelo que estemos creando. Una vez que empecemos a crear el modelo de viaje, de manera similar, vamos a necesitar campos de fecha desde qué día hasta qué día. Um, cuanta gente forma parte de esto, ¿quién forma parte de este viaje? Qué gastos hay bajo este viaje. Podemos ver que Cursor ya armó uno para nuestro usuario dot js. Así es como se ve, ¿verdad? Tenemos el nombre, tenemos el correo electrónico, tenemos la contraseña. Añadió contraseña porque la vio en los diseños, pero de nuevo, no vamos a necesitar. Se trata de timestamps, que básicamente solo muestra ¿cuándo se creó este usuario? ¿Cuándo se actualizaron por última vez o cuándo se actualizaron sus datos por última vez? Simplemente por defecto, deberían estar ahí. Vamos a conservar este archivo. Cometí un error aquí y olvidé decirle que realmente elimine la contraseña y use reenviar para enviar correos electrónicos de verificación Eso es lo que estoy haciendo exactamente en este momento, diciéndole que elimine la contraseña de la aplicación y la autenticación y en su lugar use el campo de correo electrónico y reenvíe para su verificación Voy a esperar a que esto termine y luego vuelva. Más cosas que tienes que hacer para Next Auth funcione es que necesitamos esta clave secreta de autenticación para poder integrarla o agregarla a nuestro archivo local o archivo de entorno Simplemente copie este NPXotSecret desde aquí y luego ejecútelo en su terminal Voy a abrir una nueva terminal aquí y luego solo ejecutar eso. Tú haces lo mismo. Entonces podría indicarle que instale un nuevo paquete, así que simplemente escriba Y y presione Enter como para sí. Te voy a dar algo de valor. Solo asegúrate de copiar eso y ponerlo en tu archivo local. Cursor incluso ha armado ejemplo para mí para ver cuáles son las cosas que necesito. También necesito esto reciente del correo electrónico. Asegúrate de agregar eso. Para las pruebas, solo puedes quedártelo así. Una vez que compramos un dominio, queremos usar realmente el dominio real. Voy a reiniciar mi servidor golpeando Control C y luego subiendo aquí para ejecutar NPM Run Dev Solo estoy usando la tecla de flecha hacia arriba para volver al último comando que he escrito ahí, presionar Enter y luego abrir mi proyecto una vez más. Tenemos este correo electrónico. Bienvenido de nuevo. Ahora, no tengo una cuenta, así que voy a hacer registro. Asegúrate aquí de poner la dirección de correo electrónico que te registraste con Resend para fines de prueba. Ahí vamos. Cuando reviso mi correo electrónico, me sale algo así. Parece que no pegamos correctamente el siguiente de secreto, igual que lo tiene en este archivo de ejemplo. Entonces probemos eso una vez más, haga clic para iniciar sesión, y ahí lo tenemos. Estamos conectados. En realidad tenemos un usuario ahora. Dice nuestro correo aquí, podemos cerrar sesión desde aquí. Si voy a nuestro Mongo DB Compass y actualizo esta app de gastos de viaje, podemos ver que tenemos esta carpeta ahora Dev porque ponemos ese slash Entonces si voy por aquí, tenemos usuarios, y ahí vamos. Ese es mi usuario, así que se presentó ahí arriba. Aquí no tenemos nombre. Quizás en la página de registro, podamos tenerla para que el usuario llene ahí su nombre de pila. Originalmente, mi diseño, pensé que iba a hacer una página separada, pero es una tontería tener solo un campo aquí. Voy a crear un nuevo chat y pedirle a Cursor que agregue un nuevo campo de nombre a la página de registro anterior correo electrónico el nombre del usuario también se guarda en la base de datos abreviatura de base de datos. Voy a dejar que eso funcione y prácticamente tenemos nuestra autenticación completada. Ahora tenemos usuarios, tenemos una base de datos, y estamos un paso más cerca de hacer que esta aplicación sea completamente funcional. Volvamos a continuación para enfocarnos realmente en permitir a los usuarios crear viajes. 21. Cómo crear viajes: Bien. Creo que estoy listo para comenzar a hacer el crear un nuevo viaje aquí para que la gente pueda golpear Crear un nuevo viaje. Estoy pensando MVP, mantenlo simple, alerta rápida pantalla modelo que aparece, les pide el nombre del viaje, y las fechas, las fechas serán opcionales, pero voy a mantener eso ahí Y me aseguraré de usar los componentes hat CN porque ya tienen los selectores de fecha resueltos, así que no es necesario que lo descubran. Entonces para lo demás, realmente no necesitamos nada más del usuario. Entonces tal vez solo tenga un viaje de creación rápida y tinta, copie el enlace de invitación. Simplemente hacen eso y luego lo pueden enviar a quien quieran para que se una a su viaje. Empecemos con eso. Voy a regresar y crear un nuevo chat aquí y decir, um, hagamos agregar un viaje funcional los usuarios pueden agregar un nuevo viaje. Asegúrese de agregarlo al modelo de usuario. Asegúrese de crear un nuevo modelo de viaje. Así que de nuevo, modelo de aquí es cómo hacemos un seguimiento de diferentes tipos de datos, un viaje debe tener sus propios datos separados del usuario, y el viaje incluirá cosas como, como hablamos antes el nombre del viaje, um, el número de gastos o los gastos por debajo de él, quién es parte de este viaje para que podamos mostrar o permitir que los usuarios vean los viajes correctos y así sucesivamente y así sucesivamente. Entonces como parte de ese modelo de viaje, así que solo escribiré como parte del modelo de viaje, asegúrate de agregar el siguiente nombre propietario, así que quién creó este viaje los usuarios que forman parte de él. Posteriormente agregaremos gastos. No tenemos un modelo de gastos, así que simplemente dejaremos eso fuera. Fecha de inicio, fecha de finalización de los viajes. Realmente no necesitamos una ubicación, ese sería solo el nombre. ¿Qué más necesitamos? Creo que es bueno para empezar. Entonces vamos a hacer que cree un nuevo modelo usando Shad CN los componentes que se mostrarán cuando el usuario golpee, cree un nuevo viaje y solo pida el nombre y fechas y fechas de inicio Hacer fechas opcionales, pero se requiere nombre y hacer el CTA primario o llamado a la acción, crear viaje y copiar enlace de invitación con un CTA secundario para simplemente crear Vamos a correr eso, darle un segundo y volver a ver qué hace. Es importante saber qué está pasando en segundo plano ya que está haciendo esto y agregando eso. Quiero asegurarme de que entiendas lo que está haciendo el agente de IA en segundo plano porque de nuevo, creo que es importante tener también algunos antecedentes. Es hacer algunas cosas. Es crear un modelo para nuestro viaje. Si seguimos aquí, vemos todos los datos que le dijimos que queremos. Incluso agregué algunos extra como Invitar código que no le dije que agregara, pero lo está haciendo de tal manera que pueda generar un código de viaje que la gente pueda enviarse entre sí. También se ha creado una ruta API. La ruta API es esencialmente una forma para que el front-end hable con el back end y haga cosas como crear nuevos viajes. Si entramos aquí, hace algunas cosas comprobando primero para ver si el usuario está autenticado Hace algunas comprobaciones iniciales, asegurándose de que se agregue el nombre del viaje. Si el usuario no los agrega e intenta crear un nuevo viaje, esencialmente esta ruta API le impedirá hacerlo. Pero si todo parece correcto, entonces seguirá adelante y dejará que cree el viaje con la siguiente información con el nombre, a quién pertenece, quién forma parte de él, dónde están los usuarios, ¿ cuándo es la fecha de inicio? Cuando es la fecha de finalización. Esencialmente, todo lo que está haciendo este código es permitir que el front-end hable con el back end usando esta ruta API. Um, obviamente está haciendo algunas suposiciones por sí solo. Entonces la IA hará eso si no le das suficiente información o contexto. Creo que no hablé completamente de lo que queremos hacer en la página de viajes, ya sea que vaya a reemplazar ese tipo de tarjetas vacías o tarjetas falsas que creamos hasta ahora. Veamos qué hace y luego vamos a partir de ahí. Bien, entonces parece que en este momento no tengo viajes. Todavía no implementó la página vacía que ya diseñé, pero aún no le he dado esa página. Eso es lo siguiente en las cosas que hacer. Pero intentemos crear un nuevo viaje. Vamos a llamarlo Bali 2025. Fecha de inicio. Escojamos el 2 de marzo, hagamos el sexto, creemos viaje y copiemos tinta de invitación, no podamos crear Trip. Algo pasó. Veamos qué se ha ido. Por aquí en tu terminal, siempre verás cualquier error que pueda haber ocurrido. Parece que hubo algún error con algo que ver con el siguiente aquí que está escrito. Lo que puedes hacer aquí en el Cursor es que realmente puedes hacer en y luego ir a los terminales y puedes seleccionar este es el terminal de nodo, así puedes seleccionar el terminal de nodo y decir, tenemos un error y dejar que lo resuelva. Parece que lo arregló. Intentemos eso una vez más. Y todavía hay un problema. Nuevamente, repita exactamente el mismo proceso. Hay otro error, parece que el error está en otro lugar ahora. A ver si podemos arreglarlo. Veces el encanto. Vamos a golpear Crear viaje y copiar Invitar tinta. Boom, sigue siendo un error. Asegúrate de vez en cuando después de las correcciones, detienes el servidor, así que pulsa Control C en tu terminal y ejecuta tu entorno de desarrollo nuevamente, ejecuta tu aplicación nuevamente y luego hagamos eso una vez más. Bali 2025 y vamos a fijar algunas fechas, aunque no sea necesario. Y ahí vamos. Estamos dentro de Bali 2025. Incluso se creó este enlace por aquí. Ahora bien, no estoy seguro si realmente copió el enlace. Intentemos que sea crear una tinta de invitación por sí misma y la ejecutamos afuera. En realidad no tenemos el enlace correcto aquí, así que no implementó la parte de invitación correctamente, pero eso es solo porque nos apresuramos a crear el viaje y no dimos más detalles sobre cómo va a manejar la invitación de amigos y así sucesivamente. Entonces mi lógica es, primero terminemos la creación del viaje. Consigamos la creación de gastos y todo eso resuelto. Entonces vamos a trabajar en cómo los usuarios realmente pueden invitar a amigos a unirse. Por ahora, esto es increíble. Si volvemos por aquí, se ha creado el viaje, y esto no es solo falso, sino que esto realmente ha pasado por nuestro bagend y si actualizamos nuestra brújula Mongo DB, podemos ver que tenemos esta carpeta de viajes por aquí ahora con todo el viaje que creamos, este viaje que creamos, podemos ver quién forma parte de él Alguna vez ves ID de objeto que hace referencia a otra tabla en otra carpeta. Este es el usuario que tengo por aquí. Ese es el ID del objeto aquí. Coincide con el usuario o el propietario y como parte de los usuarios, también es mi cuenta. Soy tanto el dueño de este viaje como el usuario, lo cual tiene sentido. Tenemos la fecha de inicio fecha de finalización. Se ha creado algún código de invitación. Nuevamente, no dimos más información sobre cómo deberían funcionar las invitaciones, pero lo volveremos a hacer más tarde, una vez que termine todo el flujo para un viaje. Volvamos y en realidad trabajemos en los gastos. Um, y luego entrar en invitaciones. 22. Flujo de gastos: Entonces parece que estamos en un rollo aquí. Entonces, ¿por qué no lo seguimos avanzando haciendo que los gastos sean reales? Así que agreguemos funcionalidad a los gastos, creemos un modelo de gastos con todos los parámetros necesarios, y asegurémonos agregar gastos al modelo de viajes, si no existe ya. Asegúrese de que los gastos realmente calculen saldos de diferentes usuarios. Ahí vamos. Estamos enviando eso a través. Tiempo para probar nuestro flujo de gastos. Agreguemos un gasto. Digamos que eran 20 dólares y era para abarrotes. Y obviamente yo solo tengo una persona agregada al viaje, así que en realidad no tiene sentido. Pero vamos a seguir adelante y ponerlo y ver si eso funciona. Ahí vamos. Se ha agregado. Obviamente, necesita algo de trabajo en este momento es mostrar el correo electrónico aquí en lugar del nombre de pila. Estoy adivinando en algún lugar del código, está mostrando el correo electrónico si no hay nombre para el usuario, en realidad vamos a probar eso Voy a ir a Mongo DB Compass y en vez de que el nombre aquí esté vacío o nulo, adelante y realmente hagamos un cambio a esto Si presionamos Actualizar, pongamos el nombre. Por Nima Tahiti. Este conjunto esencialmente está cambiando este nombre a Nima Tommy. Por lo general, puedes editarlo directamente ahí, pero como era nulo, en realidad tuvimos que hacerlo así. Ahora si estamos frescos, tenemos un nombre. Si me refresco en la app, y ahí vamos. Tenía razón el código está sustituyendo el correo electrónico por nombre. Si el usuario no tiene nombre, éste mostrará esto. Pero me aseguré de que a partir de ahora, recojo nombre de los usuarios en el flujo de registro para ver eso si volvemos a todos los viajes y salimos. Vayamos a inscribirnos ya. Voy a pedir nombre completo, a menos que pongas tu nombre completo, en realidad no voy a dejar que te inscribas, tienes que poner tu nombre completo en. Ahí vamos. El flujo de gastos también está funcionando. Si actualizamos nuestra base de datos aquí, debería ver los gastos como una tabla separada, y ahí vamos. Tenemos el viaje al que pertenece, um, pagado por, ¿quién pagó realmente por este viaje? ¿Cuál era la cantidad? ¿Cuál es la descripción? ¿Cómo se divide? De hecho, tenía todo eso en mente, así como las divisiones también. ¿A quién le debe cuánto? Esto se ve bastante bien. No voy a mentir. Obviamente, todavía hay mejoras que puedo hacer en esto permitiendo a los usuarios eliminar gastos, asegurándose de que esta división entre funcione bien. En el futuro, voy a hacer algunas pruebas para asegurarme de que esto funcione. Siguiente paso, voy a hacer que el flujo de Invitar amigos funcione para que los usuarios puedan copiar un enlace por aquí, presionar Invitar amigos, copiar un enlace y luego poder invitar a otros amigos a la aplicación. El problema es que en este momento no podemos crear múltiples cuentas porque Reenviar solo nos permite enviar correos electrónicos desde dominios que poseemos y realmente no hemos marcado esta app ni hemos encontrado un dominio ni nada por el estilo Sí necesitamos hacer una pausa, hablar un poco sobre la marca y crear un nombre y todo eso. Una vez que hayamos terminado con eso, en realidad podemos seguir probando este flujo. Por ahora, no necesito preocuparme por eso. Eso es más en la fase de pruebas. Por ahora, voy a asegurarme de que primero, se implemente, esto Invitar amigos funcione. Los usuarios que no estén autenticados pueden ver la página, solo la información del viaje por aquí, y luego tal vez un botón para unirse al 23. Identidad de marca: Entonces necesitamos llegar a una marca antes de continuar. Ya sabes, en algún momento de tu proyecto, tienes que hacer esto. Es una de esas cosas que a veces lleva un poco de tiempo llegar a ocurrir, especialmente elegir el nombre correcto, el logotipo correcto, ya sabes, fuentes, colores, etcétera Me enfrento a ese problema muchas veces, como se puede imaginar, um, construyendo, no sé, 16 apps más. Y así llegar a una aplicación yo mismo para ayudar realmente con eso. Ahora, por supuesto, alternativamente, puedes hacer esto en ChatGPT No es necesario que lo hagas exactamente en esta herramienta, pero esencialmente armé esta herramienta para poder darte una marca rápida, incluyendo colores, ideas de dominio, ideas de nombres, etc. Entonces ya tengo un dominio tripvela.com, y como tenía esto para un proyecto anterior que en realidad nunca cobró vida, quiero usarlo para este proyecto porque es muy relevante, pero no tengo logo para ello y realmente no tengo fuentes y colores específicos Entonces voy a usar Brand kit para llegar a eso. Vas a escribir la marca o, ya sabes, la idea aquí, una app para ayudar a los amigos a dividir los gastos en los viajes. Porque ya tengo nombre, voy a decir que se llama Tripvela No necesito el nombre D. solo necesito logo y tal vez algunos colores de fuente. Tomará un segundo aquí. Obviamente, está mostrando Tripvela como nombre. Aquí hay un logo sencillo que puedo usar. Este es un logotipo básico, pero también puedes obtener uno premium. Voy a probar logo premium. Este esquema de color no está mal, pero voy a cambiarlo y tratar de ver qué más podemos conseguir aquí. Esta es una decente. Este gris también es bonito. Podría usar algunos de estos colores. Pero por ahora, veamos, este es el logo premium que se le ocurrió. Vamos a darle una vuelta más a eso. Obviamente, tripl.com se toma porque ese es el dominio que tengo, pero te muestra otros dominios disponibles también Si quieres otros nombres, puedes barajarlo. No tienes que traer tu propio nombre a la herramienta. Cualquier cosa viene con una firma de correo electrónico para ti, así que puedes usarla para tu correo electrónico. Siéntete libre de jugar con esto, inventar una idea de nombre, inventar algunas fuentes y colores. Nuevamente, puedes usar esto o puedes chatear con ChatGPT para idearlo, y luego seguir adelante y comprar un dominio Asegúrate de comprar un dominio y luego volver a integrar tu dominio en Reenviar solo para que podamos crear múltiples usuarios para que podamos probar nuestro flujo de Invitación o al menos para mi aplicación Si tu aplicación es diferente y no necesitas hacer esto, puedes dejarlo hasta el final. Te veré en un minuto. 24. Conectar el dominio para reenviar: Espero que a estas alturas ya hayas comprado el dominio que vas a usar para tu proyecto. Una vez que lo haces, ahora estoy usando Namechep aquí, así que podrías estar usando Go Daddy, Namechep Asegúrate de encontrar la sección DNS avanzado para que puedas agregar algunos registros aquí. Estos registros nos permitirán enviar correos electrónicos desde reenviar a los usuarios Tenemos que ir bajo dominios aquí en resend.com en un Escribe tu dominio. También puedes hacer agregar dominio. Puedes enviar correos electrónicos desde, por ejemplo, notificación dotdmain.com Yo voy a hacer lo mismo. Voy a hacer notificaciones.tripvela.com, que es mi dominio. Y luego vamos a hacer agregar dominio. Entonces te voy a dar algunas instrucciones aquí. Incluso puedes ver un video si quieres. Pero es bastante simple. Todo lo que necesitas hacer es copiar estos registros en tu DNS, en tu proveedor de dominio. Vas a agregar un nuevo disco. Si miras hacia atrás, este es un registro TXT, quieres seleccionar el registro TXT. Para el anfitrión, de nuevo, pega lo que veas aquí. Por el valor, pega lo que ves aquí, puedes copiarlo fácilmente y solo asegurarte de que estás haciendo esto bien. Tómate tu tiempo con él. También vas a hacer un disco MX. Los registros de MC en realidad están por aquí. Ya tengo enviar notificaciones de punto. Entonces quiero copiar este de aquí. Va a agregar otro registro MX, de hecho, o en realidad, este es un registro TXT, no un registro MX, sino otro registro TXT aquí arriba, pega el host y pega este de aquí, el valor. Ya hemos hecho estos aquí, y este es opcional, pero te recomiendo que lo hagas. Otro registro TXT. Entonces y pulsa Enter. El único que quiero asegurarme de que tú también haces es establecer la prioridad aquí en diez para el registro MX. Debido a que no vamos a recibir correos electrónicos de esto, solo se va a enviar para que la gente inicie sesión. No necesitamos habilitar la recepción. He agregado los registros y luego comprobará el DNS. Sólo dale algo de tiempo. Si lo has hecho bien, pronto todo será bandera verde. Entonces sabes que tienes esta configuración y puedes comenzar a enviar correos electrónicos desde este dominio. Veces esto podría tardar un poco más de lo habitual, dale algo de tiempo. Puede tomar hasta algunas horas o minutos, pero normalmente esto se hace instantáneamente y estamos verificados. Estamos bien para irnos. Ahora, todo lo que necesitamos hacer es regresar a nuestra base de código y asegurarnos de que en la base de código en su local on dot, como tenemos en el ejemplo on dot aquí, tal como tenemos en el ejemplo on dot aquí, cambie el reenvío de correo electrónico a ese correo electrónico que acaba de crear Pero claro, acabas de crear un dominio. El mío era notificación, punto tripvela.com, pero necesitas un comienzo para el correo electrónico y para este, normalmente, puedes hacer algo como no responder Sin respuesta en notifications.tripvela.com. Voy a simplemente verificar doble que eso es lo que tengo aquí. Asegúrese de reemplazar ese correo electrónico reenviado del correo electrónico para que lo sepa y lo envíe desde el correo electrónico correcto Solo estoy probando esto ahora desde otro correo electrónico para ver si funciona. Veo que sí funciona. Ahora lo estoy recibiendo de las notificaciones de Tripvela en tribella.com, envíame, y luego puedo Ahora que hemos creado otro usuario, puedo crear viajes bajo ese usuario. Pero lo que me interesa es poder unirme a un viaje que alguien más ya tiene. Volvamos y trabajemos en ese flujo en la próxima conferencia. 25. Configuración de Invita a amigos: Entonces desde el usuario que acabo de crear, que es un usuario diferente con el que creé el viaje inicial, intenté acceder al mismo enlace que ese usuario tiene para ese viaje. Este es el enlace para ese viaje. Pero ahora lo que veo es que no tengo acceso a este viaje. Porque no soy el creador del viaje y no soy uno de los usuarios dentro del viaje, no puedo tener acceso a él. Pero lo que queremos es que realmente queremos mostrar alguna información sobre el viaje, tal vez solo esta parte superior aquí, que este es un viaje a Bali, este es el dueño, estas son las fechas y cuánta gente va. Uh, y luego en vez de ver toda la otra información como los saldos y la actividad del viaje porque aún no es relevante para mí , no me he unido al viaje. Lo que podemos hacer es que podemos tener un botón que diga unirse a este viaje para ver actividad o algo así. Hacen clic en el botón. Entonces, si no tienen una cuenta o si están desconectados, les pedirá que luego creen una cuenta o inicien sesión. Una vez que lo hayan hecho, entonces deberían poder formar parte automáticamente de esta franja y luego ver todos los saldos y la actividad del viaje. Por ahora, vamos a seguir adelante y decirle a Cursor o agente de IA de Cursor. Queremos permitir a los usuarios tanto públicos anónimos como conectados, pero no forman parte de un viaje, para poder ver información de alto nivel sobre el viaje. Eso incluye solo la parte superior, no las secciones de saldo o actividad de viaje. En cambio, debería haber un botón para unirse al viaje. Si un usuario hace clic en él, debe ser llevado a la página de inicio de sesión, y si no forma parte del viaje, entonces debe formar parte del viaje y ver toda la información relevante. Lo que te estamos diciendo es que estamos diciendo que queremos que la gente en Internet pueda encontrar esta tira por este enlace. Si tienes este enlace, significa que puedes acceder al viaje. Entonces alguien lo compartió contigo que tenga acceso a ese enlace. Entonces no es un enlace de acceso público que todo el mundo conozca. Es un vínculo único. Como ves aquí, tiene alguna identificación aquí que normalmente la gente no va a encontrar. A menos que alguien haya compartido este enlace contigo, similar a cómo funciona también un enlace de Google Dog o Figma Las personas pueden ir a esta página, pero no pueden ver ninguno de los datos hasta que realmente crean una cuenta y se unen al viaje. Así veremos a amigos unirse al viaje. Yo como propietario de un viaje, enviaré este enlace a mis amigos y luego les permitiré crear una cuenta o iniciar sesión si ya tienen una para poder unirse a este viaje y participar en agregar gastos y ver saldos que deben o adeudan. Voy a dejar que eso termine y luego volveremos a ver cómo se ve a partir de ahí. 26. Prueba de enlaces de invitación: Um, pasé un prompt más a Cursor una vez hecho, y dije que cuando un usuario hace clic en Invitar amigos, muéstralo brindis, lo que en otras palabras, esto significa un pequeño mensaje que surge para mostrar éxito, etcétera, o errores, y decir enlace copiado, enviarlo a un amigo o dos, eso es solo un mensaje amigable y luego copiarlo en su portapapeles para que puedan enviarlo Porque me di cuenta cuando voy a Invitar amigos, no funciona, así que me aseguré de que también agregue funcionalidad para eso. Siéntase libre de enviar siempre múltiples mensajes para poder agregar cosas en la cola que una vez que el agente de IA haya hecho una cosa, también funcione en otra Por supuesto, puedes ejecutar agentes en paralelo creando un nuevo agente y haciendo que varios se ejecuten en paralelo. A mí me gusta hacer eso si estoy trabajando en algo un poco más complicado. Este proyecto es lo suficientemente simple como para que podamos ejecutar uno a la vez. Todo bien. Vamos a probarlo. Vamos a ir por aquí y echar un vistazo enseguida, aunque este no es mi viaje, es un viaje al que accedí en otra cuenta de usuario que tengo. De hecho puedo unirme al viaje. Entonces, si golpeo Joint Trip Boom, puedo ver toda la información e incluso puedo agregar un gasto. Ahí vamos. Este usuario se llama Tim Cook, así que en realidad puedo ver el gasto aquí. Si agrego 20 aquí, se puede ver que está dividido igualmente hermoso si hago porcentaje. El porcentaje no está funcionando bien. Tiene que averiguar por porcentaje, así que va a cambiar estos campos a porcentaje. Lo mismo por el dólar y lo mismo por día. Obviamente, necesita algo de trabajo. Todavía no estamos aquí para perfeccionar nada. Estamos aquí solo para asegurarnos de que la base funcione y luego comenzaremos a hacer pequeños ajustes. Si sí agrego gasto, Bien, éste se agrega. Hermoso. Se muestra dividido entre esta persona y esta persona. Nuevamente, pequeños ajustes aquí y allá que hacer. Puedo ver que se me deben $10, así que eso es lindo y puedo marcarlo como pagado, pero eso no funciona porque hasta el momento, no tenemos esto implementado. Vamos a asegurarnos de que también los saldos se implementen correctamente. Así que vamos a seguir adelante y hacer eso también. Pero por ahora, podemos ver que todo está funcionando muy bien para que otros usuarios puedan unirse a los viajes. Tenemos dos problemas que Next JS es Cada vez que tengas algunos errores, solo cópialos a Cursor así y abre un nuevo chat y solo comparte el error y ojalá lo arreglemos . Lo mismo con este. Voy a hacer eso en un nuevo chat. Voy a hacer que arregle esos errores. trabajas en tus funciones y luego volveremos en la próxima conferencia para trabajar en saldos para que la gente pueda También trabajas en tus funciones y luego volveremos en la próxima conferencia para trabajar en saldos para que la gente pueda ver realmente sus saldos y sea inteligente y calcule automáticamente o simplifique la deuda similar a lo que hace Spitwise Entonces una vez que eso esté listo, voy a hacer algunos pequeños cambios. Volveré y explicaré los cambios que hice. Podemos ver que esos errores se han ido por cierto, así que eso es lindo. Pero por ahora, creo que estamos más o menos preparados. Si voy a todos los viajes, puedo ver este viaje aquí. Esto no está bien porque dice solo tú, pero de hecho debería decir cuánta gente forma parte de este viaje porque no solo yo ahora, hay tres miembros, dice, aunque deberían ser dos. Nuevamente, pequeños errores aquí y allá. Anota todos los errores que veas. Cuando estés probando tu app así, anota todos los problemas que surjan para que puedas solucionarlos uno por uno. Um, eso es lo mejor que se puede hacer. No intentes solucionar todos los problemas a la vez. Cursor podría estropear más las cosas, um, pero tengo una lista de cosas que hacer, incluyendo, ya sabes, un mejor formato para mostrar dividido entre un mejor icono aquí, así que este ícono podría cambiar en función del nombre del gasto, um, ya sabes, ahora mismo , me permitió agregar un gasto sin decir para qué era. Entonces, bastantes cosas que arreglar aquí buscando temas como por qué eligió a tres miembros. Voy a regresar y hacer esos cambios al final. Luego, por último, quiero asegurarme también antes de concluir nuestro MVP de que la aplicación también es compatible con dispositivos móviles en caso los usuarios intenten acceder a ella en el móvil, cual estoy seguro que lo harán para una aplicación como esta Tal vez necesitemos hacer algunos ajustes a eso también. Volvamos, trabajemos en balances, asegurémonos de que la funcionalidad funcione y luego procedamos a pequeñas correcciones y pantallas móviles. 27. Cómo agregar balances: De vuelta en la app, creé otro usuario y agregué otro gasto ahí. Ahora mi saldo es cero porque un usuario me debe $10, el otro, yo debo $10 Ahora quiero asegurarme de que esta función de saldo funcione y que la gente pueda marcar las cosas como pagadas. Quiero asegurarme de que las deudas simplificadas sucedan para que si los usuarios se deben entre sí, se simplifique quién tiene que pagar a quién para que la gente de todas partes no tenga que hacer transacciones o transferencias y simplemente lo simplifica a quién debe a quién para mantener el número de transacciones Obviamente, hay otras cosas que quiero arreglar, pero antes de eso, voy a ir aquí a Cursor, abrir un nuevo chat y vamos a decir, quiero que los equilibrios funcionen y sean funcionales. tal manera que los usuarios pueden usarlo para realizar un seguimiento de Mark como pagado por cada usuario al que le deben dinero o al que se le debe. También quiero que se simplifique el cálculo de los saldos tal manera que automáticamente calcule quién debe pagar qué cantidad para favorecer el menor número de transacciones o transferencias que los usuarios en el viaje tengan que hacer entre sí. Agrega una alternancia en la parte superior derecha de los saldos, diciendo, El cálculo automático está encendido. Si lo apagan, entonces muestran cuánto se le debe o le debe cada usuario individual al usuario Plana y sencilla, te estoy diciendo que hagas esto funcional, lo hagas un seguimiento en la base de datos, quién se le paga a quién para que pueda ser visible aquí para el usuario, que, por ejemplo, si pagué um este usuario aquí, haga un seguimiento de eso. O supongo, en este caso, si el usuario me ha pagado, puedo decir que Mark ha pagado. Lo mismo con este, hacer un seguimiento de eso y hacerlo vivir, y luego también simplificar las deudas para que si los usuarios se deben entre sí, nuevamente, haga el menor número de transferencias requeridas, igual que lo hace en split wise. Esos son dos cambios que hice. Veamos cómo les va. Un ojo hacia fuera en Cursor ya que está haciendo algo porque a veces noto que trata de hacer algo nuevo. Le pedí que me asegurara de que el botón de pago aquí funcione y quería crear una nueva lista que ni siquiera necesitamos. Ahora vemos las calculadoras automáticas encendidas y si veo en este otro usuario, sí funciona porque ahora mismo está apagada y veo que estas dos personas me deben $10 cada una Pero si hago Auto calculo, esta persona me paga 20 pavos y estoy asentado. Esto funciona, eso es bueno, pero tenemos que asegurarnos de que la marca pagada funcione también. Está diciendo que funciona ahora, veamos. Simplemente desapareció de ahí. Eso es interesante. Vamos a asegurarnos de que las tarjetas no desaparezcan. Hablé muy pronto ahí. Todavía está trabajando en esta función, así que vamos a darle algo de tiempo ahora. Vemos que esto funciona ahora. Puedo revertir estos pagos, marcarlos como pagados. Están pasando algunos problemas donde está duplicando las tarjetas Voy a asegurarme de que en realidad está guardando la misma tarjeta y solo cambiando el esto. Pasando por este proceso, también me estoy dando cuenta de que aquí hay una brecha de UX que podría mejorarse. He usado split wise innumerables veces y una de las cosas es que nunca se sabe cuándo actuar. ¿Cuándo deberías empezar a pagar a otras personas? Lo que pienso hacer es agregar un botón de ajuste con el que pueda interactuar el dueño del viaje. Tienen un botón que dice, um, conformarse que cerrará actividad del viaje para que la gente ya no pueda agregar gastos. Después enviará un correo electrónico a cada participante y diciendo cuánto le deben exactamente a quién de esta manera, ni siquiera necesitan venir a la app para verla y simplemente pueden tener un simple botón en el correo electrónico que dice Mark pagó. Voy a trabajar en esa próxima conferencia y luego asegurarme de que todo el bucle esté cerrado antes de regresar y en realidad solo arreglando algunos problemas más que están en la aplicación, y luego deberíamos estar listos para comenzar. 28. Conclusión: Todo bien. Aquí es donde estamos. Le dije a Cursor que agregara ese botón listo para asentarse. Ahora como dueño de este viaje, puedo marcar esto como listo para asentarse. Ahí vamos. Está listo para asentarse. no puedo agregar transacciones Ya no puedo agregar transacciones aquí y tampoco nadie más en el viaje y los participantes diciendo lo que tienen que hacer. Aquí hay un usuario diciendo que estás todo arreglado. Increíble. Aquí hay otro que dice, le debes $20 a este usuario. Ahí vamos. Esto funciona bastante bien ahora para un MVP, es muy bueno Tenemos un botón de deshacer si es necesario aquí. A continuación, compilé una lista de todas las pequeñas y más grandes correcciones en las que quiero trabajar. Obviamente, esto sería demasiado para mí, para que hagamos esto juntos, y es un poco redundante porque voy a estar simplemente alimentando estas notas de UI UX en Cursor para que las arregle una por una. Entonces voy a hacer pruebas, asegurarme de que funcione, y tratar de no dedicar demasiado tiempo a esto. Por supuesto, es importante no enviar producto buggy. Pero para mí, probablemente estos van a tomar algunas horas como máximo, tal manera que al final de hoy, tengo una versión de trabajo de Tripvela funcionando y luego vamos a volver y aprender cómo podemos realmente empujar nuestra app a través de Verso para vivir en producción para que la gente pueda visitar nuestro dominio y ver nuestro dominio y ver nuestra aplicación y registrarse también en él Ahora una cosa importante que aún no hemos implementado, es también el pago. La capacidad de permitir a los usuarios pagar por este producto. Lo que vamos a hacer es que realmente vamos a trabajar en eso cuando armamos nuestra página de destino en las siguientes conferencias o módulo para que el usuario pueda pagar en ese punto de la página de destino y luego haremos la integración esencialmente funcione en ese punto en su lugar. Será un poco demasiado para hacerlo actualmente ya que también estamos armando la app. Entonces haz lo mismo, envuelve tus páginas que tienes y tu funcionalidad es la principal y luego empieza a tomar notas de pequeñas cosas que notas en el camino. También puedes mostrarle tu app a uno o dos amigos en tu máquina por ahora para que también obtengan sus comentarios y tal vez uno de ellos anote algo que te has perdido. Pero también es un buen ejercicio. Entonces, una vez que estés listo, regresa y continuaremos en nuestra siguiente sección, que va a ser la página de destino , marketing y pagos. 29. Revisión final de la aplicación: Todo bien. Pasé un par de horas arreglando todo esto y listo para enviar realmente. Entonces voy a repasar algunos cambios que hice. He añadido algunos estados de carga por aquí. Tenía Cursor en realidad hacer un esqueleto de carga de esta tarjeta. Entonces cuando se está cargando, se ve bien. Ahora también tengo un estado vacío, así que cuando los usuarios entran al tablero y no tienen ningún viaje similar a como lo tenía en Figma. También creé un logo. Coloqué el logo aquí arriba y el nombre. Crear un nuevo viaje es prácticamente lo mismo excepto que cambié el campo de fecha aquí para que sea un poco más agradable y entremos en un viaje que ya existe Entonces agregué algunas cosas aquí, la capacidad de ver a todas las personas como parte del viaje, las tarjetas de saldo funcionan ahora, y los gastos todos tienen iconos personalizados basados en el gasto. Si no encuentras un ícono, solo hará el signo del dólar así. Agregar gastos funciona ahora. Yo agregué quién pagó, así que en realidad puedes cambiar el usuario que pagó. Se puede cambiar la fecha y ahora todos estos funcionan correctamente. Las divisiones tienen sentido. Si hago 20 dólares, todos estos tienen sentido. Incluso se puede hacer de día. Esto es bueno para cosas como hoteles, Airbnbs, donde quieres dividirlo por día Sí, y luego puedes agregar ese gasto. Si agregaste gastos, tienes que asegurarte de decir para qué sirve. Digamos que gasté 200 dólares en un anuncio de hotel, y luego me devuelven 150 y puedo ver quién estaba entre. Todos esos pequeños cambios agregué el total gastado en este viaje, ajusté un poco el Snavbr y agregué un desplegable para el perfil aquí o el desplegable de perfil Entonces también hice algunos cambios para el móvil. En el móvil, también se ve bien ahora y déjame mostrarte esto es solo para mostrarte en el móvil, cómo se ve. Ahora es compatible con dispositivos móviles. Nuevamente, le di a cada individuo las cosas poco a poco. Dije para móvil, haz lo siguiente y ahora puedes ver que todas las tarjetas se ven bien. En cuanto a la aplicación en sí, está lista. Um aunque todavía no tenemos una landing page, y necesitamos una landing page antes de empujar esto a través de la producción y permitir que los usuarios la usen. Eso es lo que vamos a hacer en el siguiente módulo para volver y comenzar a armar más activos de marketing, incluida la página de destino, e incluyendo la capacidad cobrar pagos de los usuarios para esta aplicación antes de que podamos enviarla en vivo para que la gente la use. Pero en general, probé la aplicación. Funciona bien y te animo a que hagas lo mismo con tu app, y una vez que estés listo para comenzar con más cosas de marketing, entonces te veré en la próxima conferencia. 30. Revisión de la página de aterrizaje: Armar mi página de destino que voy a usar para Tripvela, mi aplicación de seguimiento de gastos de viaje Dejé de lado alrededor de un día para armar esto, y voy a repasar cómo seguí la plantilla que presenté y cómo decidí los elementos que tengo aquí. primero es lo primero, seguí adelante y agregué realmente pegadizo H one text, y eso es lo que te recomiendo que vuelvas a hacer Tu sección de héroes es una de las secciones más importantes, así que quieres asegurarte de mencionar exactamente el punto de dolor que estás resolviendo para los clientes. Um, entonces, ya sabes, escribí mi H one de una manera para hablar sobre el tipo de molestia de dividir los gastos en los viajes. Entonces escribí gastos de viaje divididos sin la molestia. Y entonces el subtexto es donde explicas un poco más sobre, ya sabes, um, lo que hace este producto. Así que he realizado un seguimiento de los gastos compartidos y los liquido instantáneamente para que todos puedan concentrarse en disfrutar del. Y luego podrás planificar tu primer viaje. Ese es el principal llamado a la acción. De hecho, llevará a los usuarios a la página de registro para crear una cuenta. Un bonito gráfico aquí a un lado, un poco agradable Su animación aquí para mostrar diferentes viajes por aquí se puede ver a la gente gastando en un viaje. De verdad platico exactamente cuál es el producto y cuál es el problema. Entonces vas aquí abajo y lees la declaración del problema. Ir en grupo Los gastos se acumulan rápido, una persona paga la cena, otra reserva boletos, alguien más paga el Uber y así nadie recuerda quién debe qué. Esto es cierto que pasa mucho en los viajes y así realmente habla de la emoción del usuario y de la experiencia que tiene. Entonces tengo la declaración de solución. TriplLA te ayuda a realizar un seguimiento para que puedas disfrutar del viaje. Nuevamente, la aplicación te ayuda a realizar un seguimiento, así que en su lugar te enfocas en el viaje. Así es como invitas a tus amigos a tu viaje, configura un viaje y compartes el enlace con tus amigos y familiares. Aquí hay un viaje de muestra y te lo mostraré en un segundo, agrega gastos. Aquí hay un gasto de muestra aquí. Agregue gastos a su viaje y realice un seguimiento de las transacciones, y luego aquí abajo, liquide. De nuevo, pequeñas y agradables animaciones de vuelo estacionario. No tienes que hacer esto en tu landing page, sino de nuevo, porque estoy usando el diseño como diferenciador de mi producto, um, estoy aplicando algunas animaciones um y microinteracciones agradables y microinteracciones Nuevamente, acomódese, vea quién debe qué, Mark pagó cuando estás al cuadrado y mantén ordenado el viaje Antes de mostrarte un viaje de muestra aquí, voy a bajar aquí y mostrarte el resto. De nuevo, una pequeña sección de descanso, dividir el costo, conformarse, sin charlas incómodas de pagaré, y luego otra llamada a la acción, crea tu primer viaje Como puede ver, la llamada a la acción está muy alineada entre sí. Planifica tu primer viaje, crea tu primer viaje alrededor de un llamado a la acción principal. No tengo 1 millón de diferentes. Este que ves en el tablero de navegación, ir a mis viajes solo se muestra porque ya estoy conectado como usuario, lo contrario solo diría registrarse o iniciar sesión. Y luego se me ocurrió el precio basado en lo que platicamos. Decidí hacer dos planes, uno por viaje. Entonces, si hay clientes que solo quieren usar esto y probarlo, pueden pagar simplemente diez dólares por viaje y luego tener gastos ilimitados a diferencia los otros competidores en el mercado, um, y luego dividirse con tantos amigos como sea posible. No hay límite en eso, o simplemente pagan $40 una vez, entonces tienen viajes ilimitados para siempre, todo en este plan, más no por tarifas de viaje, ilimitados nuevamente, gastos, así que esto es una gran relación calidad-precio. Alguien que está mirando esto y viaja mucho probablemente esté pensando, si viajo más de cuatro veces mi vida y divido los gastos con amigos, lo que habla exactamente con el público objetivo que quiero, entonces seguro que obtendrán este trato en lugar de este. Y luego estoy cerrando en base algunas preguntas frecuentes. Así que de nuevo, se me ocurrieron algunas preguntas que podrían estar encima de las mentes de la gente, ya sabes. ¿Cuándo marco a alguien como pagado? ¿Otras personas o otras personas necesitan pagar para unirse? ¿Hay una prueba gratuita? Y así respondí a todos esos uno por uno. Te animo a que hagas lo mismo para tu sección de preguntas frecuentes. Por supuesto, hay una página de términos, página de privacidad, esas que aún no he configurado, pero podrías utilizar diferentes recursos para esa, incluyendo mirar términos de la competencia o consultar con ChatGPT sobre eso Te lo dejo completamente a ti porque esas son impresiones finas y sí importan un poco, para algunos mucho dependiendo de qué tipo de app estés construyendo. Te los dejaré a ti y voy a seguir adelante y hacerlos. Um, solo hay una cosa más que eso que se necesita para esta landing page para que sea funcional o en realidad dos cosas más. Uno es configurar favicon y compartir imagen social para que los usuarios vean los metadatos y todo correctamente Ahora mismo, solo dice Tripvela que es genial. Pero nuevamente, el icono es genérico, es solo un logotipo versal. Los vamos a configurar en la próxima conferencia porque seguro que se aplicará a tu proyecto, así como una imagen de compartir en redes sociales, que es una imagen que aparece cada vez que envíes tu enlace a las personas a las que les envío un aparece cada vez que envíes tu enlace mensaje o en LinkedIn y redes sociales. Debido a que vamos a hacer algo de marketing más tarde, es importante que los establezcas bien. Y luego una vez que hagamos eso, realmente vamos a conectar Stripe para que podamos cobrar a los usuarios. Ahora mismo, tenemos esta cosa del pago, pero en realidad no podemos cobrar a los usuarios todavía. Estos realmente no hacen nada, así que en realidad los conectaremos a Stripe más adelante también. Prometo mostrarte el viaje de muestra. Pongo aquí la muestra de viaje de Barcelona al que pueden entrar los usuarios, y parece que lo haría un viaje real, les da una idea de lo que pueden esperar, sobre todo porque no tengo un plan gratuito. Pueden hacerse una idea de cómo se ve agregar gastos, e incluso pueden jugar con él y les gusta agregar gastos así como lo harían en la aplicación real. Pero claro, esto no está conectado con el back end. Todo esto hice que Cursor hiciera como un sitio web simulado, nada aquí se está guardando. Es solo sobre todo para que la gente juegue y se haga una idea de cómo se ve la aplicación. Creo que eso es muy importante para darles una idea de la app. Vamos a volver y hablar sobre los toques finales a la landing page requeridos antes de continuar e iniciar nuestro marketing y distribución. 31. Configuración de Stripe: Selecciona pagos en nuestra página de destino, vamos a usar Stripe para procesar pagos. Es la forma más sencilla de hacer que esto funcione. Cuando se trata de configurar una cuenta, es la forma más rápida y otra vez, más fácil de manejar los pagos en línea. Entonces, una vez que creas una cuenta a través de stripe.com, podría hacerte preguntas como esta para configurar las cosas. No tienes que responderlas. Puedes omitirlos, pero puedes elegir si tienes pagos recurrentes o pagos no recurrentes. Nuestros pagos no están basados en suscripción, así que vamos a seguir adelante y elegir pagos no recurrentes y luego golpear Continuar, y vamos a continuar aquí. Ahora, te preguntó, ¿quieres ir a Sandbox o cuenta Live La cuenta en vivo es tu cuenta de producción para tu aplicación real cuando está en vivo para los usuarios. Sandbox es para entornos de pruebas. Por ahora vamos a ir a Sandbox. Entonces vas a seguir adelante y buscar claves API para desarrolladores. Por lo general, esto también se muestra en su página de inicio aquí. Así que adelante y obtén dos piezas de clave de ahí para agregarlas a tu archivo de entorno. Una es la clave API. El otro es secreto. Nuevamente, desea asegurarse de que esos estén protegidos y agregados solo a su archivo de entorno. En el archivo de ejemplo aquí, voy a tener la clave API de Stripe. Tienes la clave API de Stripe y luego Stripe la nombra Stripe secret. Desea seguir adelante y asegurarse de que estos se agreguen en su archivo de entorno real y luego agregar esos valores para que esto funcione. Tómate un momento para hacerlo. Ahora que he agregado esas claves, voy a pedirle a Cursor que implemente Stripe para procesar los pagos de los dos planes presentes en nuestra página principal. Sólo voy a explicarle que el plan por viaje es por viaje y cuesta 999 permitiendo a los usuarios crear un solo viaje. Si los usuarios intentan crear más viajes, diríjalos a la página de pagos de Stripe, asegúrate de realizar un seguimiento de los créditos por viaje como parte del modelo de usuario. Entonces aquí lo que te estoy diciendo es información sobre el primer plan, que es por plan de viaje, y cuesta 999 y permite al usuario solo crear un solo viaje. Y si intentan crear más viajes, volverá a abrir esa página de pago para que paguen y, ya sabes, compren otro viaje. Te estoy diciendo que te asegures de hacer un seguimiento del crédito del viaje. Entonces, cuántos viajes la gente puede hacer en base eso como parte del modelo de usuario. Entonces el otro plan un plan es de por vida y cuesta 39 99 y permite a los usuarios crear viajes ilimitados en su cuenta. Asegúrese de realizar un seguimiento de esto en el modelo de usuario también. Voy a asegurarme de que sepa que los usuarios no pueden crear viajes sin tener créditos o un acceso de por vida. Todo bien. Voy a mandar eso y sólo otra vez hablaré brevemente de lo que hice. Le expliqué los dos planes que tengo, los precios para ellos, y le pedí que implementara Stripe para esos. Le di instrucciones específicas para asegurarme de actualizar el modelo de usuario, que es de nuevo, cómo estamos almacenando información sobre los usuarios y se puede ver eso en los modelos aquí. Entonces el modelo de usuario y enseguida, lo puedes ver actualizado, por lo que agregó créditos de viaje. Entonces por viaje actualizaría este número aquí. Entonces sabemos cuántos viajes puede crear la gente debido a cuántos créditos tienen. O si tienen un acceso de por vida, es un valor booleano aquí que creó, que es verdadero o falso y te permite hacer un seguimiento de Voy a seguir adelante y conservar este archivo y asegurarme de que cuando la app esté cambiando de modelo, en realidad detienes el servidor y luego lo vuelves a ejecutar más tarde. Entonces voy a esperar hasta que esté hecho y luego volverlo a ejecutar. Me lo dijo, asegúrate de agregar tus valores de Stripe. Ya lo hemos hecho , así que eso es bueno. Entonces seguiremos adelante y agregaremos los scripts API para eso. Parece que la implementación está lista. Voy a seguir adelante y probar la implementación ahora. Como usuario que no tiene ningún crédito, voy a intentar crear un nuevo viaje. Hagamos Bali y solo golpeemos Create Trip. Necesitas un plan para crear un viaje, compra por viaje o acceso de por vida. El único inconveniente de eso es que de manera realista me muestra las opciones aquí en lugar de simplemente decirme que necesito los créditos de viaje Ahora, vamos a probar desde la página de inicio real si estos funcionan. Hubo un error, así que voy a seguir adelante y asegurarme de pasar ese error de vuelta. ¿Qué pasa con conseguir de por vida? Lo mismo. Nuevamente, cualquier error, pasarlo de nuevo al Cursor y hacer que los analice. Entonces parece que lo ha arreglado. Parece que el error fue en realidad de mi parte. Me pidió que fijara el ID de precio de Stripe por viaje y también el ID de precio de por vida al archivo local de entorno. De hecho, necesitamos crear estos planes en Stripe. Te da las instrucciones, ve al tablero de Stripe, catálogo de productos anuncio producto. Eso lo vamos a hacer. Vamos a ir al catálogo de productos, crear producto y nombrar este por viaje. Es un pago único de 999 y vamos a seguir adelante y agregar producto y asegurarnos de que vayas dentro de ese producto y realmente copies el ID de precio por aquí. Al igual que lo hizo en mi archivo de ejemplo por aquí. Voy a copiar eso y asegurarme de pegar ese ID de precio en ese archivo de entorno. Tómate un segundo para hacerlo. De vuelta en Stripe, también voy a crear un producto para toda la vida y convertirlo en uno de 39 99. Producto, misma idea. Copia el ID de precio y de nuevo en el archivo Environment, voy a pegarlo, asegurándome de que tus valores comiencen con el subrayado del precio Ahora que eso está en su lugar, voy a probar esto. Ahí vamos. Cada vez que estés haciendo pruebas con una cuenta de Stripe, puedes simplemente poner 42, cuatro, dos, cuatro, dos repetirlo varias veces para la tarjeta de crédito, poner alguna caducidad aleatoria y pagar CVC ahora Aquí está la cosa. Ahora mismo, hemos conectado la cuenta de Stripe y hemos conectado el precio o los planes que tenemos a la cuenta de Stripe y a nuestro producto. Ahora nuestro producto realmente puede generar ese vínculo para que las personas compren el plan. Pero necesitamos lo que se llama webhook o webhook Stripe para poder entender realmente o tener nuestra aplicación y nuestras aplicaciones back end, entender y escuchar cuando Stripe le dice que sí, de hecho, esta persona sí compró un plan Así que hemos conectado el primer paso. Necesitamos ahora volver y conectar realmente el webhook que también se menciona aquí, como ves, en un punto final de webhook, debería verse algo así Y agrega este evento a él, y también necesitas establecer un secreto de webhook de Stripe en tu entorno, archivo local Como estamos probando esto localmente en nuestra máquina y aún no tenemos nuestro servidor de producción, también necesitamos usar el oyente webhook localmente en indicaciones de Stripe de que un usuario realmente ha creado o comprado planes Volvamos a la siguiente sectura para implementar el webhook de Stripe 32. en Stripe: Así que hemos conectado Stripe, y ahora necesitamos conectarnos realmente al webhook, que es esencialmente como nuestro back end sabrá cuándo los usuarios compran planes a través de Stripe Porque ahora mismo, cuando realmente permitimos que la gente cree un plan, redirigimos a Stripe, y este es en realidad el sitio web de Stripe No es nuestro sitio web. No sabemos cuándo se realiza realmente el pago de un usuario hasta que Stripe nos dice que eso sucede a través de lo que se llama webhook Si vas aquí a desarrolladores en Stripe, ve a los webhooks. De hecho, puedes configurar un webhook desde aquí o puedes probar con un oyente local Por ahora, vamos a probar con un oyente local. Sigue las instrucciones aquí y asegúrate de iniciar sesión y puedes hacer todo eso a través de tu terminal aquí abajo. Siga el enlace desde la terminal y presione Permitir acceso. Entonces asegúrate de copiar esta línea por aquí y dejarla caer también en tu terminal. Ahora cuando pegues eso en tu terminal, obtendrás un secreto de webhook Quieres asegurarte de que también agregas un secreto de webhook de Stripe como así es igual, y luego ingresa tu secreto de webhook que comienza así WHSECunderscore Tómate un momento para localizarlo y hacerlo. Una vez que lo hice, me encontré con un problema aquí. Entonces, si te encuentras con algún problema, simplemente encuentra este terminal de Stripe y envíalo y di que hubo errores a Cursor. Te pedirá que sigas adelante y entiendas qué salió mal y te dirá de qué debes hacer. Otro problema más, pero sí explicó que necesitamos asegurarnos de que sea localhost punto Colon 3,000 slash APISISH webhook Asegúrate de seguir exactamente esto. Probemos eso una vez más. He actualizado mi secreto otra vez, y vamos a seguir adelante y crear esto en otra ocasión. A ver si va a funcionar esta vez. Verás, obtuvimos un regreso de 200 de nuestro webhook API SIPEash significa que funcionó localmente. Puedes ver en nuestros datos de usuario sobre Mongo, tengo este crédito de viaje ahora de uno Eso solo sucedió porque el webhook de Stripe funcionó, lo que significa que ahora puedes crear un viaje. Vamos a probar eso. Sólo voy a poner Bali dos crear y ahí vas. Ahora tengo este viaje creado porque tenía créditos. Refresco los créditos o si actualizo mi base de datos de usuarios, como pueden ver que el crédito de viaje se ha ido. Eso está funcionando correctamente ahora. Si vuelvo y trato de crear otro viaje más como Bali tres, sabe que me quedo sin créditos y me navegará de regreso a la página de pago. Sé que eso funciona ahora. También voy a probar mi plan de por vida, misma configuración, pero con la vida, debería poder crear múltiples viajes. Te dejaré hacer eso por tu propia configuración. Es posible que tengas suscripción, sigue las instrucciones y Cursor para configurarlo . Eso sí, que hasta ahora solo hemos configurado el webhook de Stripe para que funcione localmente y aún no en nuestra producción. Necesitamos regresar una vez que empujemos nuestra aplicación a producción para conectar realmente nuestra Stripe de producción a la aplicación. Una vez que hagamos eso, debemos presionar Cambiar a la cuenta Live y copiar nuestros precios de la prueba a la producción. Lo haremos en un segundo cuando nos preparemos para impulsar nuestra aplicación. 33. Configuración de seguridad: Nos estamos preparando para llevar nuestra aplicación a producción y permitir que cualquier persona en el mundo la use. Tenemos que hacer dos pequeñas cosas más aquí, pero realmente importantes. Lo primero está en tu proyecto en MongoDB, quieres seguir adelante e iniciar sesión, ir a tu Entonces por aquí bajo la pestaña Seguridad, quieres ir debajo de base de datos y acceso a la red. Después accede a la lista de acceso IP. Esta es esencialmente la lista de direcciones IP que pueden acceder a la base de datos. este momento, aquí se incluye tu dirección IP, que te permite, desde tu máquina local, realizar cambios en la base de datos, um, pero la cosa es que una vez que entremos en vivo, los usuarios con diferentes direcciones IP todo el mundo van a estar usando tu aplicación. Um, así que eso no necesariamente funcionaría porque entonces la base de datos no funcionará y permitirá nuevas entradas o eliminaciones de diferentes direcciones IP Entonces es por eso que necesitas seguir adelante y agregar una dirección IP por aquí y asegurarte de escribir en Lista de Acceso entrada cero punto cero punto cero punto cero. Entonces cuatro ceros y luego cero. Se quiere seguir adelante y confirmar eso y luego se debe agregar por aquí y activo. Ahora bien, esto por supuesto, tiene un poco de riesgo de seguridad con él y hay otras formas de hacerlo, pero esta es la forma más fácil de configurarlo. Solo asegúrate de que tu contraseña de base de datos y nombre de usuario sean seguros. El que te fue dado por Mongo Di B cuando configuraste este cluster Eso es lo más importante es asegurarse de que eso esté protegido para que nadie pueda ingresar a su base de datos. Una cosa más que vamos a hacer de nuevo en la base de código para que nuestra aplicación sea segura es que vamos a hacer una auditoría de seguridad para asegurarnos de que nada esté públicamente expuesto o incorrecto y asegúrese expuesto o incorrecto y asegúrese implementar la limitación de la tasa de API para evitar que los abusadores hagan una verificación de seguridad exhaustiva de todas las funciones de Bend y hayan entrado Esto es solo para asegurarse de que Cursor hará una verificación final más de la seguridad de su proyecto y revisará su base de código, asegúrese de que haya algún límite de velocidad vigente, lo que esencialmente evita que las personas envíen spam a su servidor o envíen spam a su API varias veces Nuevamente, por ahí, hay muchos usuarios y algunos de ellos podrían intentar aprovechar tu plataforma. Ahora, esto le sucede a cualquier desarrollador, así que asegúrate de ejecutar este prompt y por supuesto, probablemente haya otros prompts que también puedas ejecutar para asegurarte de eso Pero esta es la que normalmente usa IE en este momento está comprobando todo en términos de autenticación, middleware, rutas API, deja haga lo suyo para que tu código sea más seguro Pero antes regresamos y realmente empujamos nuestra aplicación en vivo en nuestro dominio para que otros usuarios puedan usarla. 34. El impulso a la producción: Todo bien. Estos son tiempos emocionantes. Finalmente estamos listos para llevar nuestra aplicación en la que tanto trabajamos a la web públicamente permitiendo que cualquier persona en el mundo la use realmente. Entonces esto es emocionante y vamos a estar haciendo esto de nuevo, como se explica en nuestro stack, estamos usando Versal para desplegar nuestra aplicación. Entonces, esencialmente, Versal es la plataforma que aloja nuestro proyecto, y es una gran plataforma. Puedes comenzar de forma gratuita y también hacer un seguimiento de, ya sabes, los registros que están llegando. Así que asegúrate de hacer una prueba final de tu aplicación, asegúrate de que funcione push to Github si no lo has hecho. Te registras en Verso, creas un nuevo proyecto, y luego te pediremos que conectes tu Github. Asegúrate de conectar tu Github para que realmente puedas conectar tu aplicación o importarla a Verso con solo un clic de un botón. Ya lo hice. Voy a seguir adelante y renombrarle este Tripvela. Entonces aquí hay otra cosa importante que debes hacer. Necesitas agregar realmente las variables de entorno aquí para que una vez que tu app sea empujada, esto funcione. Voy a hacer una pausa aquí solo para explicarme rápidamente. Realmente quieres ir en tu entorno, el archivo local, copiar cada una de estas cadenas individuales. Mongo URI, por ejemplo, vas a pegar eso en la clave y luego para el valor, vas a pegar el valor que viene después del signo igual aquí Tómate tu tiempo con este porque es muy fácil cometer un error y también necesitas actualizar algunos de estos para que sean ligeramente diferentes. Por ejemplo, para el Mongo, si recuerdas para nuestro sitio para desarrolladores o nuestro sitio de desarrollo, creamos Dev En tu producción, realmente quieres hacer slash Prod o producción para que tus datos de usuario de usuarios del mundo real se almacenen en una parte diferente del clúster que los datos de prueba Y entonces vas a seguir adelante y sumar más. Nuevamente, teniendo en cuenta, algunos de estos serán diferentes. Mong seguirá igual, excepto por esa última parte en lugar de Dev, asegúrate de que sea slash Siguiente Auth Secret seguirá igual. Siguiente URL de Auth será tu URL donde las personas accederán a este sitio web Asegúrate de poner HTTPS, así que asegúrate de incluir la S para asegurar y luego Colin forward slash forward slash, y luego coloca tu sitio web real allí Para mi caso, esto será tripvelala.com, HTTPS. Tripvela.com. No hace falta poner ningún corte al final clave de reenvío será la misma porque estás enviando correos electrónicos desde la misma cuenta El correo electrónico from también debe permanecer igual. No es necesario cambiarlo. Ahora, la API de Stripe, Stripe secret y Stripe webhook serán diferentes Este, necesitarás cambiar a Stripe cambiar a tu cuenta real. Si tienes algún acuerdo, solo asegúrate de revisarlo en el documento de Stripe Live, y luego puedes copiar cosas . Elige qué copiar. Queremos copiar nuestros productos , pulsa Continuar. Entonces tienes tus llaves por aquí que puedes copiar para la cuenta real, eso debería volver a entrar de aquí en Versll Ahora, deja fuera el secreto del webhook. Eso lo haremos juntos en la próxima conferencia. Tu ID de precio de Stripe por viaje o cualquier ID de Stripe que tengas para tu tipo de pago también será diferente. Asegúrate de copiarlos también directamente desde la versión en vivo de tu Stripe así que asegúrate de hacer clic dentro de aquí, copiarlos correctamente. Nuevamente, el único otro que debería ser diferente es un secreto de webhook de Stripe, que haremos eso en la próxima conferencia juntos Adelante, ingresa esas variables correctamente. Tomaré un minuto para hacerlo, revisarlos, asegurarme de que los tiene correctamente configurados, y nos vemos en un minuto. Una vez que hayas copiado todos esos, asegúrate de presionar Deploy. Una vez que golpeas Deploy, entonces puedes ver que la aplicación comienza a construir realmente o Versa comenzará a construir tu próximo proyecto en sus propios servidores y te dará un resumen de lo que está hecho. Hay una posibilidad, a veces una gran posibilidad que obtengas o te encuentres con algún error. Si lo haces, solo tienes que seguir adelante y expandir esto, copiar esos errores y alimentarlo en Cursor para asegurarte de que se actualice o haga cambios allí. Si lo has hecho bien, todo está bien, deberías tener un despliegue en vivo. Ahora, ten en cuenta, todavía no hemos conectado nuestro dominio. Otra cosa buena de Verll es que cada vez que empujas a tu sucursal principal de Github, realidad actualizará tu aplicación en vivo, así que no necesitas hacer nada más adicionalmente para hacerlo Si haces algún cambio en tu aplicación, alguna actualización de funciones y similares, y presionas a GitHub, automáticamente tu aplicación se actualizará para los usuarios. Asegúrate de que se prueben antes de enviar algo a GitHub. Mientras tanto, vayamos a dominios y agreguemos realmente dominio existente a este proyecto, trilala.com, y vamos a golpear guardar por aquí Ya tengo este dominio en otra app, solo voy a trasladar los dominios a este proyecto. Lo único que tienes que hacer desde aquí es asegurarte de ir a tu registro de dominio. Si tienes chip de nombre o Go Daddy, asegúrate de ir allí y dirígete al DNS avanzado y agrega estos valores, como lo hemos hecho para las claves de reenvío Sigue estas instrucciones en tu proveedor de dominio y luego vuelve a reunirte conmigo aquí. Ahora, asegúrate de actualizar esos ajustes tanto para la versión sin WWW como para la versión con ya hecho. Entonces puedes intentar presionar refrescar una vez que hayas hecho eso, lo has configurado correctamente. Ahí vamos. algunos problemas aquí pasando con el diseño en la página de inicio, así que los voy a alimentar a Cursor para arreglarlos. Espero que no tengas ningún problema o si lo haces, tómate tu tiempo para solucionarlos y luego volveremos a configurar webhook de Stripe correctamente para que toda la aplicación funcione correctamente Pero enhorras por hacer pública tu app. 35. Integración de la franja final: Un último paso para configurar nuestra aplicación para que esté lista para aceptar pagos, y es configurar nuestro webhook de Stripe en producción Ahora bien, si recuerdas el webhook es lo que nos permite entender si un usuario realmente ha pagado y luego darle la suscripción o darle el beneficio, el plan, etcétera Un Cursor o agente de IA, adelante y pídele que le dé instrucciones sobre cómo configurar webhook para producción para su aplicación Darte paso a paso en función de lo que necesites hacer. Para mi caso, se ha ido adelante y me dijo, necesito seguir este paso, ir a Stripe Dashboard. Aquí hay un panel de Stripe, vaya a los desarrolladores y luego presione webhooks luego desea agregar destino Una vez que agregues el destino, este es el enlace que deseas, pero lo necesitaremos en un segundo. Para mi app, solo necesito finalizar la sesión de Checkout. Voy a buscar checkout punto sesión punto Finalizado, y ya va a salir. Para tu app, esto podría ser diferente. Este es el evento que escuchará el webhook. En mi caso, cada vez que se completó con éxito una sesión de checkout, entonces queremos seguir adelante y escuchar en este punto final para eso. La URL del punto final es la que obtuviste de la aplicación, pero claro, quieres reemplazar esto con tu dominio menos trip.com barra APISIS webhook, y luego voy a presionar Crear destino asegurarme de copiar este secreto y luego volver a tu Deployment, ir a la configuración Asegúrate de seleccionar tu proyecto, ir a tu configuración, ir a variables de entorno, y luego quieres seguir adelante y agregar variable de entorno. Ahora bien, si recuerdas en tu código, debería ser así, Stripe underscore webhook underscore Asegúrate de copiar eso y luego pegar ese valor que obtuviste de Stripe. Golpea guardar y luego presionar redesplegar. Cada vez que realice cambios en las variables de su entorno, desea continuar y volver a implementarlo para que su última implementación tenga esa clave de entorno agregada Entonces en tu proyecto, puedes hacer un seguimiento de tus implementaciones, vemos que ahora se está construyendo Ahora, una vez que haces push, la única forma de saber que este webhook de Stripe funciona es seguir adelante y hacer un pago de prueba Puedes sacar tu tarjeta de crédito y usarla o puedes ir a crear un cupón aquí en Stripe, configurar un cupón con 100% de descuento y luego asegurarte de decirle a Cursor que habilite los códigos de promoción. Y una vez que haces eso, en realidad puedes simplemente enchufar tu código de cupón y luego probar que tu suscripción a la aplicación o los precios funcionan. Entonces ahora con eso fuera del camino, tenemos nuestra aplicación en funcionamiento. Puedes compartir esto con amigos. Ahora, prometo mostrarte cómo se ve la imagen OG y los metadatos que configuramos. Entonces si pegas tu enlace a tu app en digamos que me mensaje, puedes ver por aquí tenemos Tripvela raja gastos de viaje sin la molestia Así que cada vez que alguien comparte tripvela.com, lo mostrará así, que quedó genial. Podría en el futuro hacer el cambio lugar de simplemente tener el nombre por aquí, tal vez tener una descripción de lo que hace el producto. Eso termina armando nuestro producto. El siguiente paso es realmente contarle a gente sobre ello y comenzar a obtener ventas. 36. ¿Qué sigue?: Felicidades por llegar tan lejos en el curso. Quiero hablar un poco sobre lo que pasa desde aquí. ¿A dónde vamos? ¿Qué haces con tu producto y cómo te aseguras de mantenerte encaminado con tu éxito y cómo se ve el éxito de aquí en adelante? Mucha gente asume que solo porque lanzan un producto, van a conseguir que miles de usuarios lo usen de inmediato. Realidad, los números son mucho menos que eso y lleva más tiempo. Más allá de solo necesitar más pacientes con tu progreso, necesitas entender que ahora mismo durante las próximas semanas o meses, tu objetivo es obtener la mayor cantidad de comentarios posible de esos primeros 50 a 100 usuarios que puedas obtener. No te concentres en ir por los miles todavía. Habla con esos 50 a 100 usuarios, asegúrate de mejorar tu producto y escucharlos y mejorar en función los comentarios que realmente te brindan. El verdadero objetivo es compartir su producto en su versión más actual con la gente y aprovechar los comentarios para construir un producto que luego pueda escalar a miles de usuarios en el futuro. retroalimentación de usuarios reales es un gran apalancamiento y muchos fundadores ignoran esto, pero si lo aprovechas correctamente, construirás un producto para cierto segmento de la audiencia o el mercado objetivo que podrás escalar y crecer rápidamente con el tiempo. este momento, estamos haciendo algunas suposiciones en torno a nuestro producto, pero lo ponemos frente a los usuarios, en realidad aprendemos quién es nuestro cliente real y qué es lo que realmente les importa de nuestro producto. Una vez que obtengamos esas respuestas, podemos duplicar el marketing y podemos duplicar la creación de los conjuntos de características adecuados para ellos. También aprendes qué métodos de marketing funcionan mejor para ti. Es video, o es una publicación de blog, o es una asociación o tal vez es un alcance directo. Experimentando y aprendiendo qué método funciona mejor, aprenderás en qué duplicar para que cuando llegues a gastar dinero en tu marketing, no estés desperdiciando tus dólares y lo estés gastando correctamente en los canales de marketing adecuados Buscando buenas señales de tu producto como usuarios compartiendo tu producto, hablando de tu producto, respondiéndote y dando retroalimentación sobre tu producto A veces es posible que deba salirse de su propio camino para poder hablar con los clientes y obtener algunos comentarios directamente de ellos. A veces es posible que a los clientes no les importe lo suficiente como para compartir sus comentarios contigo a menos que los pidas. Así que asegúrate de llegar a ellos y preguntar por su experiencia. Algunos de estos podrían establecerse como correos electrónicos automáticos que salen de su aplicación, asegúrese de aprovechar mucho los correos electrónicos, especialmente a su base de usuarios existente. Voy a seguir compartiendo mi producto Tripvela a lo largo las diferentes comunidades de viajes así como alcance directo con el fin de conseguir los primeros cien usuarios y a partir de ahí explorar formas en las que pueda apuntar quizás a nómadas digitales que tengan seguidores en las redes sociales que tengan seguidores en las redes sociales para crear contenido para promocionarlo por Esas van a ser mis próximas semanas y meses y espero que aprovechen todas las herramientas y métodos de marketing de los que hablamos y hagan crecer su producto a más de miles de usuarios y desearle todo mejor con él. Gracias por sumarse al curso.