Criando Aplicativo + IA profissional do zero - AULA 01 🔥
摘要
TLDREn este video, aprenderás a crear un aplicativo móvil desde cero utilizando React Native y TypeScript, integrando la Inteligencia Artificial de Gemini AI para generar dietas personalizadas. El tutorial empieza con la configuración del entorno de desarrollo y la creación de una API con Node.js. A lo largo del video, se exploran conceptos como la creación de rutas, manejo de errores y pruebas de API. El objetivo principal es construir un aplicativo práctico y efectivo que pueda ser utilizado en producción. Además, se mencionan aspectos como la posibilidad de suscripciones y la personalización de la app para adaptarse a las necesidades del usuario.
心得
- 📱 Aprende a construir un aplicativo con React Native.
- 🛠️ Configura tu entorno de desarrollo con Node.js y Expo.
- 🔄 Integra la API de Gemini AI para generar dietas personalizadas.
- 💻 Utiliza Fastify para construir tu backend.
- 📊 Realiza pruebas de API con herramientas como Thunder Client.
- 📦 Aprende sobre la importancia de TypeScript en el desarrollo.
- 📝 Crea un aplicativo que permite la personalización de dietas.
- 🔍 Mejora la experiencia del usuario con características adicionales.
- 🛡️ Encuentra y soluciona errores durante el desarrollo.
- 🚀 Prepárate para lanzar tu aplicativo en producción.
时间轴
- 00:00:00 - 00:05:00
En este video, aprenderemos a construir una aplicación desde cero, utilizando inteligencia artificial con React Native. Comenzaremos desde el principio, gestionando todo el proceso y dominando las herramientas necesarias, incluyendo TypeScript, Expo Router y la IA de Gemini de Google, para crear una API que generará dietas personalizadas.
- 00:05:00 - 00:10:00
El aplicativo constará de una interfaz inicial donde el usuario podrá ingresar su nombre, peso, altura, edad y objetivos relacionados a su actividad física y sexos. Luego, al hacer clic en 'Generar dieta', la IA de Gemini generará una dieta específica basada en esa información, que podrá ser compartida o guardada.
- 00:10:00 - 00:15:00
Antes de comenzar a codificar, será importante preparar el entorno de desarrollo, asegurándonos de que tenemos installedo VS Code, NodeJS y también configurando un emulador de Android. Esto facilitará la prueba y ejecución de nuestra aplicación mientras la desarrollamos.
- 00:15:00 - 00:20:00
La siguiente etapa será crear la backend de nuestra aplicación. Usaremos Node.js para crear una API REST que permita comunicarse con la IA de Gemini y devolver resultados. Así, nuestro aplicativo podrá enviar datos y recibir una dieta generada.
- 00:20:00 - 00:25:00
Desarrollamos una estructura básica para la API, donde definiremos las rutas y cómo gestionar las peticiones. Las bibliotecas que se instalarán nos permitirán manejar las solicitudes y su respuesta de forma efectiva y escalable.
- 00:25:00 - 00:30:00
Continuamos creando archivos y carpetas organizativas para el backend, definiendo controladores y servicios que manejen la lógica de negocio. Es un enfoque limpio que ayuda a mantener el código manejable y modular.
- 00:30:00 - 00:35:00
En esta etapa, creamos las rutas que la API oirá, asegurando que puedan ser fácilmente probadas. Nos aseguramos de tener un controlador que reciba y procese las peticiones que creemos en la API.
- 00:35:00 - 00:40:00
Comenzamos a establecer un flujo de comunicación entre el backend y la API que está llamando a Google AI. Definimos qué información se debe enviar y cómo procesar esa información en el backend.
- 00:40:00 - 00:45:00
El código ahora puede recibir datos del cliente, invocar la inteligencia artificial y devolver el resultado al cliente. Al integrar Google AI, se trata de correctamente estructurar y gestionar las consultas emitidas a esta API.
- 00:45:00 - 00:54:22
Finalmente, los usuarios podrán interactuar con nuestra aplicación y, de una forma muy dinámica, recibir dietas personalizadas basadas en su información y preferencias. Así, el resultado es un sistema que integra todas las tecnologías mencionadas, permitiendo una experiencia completa desde la entrada de datos hasta la entrega de resultados.
思维导图
视频问答
Que ferramentas são necessárias para o projeto?
Você vai precisar de Node.js, VS Code, Expo e React Native.
Como integraremos Inteligência Artificial no aplicativo?
Usaremos a API do Gemini AI da Google para gerar dietas personalizadas.
Qual é o propósito do aplicativo que estamos construindo?
Criar um gerador de dietas que permite aos usuários personalizar suas refeições com base nas suas informações.
Onde posso encontrar a documentação do Expo?
A documentação do Expo pode ser encontrada no site oficial do Expo.
O que é Fastify?
Fastify é uma framework de Node.js utilizada para construir APIs de maneira eficiente.
Como posso testar a API criada?
Você pode usar ferramentas como Thunder Client para testar as rotas da API.
O que é TypeScript?
TypeScript é um superset do JavaScript que adiciona tipagens estáticas ao código.
Como o aplicativo consumirá a API?
O aplicativo fará requisições HTTP para a API usando métodos GET e POST.
Posso modificar o aplicativo para incluir funcionalidades adicionais?
Sim, o aplicativo pode ser expandido para incluir assinatura e outras funcionalidades.
O projeto é feito para iniciantes?
Sim, o tutorial é elaborado para pessoas que estão aprendendo a criar aplicativos do zero.
查看更多视频摘要
✅La hidrostática y sus aplicaciones en la vida real: ¡conoce su alcance en diferentes campos!
La bombilla de los pobres: botellas solares
O QUE FOI A SEMANA DE ARTE MODERNA DE 1922? - Aula #20
7 hooks super simples para iniciar tus anuncios
Los 5 Hooks Mejores Hooks Para Tus Anuncios De Facebook Ads
Capitulo 4. El modelo agro exportador.
- 00:00:00hoje você vai aprender e vai construir
- 00:00:02do zero aí um aplicativo usando
- 00:00:04inteligência artificial com o react
- 00:00:06Native Então a gente vai aprender desde
- 00:00:08o zero mesmo que você tá saindo do zero
- 00:00:10aprendendo quer aprender a criar
- 00:00:12aplicativos a gente vai dominar passo a
- 00:00:14passo aí como criar o seu aplicativo com
- 00:00:16react Native usando já o typescript
- 00:00:19usando o Expo router usando também
- 00:00:21Inteligência Artificial Então a gente
- 00:00:23vai utilizar o Gemini ai da Google aí
- 00:00:26para consumir né E vamos criar uma API
- 00:00:28rat que consome a no Nossa Inteligência
- 00:00:30Artificial do Gemini ai e a gente vai
- 00:00:33então criar um aplicativo de gerador de
- 00:00:35dietas que ficou sensacional e já
- 00:00:37pensando e um projeto real que daria
- 00:00:39para você modificar colocar para rodar
- 00:00:40na loja ou até colocar assinatura dentro
- 00:00:42desse app Então bora lá que vai ficar
- 00:00:45sensacional esse projeto aqui a gente
- 00:00:46vai construir desde zero passo a passo
- 00:00:49não para você só fazer junto comigo e
- 00:00:50para você aprender tudo que a gente tá
- 00:00:52fazendo aqui bora lá então primeiro
- 00:00:54antes da gente começar em código aqui
- 00:00:55pra gente conhecer a primeira coisa que
- 00:00:57a gente vai ver aqui é a o layout tá
- 00:00:59essa essa logo aqui depois eu vou deixar
- 00:01:01para vocês ou na descrição ou no link
- 00:01:02aqui embaixo tá eu vou deixar para vocês
- 00:01:04baixarem essa logo aí do nosso
- 00:01:06aplicativo Então a gente vai ter uma
- 00:01:07cara Inicial então a gente percebe aqui
- 00:01:09que eu vou ter uma tela né a nossa home
- 00:01:11duas duas de formulário então uma duas
- 00:01:13ali dois steps mas a ali quando é gerado
- 00:01:16a nossa dieta Então a gente tem a
- 00:01:17inicial pro cara clicar em gerar dieta
- 00:01:19ali por exemplo ele vai preencher os
- 00:01:21dados como nome Deixa eu dar um zoom
- 00:01:23aqui né para ficar melhor o nome o peso
- 00:01:24atual a altura a idade depois ele vai
- 00:01:26avançar para os objetivos né então qual
- 00:01:29que é o seu nível de atividade física
- 00:01:31qual que é também o seu objetivo e o seu
- 00:01:33sexo ali e quando ele clicar em gerar
- 00:01:35dieta a gente vai usar então a
- 00:01:36inteligência artificial do Gemini ai
- 00:01:39para então buscar uma e gerar uma dieta
- 00:01:41aí com base nos dados que você me mandar
- 00:01:43então a gente vai mandar para ele lá o
- 00:01:45nome o sexo objetivo tudo isso e ele vai
- 00:01:47me mandar então uma dieta com base no
- 00:01:48prompt que a gente pedir também restrito
- 00:01:50lá para ele gerar ele vai gerar dessa
- 00:01:52forma aqui a gente vai poder
- 00:01:53compartilhar com alguém mandar no
- 00:01:55WhatsApp ou salvar ou gerar uma nova
- 00:01:57então vai ficar sensacional Esse projeto
- 00:01:58aí bora começar a primeira coisa eu não
- 00:02:01vou repassar eu vou abrir aqui o meu o
- 00:02:03meu vs code tá então eu já tô com vs
- 00:02:05code aberto aqui e eu não criei o
- 00:02:07projeto ainda a gente vai criar junto
- 00:02:09Beleza deixa eu só diminuir aqui um
- 00:02:10pouquinho Então baixa o best code a
- 00:02:12gente vai usar o v code vamos usar
- 00:02:13também o Expo o node JS então se você
- 00:02:16não tem instalado vamos lá primeira
- 00:02:18coisa aqui ó abrir aqui o nosso node JS
- 00:02:20a documentação do Expo aqui do lado só
- 00:02:22pra gente ter aqui também então o node
- 00:02:23JS só você clicar nesse botãozinho aqui
- 00:02:25ó LTS dá next next então se você tá no
- 00:02:27Windows aí baixa aí o nodejs eu vou
- 00:02:30deixar na descrição também para você
- 00:02:32caso você nunca tenha criado um
- 00:02:33aplicativo com Expo então o que que você
- 00:02:35precisa baixar e o que que você precisa
- 00:02:37configurar para ter um emulador tá então
- 00:02:39vou deixar na descrição se você nunca
- 00:02:40configurou nunca criou um aplicativo com
- 00:02:42Expo você vai lá configura o seu
- 00:02:44ambiente a gente mostra lá no videozinho
- 00:02:46depois você volta aqui pra aula sem
- 00:02:47nenhum problema só pra gente não enrolar
- 00:02:49e deixar aqui muito grande né esse vídeo
- 00:02:50aqui então bora lá instalado aí fez isso
- 00:02:53aí também tem o seu emulador deixa eu
- 00:02:55até abrir o meu emulador também que eu
- 00:02:56não abri você pode rodar no seu emulador
- 00:02:58pode rodar direto né se você tá usando
- 00:02:59usando Expo como a gente vai usar direto
- 00:03:01no seu celular também sem nenhum
- 00:03:03problema deixa eu abrir que eu vou usar
- 00:03:04no emulador para mostrar para vocês aqui
- 00:03:06né Então deixa eu abrir aqui o meu Pixel
- 00:03:083 que eu tô utilizando então tô
- 00:03:09utilizando o Pixel 3 tô utilizando o
- 00:03:11Android 11r tá então se você for criar
- 00:03:14um emulador novo eu tô usando esse aqui
- 00:03:15ó deixa ele só abrir aqui que eu vou
- 00:03:17mostrar para vocês também deixa eu
- 00:03:18fechar aqui que é a demonstração vou
- 00:03:21abrir aqui novamente e aí é só você vir
- 00:03:22aqui ó mais eu tô usando aqui ó o Pixel
- 00:03:253 tá cadê o Pixel 3 aqui ó com o símbolo
- 00:03:28do Play Store se você D next aqui ó eu
- 00:03:30tô usando também a api do Android R que
- 00:03:33é essa api 30 que tem esse Google Play
- 00:03:36do lado aqui tá então ó Google Play
- 00:03:38Então é só criar um emulador aí se você
- 00:03:39quiser um igual ao meu tá então tô
- 00:03:41usando esse aqui Maravilha e já tá aqui
- 00:03:43show de bola Vamos criar o nosso projeto
- 00:03:45então primeira coisa antes da gente
- 00:03:46criar o nosso aplicativo a gente precisa
- 00:03:49ter uma API para poder consumir essa api
- 00:03:52dentro do aplicativo que essa api que é
- 00:03:55responsável por comunicar com a nossa
- 00:03:57Inteligência Artificial que é a do ai
- 00:04:00então a gente vai ter um backend ou seja
- 00:04:01um serviço esse backend vai ter as rotas
- 00:04:04por exemplo para gerar uma dieta e a
- 00:04:05gente vai consumir esse backend dentro
- 00:04:08do nosso aplicativo então o aplicativo
- 00:04:10conversa com o nosso backend o backend
- 00:04:12conversa com a ia a ia devolve e a gente
- 00:04:14manda de volta pro aplicativo
- 00:04:16basicamente O fluxo vai ser esse Então
- 00:04:18antes da gente começar a parte visual do
- 00:04:20aplicativo a gente precisa desse backend
- 00:04:22da do nosso serviço para poder consumir
- 00:04:24vamos lá então para isso você já tem o
- 00:04:26node JS instalado vamos criar o projeto
- 00:04:28vou abrir minha pasta tá então Então
- 00:04:29minha pasta eu quero criar ela aqui eu
- 00:04:31vou criar aqui uma nova pastinha aqui
- 00:04:33dentro eu vou chamar aqui de backend tá
- 00:04:35vou abrir essa pasta e vou abrir ela no
- 00:04:37cmd Então deixa eu abrir o CMD você pode
- 00:04:39fazer esse hazin se você tá no Windows
- 00:04:4110 ou Windows 11 Ó você pode clicar aqui
- 00:04:43em cima dentro da pasta digita CMD e Dá
- 00:04:45um enter que ele já vai abrir ó o CMD
- 00:04:47dentro dessa pasta aqui beleza então
- 00:04:49cria uma pasta navega dentro do CMD até
- 00:04:52essa pasta e aí a gente roda npm init
- 00:04:55menos y aqui para ele criar a estrutura
- 00:04:57do node JS pra gente criar a nossa API
- 00:05:00com o node JS Então feito isso Ó eu vou
- 00:05:03até dar um code espaço ponto ou você
- 00:05:05pode deixa eu até para ficar melhor para
- 00:05:06vocês ó vem no seu vs
- 00:05:09code vai aqui em file Open folder né
- 00:05:12para abrir uma pastinha backend
- 00:05:14selecionar pasta então a gente abre aí e
- 00:05:16já tem nosso arquivo package.js Deixa eu
- 00:05:19só dar um Yes aqui e maravilha então o
- 00:05:21primeiro passo que a gente vai fazer é a
- 00:05:23gente vai utilizar algumas bibliotecas
- 00:05:25para poder criar aí a nossa api tá então
- 00:05:28a gente vai utilizar aqui ó deixa eu
- 00:05:29tirar para não atrapalhar vou voltar
- 00:05:30aqui no meu CMD e a gente vai instalar
- 00:05:32algumas bibliotecas usando aí o npm para
- 00:05:35poder criar a nossa api então npm
- 00:05:38install eu vou instalar aqui o nosso
- 00:05:40corse vou instalar também o fastify e
- 00:05:44vou instalar o tsx e o demp também tá
- 00:05:48vou instalar essas bibliotecas aí
- 00:05:50maravilha deixa ele instalar aí vou
- 00:05:51instalar também um npm install traç
- 00:05:54traço save traço Dev e a gente vai
- 00:05:57instalar aqui o @types barc e eu vou
- 00:06:00instalar também o typescript como
- 00:06:02dependência aqui de desenvolvimento
- 00:06:03Então se a gente olhar dentro do package
- 00:06:05Jason a gente já tem a dependência aqui
- 00:06:06do course d fastify tsx o nosso Type as
- 00:06:11tipagens desse cor o próprio typescript
- 00:06:14e também falta né a gente instalar já
- 00:06:16que a gente tá usando fastify a gente
- 00:06:18pode instalar também npm Opa npm install
- 00:06:21@
- 00:06:22fastify barra cores aqui tá Já já eu vou
- 00:06:26te mostrar e a gente vai entender o que
- 00:06:27que é cada coisa que a gente instala
- 00:06:29aqui tá Fica tranquilo então aqui a
- 00:06:31gente tá instalando as dependências para
- 00:06:33poder rodar o nosso projeto agora vamos
- 00:06:35criar a estrutura padrão dessa nossa api
- 00:06:37então aqui dentro eu vou criar uma
- 00:06:38pastinha chamada src dentro dessa
- 00:06:41pastinha aqui eu vou criar aqui o nosso
- 00:06:43arquivo New file vou chamar aqui de
- 00:06:46server.ts e vou criar um arquivo também
- 00:06:48chamado New file h. TS Então dentro do
- 00:06:51nosso server aqui vai ser o arquivo que
- 00:06:53vai rodar quando a gente rodar essa
- 00:06:55nossa api então aqui dentro eu vou
- 00:06:56importar o fastify colocar com f Mac
- 00:06:59aqui tá fash fy Vou importar também o
- 00:07:02course cor from vamos usar até o nosso
- 00:07:05@f fy barc Vou importar Nossa D
- 00:07:09DV
- 00:07:11pr. tá que a gente Opa que a gente vai
- 00:07:13ter variáveis ambiente já já vou
- 00:07:16importar aqui também e vou criar nosso
- 00:07:18app igual a fastify abre o parênteses
- 00:07:21vou dar aqui um logger Opa logger como
- 00:07:24true fastify é a biblioteca que a gente
- 00:07:26vai utilizar para ter o roteamento
- 00:07:28basicamente pra gente construir né aí
- 00:07:30uma API rest Então a gente vai usar o
- 00:07:32fast fy então aqui eu tô inicializando
- 00:07:34ele e pegando através dessa variável app
- 00:07:36E aí então eu posso utilizar vou chamar
- 00:07:38aqui o d. config pra gente inicializar
- 00:07:41aqui se a gente tiver alguma variável
- 00:07:43ambiente
- 00:07:44app.set error handler então caso a gente
- 00:07:47tenha alguma algum erro na nossa api eu
- 00:07:49recebo uma função anônima aqui e a gente
- 00:07:51vai fazer o quê mostrar esse erro né
- 00:07:53então aqui eu posso receber o error e
- 00:07:55vou pegar aqui vírgula recebo também o
- 00:07:57request da requisição se a gente quiser
- 00:07:59acessar e o reply que é aqui vai
- 00:08:01devolver pro front end quem vai devolver
- 00:08:03para quem tá chamando essa rota que deu
- 00:08:05erro e aí então a gente pode fazer o quê
- 00:08:06Vou dar um reply pon code 400 por
- 00:08:09exemplo vou vou só tratar ele aqui ponto
- 00:08:11send e eu vou mandar em Jason e uma
- 00:08:14propriedade chamada Message com o erro
- 00:08:17da mensagem então error pon message tá
- 00:08:20então caso dê alguma requisição errada o
- 00:08:22cara T fazer alguma requisição de falha
- 00:08:24a gente vai devolver esse status aqui de
- 00:08:26400 e vai devolver a mensagem de erro
- 00:08:28pra gente pegar né E pra gente ver esse
- 00:08:29erro aí beleza agora depois disso a
- 00:08:32gente precisa inicializar aí o nosso
- 00:08:34servidor então conch start igual a a
- 00:08:38precisamos usar como uma função
- 00:08:40assíncrona aqui dentro então a gente
- 00:08:42chama né aqui fora a nossa função start
- 00:08:44e dentro dela a gente roda qual que é a
- 00:08:47porta que a gente quer rodar as rotas
- 00:08:49que a gente vai ter na pi então a gente
- 00:08:52criou um
- 00:08:58arquivozilla ftif e eu vou trazer aqui
- 00:09:00vou dar até um enter o fastify instance
- 00:09:03vou trazer também O fastify fastify
- 00:09:06plugin options vou trazer esse cara
- 00:09:08também e vou trazer também o festify
- 00:09:12request e o festify reply Beleza então
- 00:09:17agora a gente pode criar nossa rota
- 00:09:18então Export assn function
- 00:09:22H Maravilha e aí aqui dentro então a
- 00:09:25gente vai ter as nossas rotas Então essa
- 00:09:27função aqui a gente vai chamar lá no
- 00:09:29nosso arquivo server e aqui então a
- 00:09:31gente vai receber dois parâmetros que é
- 00:09:33o fastify que eu vou chamar que ele é do
- 00:09:35tipo fastify instance que é o próprio
- 00:09:37fastify pra gente ter as rotas e vírgula
- 00:09:39a gente vai ter também o options que
- 00:09:41caso a gente queira utilizar que é do
- 00:09:43tipo fastify plugin options Beleza então
- 00:09:45a gente vai receber esses dois caras e
- 00:09:47agora como a gente tá recebendo a
- 00:09:48Instância ou seja nosso servidor fastify
- 00:09:50aqui eu quero acessar ele aqui então
- 00:09:52fastfire ffy ponto e aí eu posso criar
- 00:09:55rota por exemplo do tipo get eu quero
- 00:09:57que seja barra teste por exemplo pra
- 00:09:59gente fazer um teste aqui ó abro uma
- 00:10:01função anônima aqui dentro a gente
- 00:10:03recebe dois caras que é o request que é
- 00:10:05a requisição dois pontos fastify request
- 00:10:08que é o tipo dela tá pra gente poder ter
- 00:10:10acesso a tudo então se eu acessar o
- 00:10:12request ponto Olha lá ele já sabe tudo
- 00:10:14que é e também a gente tem um outro né
- 00:10:16vírgula que é o reply que a gente chama
- 00:10:18né que é onde a gente pode devolver algo
- 00:10:20pro front end para quem tá consumindo
- 00:10:22essa api dois pontos que ela é do tipo
- 00:10:24fastify reply que a gente importou aqui
- 00:10:26também e agora dentro da Rota a gente
- 00:10:28pode fazer o que eu quiser quiser vou
- 00:10:29dar aqui um console pon log rota chamada
- 00:10:32só pra gente ver e eu vou dar aqui o
- 00:10:34nosso reply por exemplo é ponto send tá
- 00:10:38e eu vou dar aqui um ok true né só pra
- 00:10:41gente ver que a rota tá funcionando
- 00:10:43salvei aqui então a gente criou um
- 00:10:45arquivo de HS que quem usar ele tem que
- 00:10:47me fornecer o flashfire instance e esse
- 00:10:49options aqui E aí aqui dentro a gente
- 00:10:51tem a nossa rota do tipo get que é barra
- 00:10:53teste né e agora lá no nosso arquivo
- 00:10:55server a gente pode então usar ela aqui
- 00:10:57dentro da função de startar o servidor
- 00:10:59então eu vou importar ela aqui ó ponto
- 00:11:03barra o routs e a gente vai trazer ó
- 00:11:06nossa função zinha de houts Então como a
- 00:11:08gente deu Export assn function sal o
- 00:11:11arquivo aí né a gente vai importar
- 00:11:13dentro de Chaves tá então agora aqui
- 00:11:15dentro a gente vai chamar ele para ser
- 00:11:17executado Então vou carregar as minhas
- 00:11:19rotas então app lembra que o app é o
- 00:11:21nosso ffy ó app a Gente Tá acessando o
- 00:11:23fash fy então app. register eu vou
- 00:11:27registrar aqui o corse porque é que eu
- 00:11:28quero deixar já liberado né o URL para
- 00:11:31qualquer um que conseguir de qualquer IP
- 00:11:33fazer requisição dentro dessa nossa pia
- 00:11:35eu não quero limitar uma url ou algum IP
- 00:11:37tá vou deixar liberado aqui então dessa
- 00:11:39forma a gente deixa liberado todo mundo
- 00:11:41conseguir e também vou registrar o nosso
- 00:11:42app. register aqui a nossas rotas que a
- 00:11:46gente importou aqui ó houts então eu
- 00:11:48passo aqui o nosso houts Então dessa
- 00:11:49forma ó a gente já tá registrando cor
- 00:11:52registrando as rotas e agora é só subir
- 00:11:54o servidor na porta que eu desejo Então
- 00:11:56como ele é assíncrono eu vou abrir aqui
- 00:11:58um tricat só só pra gente garantir
- 00:12:00porque caso Crash né o nosso servidor a
- 00:12:02gente pode ver o erro então caso caia no
- 00:12:03no catch vou dar um error aqui e vou dar
- 00:12:05aqui um console pon log vou dar aqui um
- 00:12:07erro aqui tá pra gente ver tá E também
- 00:12:10aqui em cima no try a gente vai então
- 00:12:11tentar inicializar o nosso servidor
- 00:12:14então await para esperar o nosso app.
- 00:12:17Listen e aqui eu passo qual que é a
- 00:12:19porta que eu quero eu vou passar aqui
- 00:12:20dentro de Chaves a nossa port 3 3 33
- 00:12:24vírgula e eu vou passar aqui também o
- 00:12:26host dois pontos eu vou passar aqui
- 00:12:28dentro de as
- 00:12:290.0.0 p0 tá então a gente vai passar
- 00:12:32dessa forma aqui que vai ser o nosso
- 00:12:34local roster que ele vai ser Por
- 00:12:35enquanto né nossa máquina tá depois
- 00:12:37disso eu vou colocar até um console pon
- 00:12:39log aqui ó só para vocês terem tá
- 00:12:41colocar aqui uma asinhas deitadas tá é
- 00:12:43vou colocar servidor rodando no http
- 00:12:47dois pontos barra barra local host dois
- 00:12:50pontos e aí a porta que a gente colocou
- 00:12:51Vou colocar até a variável aqui ó ou vou
- 00:12:53colocar direto ó 3 3 3 3 beleza salvamos
- 00:12:56aqui e vamos testar então a gente criou
- 00:12:58ó a nosso arquivo de server que é o
- 00:13:00arquivo que a gente vai rodar quando a
- 00:13:02gente chamar Nossa aplicação esse cara
- 00:13:04vai registrar o c vai registrar nosso
- 00:13:06arquivo de HS que por enquanto a gente
- 00:13:07só tem uma rota de teste Maravilha e
- 00:13:09também aqui no nosso arquivo package a
- 00:13:11gente tem um carinha chamado scripts e
- 00:13:14dentro de scripts a gente pode ter
- 00:13:15script de teste é de Build de linting
- 00:13:18então no nosso caso a gente vai ter por
- 00:13:19enquanto um script que é para rodar a
- 00:13:21aplicação Então vou chamar ela aqui de
- 00:13:23Dev tá E vou tirar aqui ó vamos criar o
- 00:13:25nosso script Então como é que a gente
- 00:13:27pode rodar como a gente instalou aqui
- 00:13:29dentro uma dependência né uma biblioteca
- 00:13:31chamada tsx que basicamente é pra gente
- 00:13:34rodar aí a nossa aplicação né como o
- 00:13:36typescript ele é feito pra gente rodar
- 00:13:37em desenvolvimento quando a gente sobe
- 00:13:39pra produção a gente faz o build né ele
- 00:13:41torna um JavaScript Então nesse caso eu
- 00:13:43quero rodar a nossa aplicação como a
- 00:13:45gente tá usando o typescript eu vou usar
- 00:13:47essa biblioteca auxiliar aqui o tsx para
- 00:13:49rodar a nossa aplicação então para isso
- 00:13:51ó deixa eu Minimizar aqui para não
- 00:13:52atrapalhar a gente vai usar um comando
- 00:13:54aqui com o nosso tsx então tsx opa tsx
- 00:14:00watch src que é onde a gente criou a
- 00:14:02gente criou uma pastinha chamada src
- 00:14:04então src barra e dentro a gente tem a
- 00:14:06nossa nosso arquivo então bar server.ts
- 00:14:10beleza vamos salvar pra gente testar
- 00:14:11isso aqui então salvei vamos voltar no
- 00:14:14nosso CMD que tá a pasta aqui do nosso
- 00:14:16projeto ó tô na pasta backend então tô
- 00:14:18dentro da pasta do nosso projeto e eu
- 00:14:19vou rodar então npm Run e qual que é o
- 00:14:22nome do script chamei de Dev então npm
- 00:14:24Run espaço Dev vou dar um enter aqui e
- 00:14:27olha lá que legal ele mostra aqui tá
- 00:14:29rodando ele fala olha servidor rodando
- 00:14:30no http dois pontos local host 3000
- 00:14:33vamos testar Então vou até copiar aqui
- 00:14:36vamos lá local host 3333 e eu dei o nome
- 00:14:40da rota de barra teste né vou dar um
- 00:14:42enter aqui ó e olha que sensacional ele
- 00:14:44já devolveu pra gente um ok true ou seja
- 00:14:47tá funcionando e também quando alguém
- 00:14:49acessar essa rota a gente colocou aqui
- 00:14:52que ele tem que mandar um console né
- 00:14:53então se a gente olhar aqui cadê o meu
- 00:14:55console aqui ó rota chamada tá então já
- 00:14:58tá mostrando aqui então então a gente já
- 00:14:59criou nossa primeira rota da api que a
- 00:15:02gente desenvolveu aqui legal qual que é
- 00:15:04o próximo passo Então se a gente olhar
- 00:15:05aqui eu até deixei um guzinho né então a
- 00:15:07gente vai criar nossa nosso backend com
- 00:15:09nodejs agora a gente precisa configurar
- 00:15:11a api da Ia do jemne ai né então lá do
- 00:15:14Google né que é é a inteligência
- 00:15:16artificial do Google para a gente
- 00:15:18configurar ela para depois conseguir
- 00:15:19utilizar no aplicativo senão a gente não
- 00:15:21vai conseguir ter as funcionalidades do
- 00:15:23aplicativo tá então criamos a payr agora
- 00:15:27vamos configurar a nossa chave lá da api
- 00:15:29Então vamos lá vou abrir aqui maravilha
- 00:15:32eu vou vi fazer o login né fazer um
- 00:15:34login com ela acho que com essa aqui eu
- 00:15:36nunca criei né a gente cria do zero show
- 00:15:37de bola agora que eu loguei eu vou
- 00:15:39clicar aqui ó get api Key do Google ai
- 00:15:42Studio tá eu acho que eu não tenho Deixa
- 00:15:44eu ver se eu já tenho aqui ah eu criei
- 00:15:45Ah eu criei hoje né então não usei ainda
- 00:15:47então você pode clicar aqui ó criar
- 00:15:49chave de api clicou aqui maravilha se
- 00:15:51você já tiver algum projeto é que você
- 00:15:54já usou do Google Cloud só você clicar e
- 00:15:55selecionar aqui senão ele vai ter um
- 00:15:57botãozinho bem aqui em cima assim ó mais
- 00:15:58ou menos aqui ó eh gerar chave api você
- 00:16:01só clica ali se você nunca clicou clica
- 00:16:03ali ele vai gerar e vai te dar a sua
- 00:16:04chave tá E aí para você pegar deixa eu
- 00:16:06ver se eu consigo copiar ó vou copiar
- 00:16:08minha chave aqui Copie a sua chave e
- 00:16:10agora volta lá pro nosso projeto a gente
- 00:16:12vai vir aqui no nosso projeto Vamos
- 00:16:13criar um arquiv inho aqui ó e na rota
- 00:16:16raiz do projeto aqui ó fora New file vou
- 00:16:19chamar aqui de ponto env tá e eu vou
- 00:16:21chamar aqui ele tá a gente pode dar um
- 00:16:23nome aqui que vai ser a nossa chave
- 00:16:24então api underline Key igual e eu vou
- 00:16:27dar aqui minha api ke não não clicou não
- 00:16:29gerou ela né então acho que eu vou ter
- 00:16:31que gerar outra vou gerar outra aqui
- 00:16:32deixa eu gerar outra chave aqui clicar
- 00:16:34aqui ó seleciona gerar
- 00:16:37Chave Vou gerar uma nova aqui que é mais
- 00:16:39fácil agora sim copiar aqui
- 00:16:42beleza vou colocar aqui minha chave
- 00:16:45Agora sim salvei aqui então vou até
- 00:16:48colocar um hashtag aqui ó api gemine ai
- 00:16:51tá colocar aqui ou do Google Tanto faz
- 00:16:53você pode colocar aí então aqui vai ser
- 00:16:55a nossa chave você tem a chave de vocês
- 00:16:56aí então usa a sua chave Aí salvei agora
- 00:16:58agora e agora a gente pode começar a
- 00:17:01criar aí a nossa rota então a gente já
- 00:17:03tem a nossa rota de teste deixa ela aqui
- 00:17:04pra gente poder testar quando quiser
- 00:17:06vamos criar mais uma então claro que a
- 00:17:08gente não vai ficar criando as nossas
- 00:17:09rotas todas elas aqui no no mesmo
- 00:17:11arquivo vai ficar um arquivo gigante se
- 00:17:12a gente tiver mais rotas nessa api então
- 00:17:14com isso a gente pode né separar um
- 00:17:16pouquinho a arquitetura do nosso projeto
- 00:17:18em controllers e Services então quando a
- 00:17:21gente faz uma requisição eu posso passar
- 00:17:23pro nosso Controller Controller recebe
- 00:17:25se a gente tem alguns dados por exemplo
- 00:17:26que a gente vai ter é que o usuário vai
- 00:17:28me mandar o nome o peso a gente recebe
- 00:17:31esses dados no Controller o Controller
- 00:17:33chama pro nosso service e o service é
- 00:17:35quem vai comunicar com o banco de dados
- 00:17:37ou comunicar com a nossa api do Gemini
- 00:17:39né ir lá na nossa api do Gemini pegar os
- 00:17:42dados lá e devolver pro nosso contrôler
- 00:17:44e o Controller devolve pro usuário né ou
- 00:17:46seja recebe aqui no aplicativo de volta
- 00:17:48então a gente pode dar uma separada para
- 00:17:49ficar bem legal vamos fazer isso Então
- 00:17:51olha só que fácil da gente fazer isso eu
- 00:17:53vou Minimizar aqui para não ficar
- 00:17:54aparecendo minha cara feia aqui né então
- 00:17:56a gente pode criar aqui dentro do Sr uma
- 00:17:59nova pastinha chamada controllers
- 00:18:01colocar no plural porque pode ter mais
- 00:18:03depois você pode evoluir esse projeto e
- 00:18:05vou criar uma pastinha também aqui
- 00:18:06dentro do src Ó dentro do src chamada
- 00:18:09Services Então dentro do Controller vou
- 00:18:12criar aqui um New file vou chamar aqui
- 00:18:13de Create vou chamar de
- 00:18:17Nutrition controller. TS e dentro do
- 00:18:20Service eu vou criar um New file chamada
- 00:18:22Create
- 00:18:24Nutrition service.ts poderia ser Create
- 00:18:27apenas create tamb Create service ou
- 00:18:29Create Controller não tem problema tá o
- 00:18:31nome aqui fica tranquilo aí no seu nome
- 00:18:33que você quer dar e agora então aqui no
- 00:18:34nosso Controller Import from festify o
- 00:18:39festify a gente recebe o festify request
- 00:18:41pra gente tipar Opa
- 00:18:43request e o
- 00:18:45festify reply Tá e agora então a gente
- 00:18:49pode criar aqui a nossa Class Create vou
- 00:18:52até copiar aqui ó vou dar aqui um rename
- 00:18:54que o nome ficou grande né e eu vou
- 00:18:55colar aqui ó tá então esse é o nome da
- 00:18:57nossa classe dentro da classe Então a
- 00:18:59gente vai ter um método assn vou chamar
- 00:19:01de handle tá E esse método vai receber o
- 00:19:05request da requisição que vai ser do
- 00:19:07tipo dois pontos fastify request que a
- 00:19:09gente importou aqui em cima e vírgula o
- 00:19:12reply que é para devolver pro front end
- 00:19:14né que a gente tem o tipagem de festify
- 00:19:17reply Beleza então a gente recebe quem
- 00:19:19usar essa classe vai chamar esse método
- 00:19:21e vai passar essas duas propriedades É
- 00:19:23obrigatório o request e o reply e agora
- 00:19:26a gente pode acessar então aqui dentro
- 00:19:28eu posso por exemplo colocar aqui um
- 00:19:30console pon log só pra gente testar rota
- 00:19:33foi chamada colocar aqui beleza e aqui
- 00:19:36dentro a gente pode por enquanto só pra
- 00:19:39gente ver se está sendo chamado eu vou
- 00:19:40dar aqui um reply pon send vou dar aqui
- 00:19:44abro Chaves message rota foi
- 00:19:49chamada beleza e eu vou salvar e claro a
- 00:19:52gente precisa exportar o arquivo para
- 00:19:54outro arquivo conseguir acessar então
- 00:19:55Export abre e fecha os Chaves Create a
- 00:19:58aqui chama o nome da nossa classe
- 00:20:00salvamos aqui agora então a gente criou
- 00:20:01o nosso Controller vamos chamar ele lá
- 00:20:03então lá no Nossa arquivo de HS aqui sim
- 00:20:06a gente vai chamar Então a nossa rota
- 00:20:07para chamar o Controller Então vamos
- 00:20:09importar o arquivo from Opa from aqui
- 00:20:13pon bar controllers bar Create Nutrition
- 00:20:16Controller vamos trazer aqui o nosso
- 00:20:18arquivo ó maravilha como a gente deu
- 00:20:20apenas ó um exporte dentro de Chaves a
- 00:20:23gente importa dentro de Chaves Então
- 00:20:26temos a nossa primeira rota deixa ela
- 00:20:27ali no cantinho dela e vamos criar outra
- 00:20:29né então Fast fy pget por enquanto tá só
- 00:20:32pra gente ver aqui get que vai ser do
- 00:20:34tipo tá a gente pode colocar aqui qual
- 00:20:36que é o nome dela Vamos colocar aqui
- 00:20:38barra Create show de bola e aí vírgula
- 00:20:42assing abre e fecha uma função anônima
- 00:20:45dentro dessa função anônima eu vou
- 00:20:46retornar uma New Create Nutrition
- 00:20:50Controller abre e fecha o chave então tô
- 00:20:52instanciando a nossa classe de Create
- 00:20:54Nutrition Controller ponto que eu quero
- 00:20:56chamar aquele nosso metodo Zinho chamado
- 00:20:58handle né então dentro do handle Olha só
- 00:21:01preciso passar o request e o reply E
- 00:21:03como eu estou dentro da Rota eu tenho
- 00:21:04acesso a esses caras olha na nossa rota
- 00:21:06de cima eu não tenho acesso ao request e
- 00:21:08o reply então aqui também aqui eu também
- 00:21:10tenho acesso vou até copiar aqui esses
- 00:21:12dois ó e vou colocar aqui ó dentro do
- 00:21:13assn Então a gente tem acesso ao request
- 00:21:15e o reply então só vou repassar esse
- 00:21:17nosso cara pra nossa classe e lá a
- 00:21:19classe vai utilizar Então vou passar
- 00:21:20aqui ó request para ele e vou passar
- 00:21:22aqui também o reply para essa nossa
- 00:21:24classe Então a gente tem uma rota do
- 00:21:26tipo get que é barra Create beleza
- 00:21:28beleza essa rota então chama a nossa
- 00:21:31classe e recebe e passa pra classe o
- 00:21:33request e o reply lá no nosso Controller
- 00:21:36a gente recebe então o request e o reply
- 00:21:38o request é pra gente trabalhar na
- 00:21:39requisição então quando a gente for
- 00:21:41enviar os dados né o nome o sexo e por
- 00:21:44aí vai a gente recebe através da
- 00:21:46requisição do request então a gente
- 00:21:48ainda não tá usando porque por enquanto
- 00:21:49a gente não tá recebendo ainda tá e
- 00:21:52depois o reply é para devolver né o
- 00:21:54reply de devolver algo por exemplo pro
- 00:21:56front end então reply pon send e eu vou
- 00:21:58revolver uma mensagem então vamos testar
- 00:22:01isso aqui quando a gente tá utilizando o
- 00:22:04tsx que é essa
- 00:22:07biblioteques que você altera o seu
- 00:22:09arquivo então se eu salvar aqui ele dá
- 00:22:11um Reload Ó presta atenção aqui ó salvei
- 00:22:13o arquivo ó ele dá um Reload no nosso
- 00:22:15servidor então a gente não precisa ficar
- 00:22:17parando de rodar roda de novo então
- 00:22:19salvou o arquivo podemos lá testar de
- 00:22:20novo vamos lá agora a gente chamou a
- 00:22:22rota de barra Create vou dar um enter
- 00:22:24aqui ó olha que sensacional né então já
- 00:22:26tá funcionando o fluxo com Controller
- 00:22:28então chama a rota a rota recebe no
- 00:22:30nosso arquivo houts e o o houts chama a
- 00:22:33nossa classe Controller o Controller a
- 00:22:35gente por enquanto recebe aqui e devolve
- 00:22:37pro usuário só que agora aqui dentro do
- 00:22:39Controller a gente pode chamar o serviço
- 00:22:41e o serviço que vai ficar responsável
- 00:22:43pela lógica ou seja comunicar com Gemini
- 00:22:45api Beleza então vamos lá vamos agora
- 00:22:48passar a responsabilidade pro nosso caro
- 00:22:50serviço então vamos aqui no serviço e
- 00:22:51vamos criar a nossa classe de serviço
- 00:22:53então aqui é bem tranquilo né então aqui
- 00:22:55a gente vai fazer o quê Vamos criar a
- 00:22:57nossa Class vou até renomear aqui né
- 00:22:59para nós escrever errado aqui o negócio
- 00:23:00né então Class vamos dar o nome aqui ó
- 00:23:03Create Nutrition service abre e fecha os
- 00:23:05Chaves assim vamos dar o nome do método
- 00:23:08pode ser o nome que a gente quiser tá
- 00:23:09Create vamos dar aqui o nome de Execute
- 00:23:11por exemplo é um nome comum aí da gente
- 00:23:13criar nessa classe aqui dentro a gente
- 00:23:14vai receber os dados como nome todos os
- 00:23:16dados e comunicar com o banco por
- 00:23:18enquanto eu vou dar aqui um console P
- 00:23:19log teste tá e eu também apenas vou
- 00:23:23devolver esse cara então vou retornar
- 00:23:25para quem tiver utilizando essa classe
- 00:23:27Vou retornar por exemplo a nossa message
- 00:23:30funcionou o service tô fazendo bem
- 00:23:33devagar só pra gente entender Opa
- 00:23:35service aí beleza agora sim e também
- 00:23:38vamos exportar o arquivo então Export
- 00:23:40chamar aqui o nosso Create Nutrition
- 00:23:43service tá então a gente tem uma classe
- 00:23:45que chama esse método que a gente tem
- 00:23:47chamado Execute aqui por enquanto chama
- 00:23:49um console e devolve né essa mensagem aí
- 00:23:51pro front end para quem tiver usando ele
- 00:23:53salvamos aqui agora lá no nosso
- 00:23:55Controller agora a gente vai utilizar
- 00:23:56ele então Controller que vai ser
- 00:23:58responsável por chamar esse nosso
- 00:24:00serviço ponto barra Opa ponto pon barra
- 00:24:03acessamos o nosso Services barra
- 00:24:06Controller service lembra de salvar o
- 00:24:08arquivo aqui importamos ele aqui Show de
- 00:24:11Bola Deixa eu até aumentar aqui ó
- 00:24:13Maravilha e agora antes da gente dar o
- 00:24:15send aqui para devolver pro usuário a
- 00:24:17gente vai fazer o quê chamar o serviço
- 00:24:19então vou dar aqui ó conche vou chamar
- 00:24:22aqui de Create n vou chamar só de Create
- 00:24:24Create igual a new vamos instanciar
- 00:24:27Nossa classe do serviço instanciamos ela
- 00:24:29e agora vamos chamar ela então conch se
- 00:24:31a gente olhar aqui ó ela é assíncrona
- 00:24:33então conch vou chamar aqui de Nutrition
- 00:24:36igual a wait Create que é o nome que a
- 00:24:39gente deu pode ser até Create Nutrition
- 00:24:42né Nutrition aqui ó para ficar
- 00:24:44melhorzinho aí ponto Execute e a gente
- 00:24:46chama o nosso método então a gente
- 00:24:48quando alguém chamar o Controller o
- 00:24:50Controller recebe aqui o requisição e o
- 00:24:52reply a gente instancia a nossa o nosso
- 00:24:55serviço e o e executa né o m Execute
- 00:24:59dentro ó esse método aqui o método vai
- 00:25:01comunicar com api comunicar com o banco
- 00:25:03de dados se a gente tivesse e vai
- 00:25:04devolver aqui para quem utilizar essa
- 00:25:06classe uma mensagem então a gente recebe
- 00:25:08essa mensagem através dessa variável
- 00:25:10aqui então depois que ele fez tudo que
- 00:25:12ele precisava fazer recebe aqui nessa
- 00:25:13variável e a gente devolve pro usuário
- 00:25:15então reply p send Nutrition então a
- 00:25:17gente devolve o retorno que você me
- 00:25:19mandou do serviço lá pro front end tá
- 00:25:22vamos salvar o nosso fluxo salvou tudo
- 00:25:24aqui voltou minha cara aqui e vamos
- 00:25:26testar de novo vou dar aqui ó deixa eu
- 00:25:28abrir aqui o nosso Create vou dar um
- 00:25:30enter aqui e olha que legal funcionou o
- 00:25:32service então agora a gente chama a rota
- 00:25:34a rota chama o nosso Controller
- 00:25:36repassando o request e o nosso reply o
- 00:25:39request a gente recebe vamos já já pegar
- 00:25:41os dados dele chama o serviço o serviço
- 00:25:43que comunica com o banco de dados que
- 00:25:45vai comunicar com a nossa api e depois
- 00:25:46que ele fazer isso ele devolve pro
- 00:25:48Controller e o Controller manda pro
- 00:25:49frontend ou pro api ou para um né que
- 00:25:52seja e um site ou um sistema web que
- 00:25:54você tiver consumindo essa api então a
- 00:25:56gente recebe o Jason aqui e aí a gente
- 00:25:58pode utilizar no caso é só uma mensagem
- 00:26:00vamos agora integrar com o nosso Gemini
- 00:26:01aqui então a gente táa fazendo fluxo um
- 00:26:03pouquinho mais devagar para não ficar
- 00:26:05com dúvida Beleza então agora vamos lá
- 00:26:07então quando a gente vai testar rotas e
- 00:26:09requisições aqui dentro do navegador ual
- 00:26:11a gente tá testando Eu só consigo testar
- 00:26:13eh rotas do tipo get que é do tipo de
- 00:26:16buscar dados e listar informações então
- 00:26:18a gente consegue do tipo get quando a
- 00:26:20gente mudar agora a nossa rota a gente
- 00:26:21vai ter uma rota do tipo post que é para
- 00:26:24cadastrar algo então quero cadastrar uma
- 00:26:26informação então quero receber do Us
- 00:26:28usário é o nome e os dados dele para
- 00:26:30poder gerar na AP e devolver pro usuário
- 00:26:33então a gente não consegue quando a
- 00:26:34gente vira aqui ó Eu quero mudar Nossa
- 00:26:36rota que é do tipo get para do tipo post
- 00:26:38Então a gente vai ter um verbo http
- 00:26:40agora do tipo post que é para cadastrar
- 00:26:42informações Tá e agora eu não consigo
- 00:26:44mais usar ela dentro do navegador então
- 00:26:47se eu testar de novo ó provavelmente vai
- 00:26:48dar erro ou ó já faleu aqui que não
- 00:26:50consegue tá para não ficar mais fácil
- 00:26:51para vocês a gente pode utilizar uma
- 00:26:53extensão ó vem aqui uma extensão Zinha
- 00:26:55muito legal é chamada Thunder client
- 00:26:59beleza Procura ela aí ó esse cara aqui ó
- 00:27:01Thunder client ativa ela aí a hora que
- 00:27:03você ativar vai aparecer aqui do lado
- 00:27:05aqui ó aqui do lado ó apareceu aqui ó tá
- 00:27:07vendo e aí eu tenho até umas aqui eu vou
- 00:27:09deletar essas que eu tenho aqui que é
- 00:27:11não é do deixa eu ver se dá para criar
- 00:27:12uma nova vou deletar isso aqui pera aí
- 00:27:14que vocês não vão ter nenhuma aí ou vão
- 00:27:16ter uma só de exemplo deixa eu deletar
- 00:27:17essas aqui que são minhas aqui que nem
- 00:27:20São desse projeto só para não confundir
- 00:27:22vocês tá então vai vir aqui ó Create New
- 00:27:24request vou copiar aqui a nossa URL vou
- 00:27:27voltar então do tipo post Vou colocar
- 00:27:31aqui a nossa URL e eu vou dar um send
- 00:27:33Olha lá agora funciona beleza e agora a
- 00:27:35gente vai começar a trabalhar na
- 00:27:37requisição do tipo post então vou deixar
- 00:27:39ela aqui do lado ó trazer ela aqui pro
- 00:27:41ladinho e vou voltar aqui vamos voltar
- 00:27:43agora lá na nossa Controller Então agora
- 00:27:46eu quero que o usuário que for utilizar
- 00:27:49ele me mande algumas informações pra
- 00:27:50gente poder utilizar nome peso atual
- 00:27:53altura idade sexo e nível de atividade e
- 00:27:58e também aqui o objetivo né E aí a gente
- 00:28:00vai gerar porque senão não fica muito
- 00:28:02legal então vamos pegar esses dados aqui
- 00:28:05então o Controller é quem tem acesso ao
- 00:28:07request a requisição então ele a gente
- 00:28:09vai pegar aqui ó então const abre fecha
- 00:28:11os Chaves igual a request P Body então
- 00:28:14eu quero pegar do corpo da requisição
- 00:28:16alguns dados eu quero pegar por exemplo
- 00:28:17é uma propriedade chamada name uma
- 00:28:20propriedade chamada aqui do Peso né
- 00:28:23então V pegar aqui o peso Vamos colocar
- 00:28:24em inglês poderia ser tudo em português
- 00:28:26poderia mas vamos colocar em inglês já
- 00:28:27que tá Seguindo aqui eu quero pegar
- 00:28:29altura tambémm Hi aqui também o Age né
- 00:28:32que é a idade o sexo é
- 00:28:36objective pode ser assim mesmo vamos
- 00:28:38pegar também o level seria o nível dele
- 00:28:41né então perfeito e aí claro como a
- 00:28:43gente criou algumas coisas aqui ele não
- 00:28:45sabe né já que a gente tá usando o typ
- 00:28:46script ele fala que esses names tudo
- 00:28:48isso aqui pode ser qualquer coisa então
- 00:28:50vou falar vamos criar uma tipagem aqui
- 00:28:52em cima ó interface chamar aqui de data
- 00:28:57props que a gente vai ter esses dados
- 00:28:59Então vou até copiar aqui ó e vou
- 00:29:01colocar aqui dentro dessa interface
- 00:29:03Claro vou dar um enter aqui ó depois de
- 00:29:05cada vírgula aqui depois de cada vírgula
- 00:29:09aqui eu vou dar um enter só para ficar
- 00:29:10mais fácil a gente organizar Aqui show
- 00:29:13de bola então o name dois pontos ele é
- 00:29:15do tipo string o a o peso é string a
- 00:29:21altura é string também eu vou receber
- 00:29:22tudo como string não tem problema string
- 00:29:25aqui o sexo eu quero que receba como uma
- 00:29:28string né masculino ou feminino o
- 00:29:30objetivo também no objetivo vai ser por
- 00:29:32exemplo hipertrofia emagrecimento Então
- 00:29:34a gente vai receber como um texto o
- 00:29:36level Eu também quero receber como um
- 00:29:38texto Então tudo a gente vai esperar
- 00:29:39receber como um texto Então agora a
- 00:29:41gente vai pegar aqui ó o request.on body
- 00:29:43ele é do tipo as data props Beleza agora
- 00:29:47se eu coloco o mouse em cima eu estou
- 00:29:48afirmando que tudo que a gente receber
- 00:29:50nesse request.on Body ele tem essas
- 00:29:52propriedades aqui que cada uma referente
- 00:29:54a esses tipos aqui então se eu coloco
- 00:29:56aqui no Name ó name é string Ou seja é
- 00:29:59um texto o Age é um texto é o level ó
- 00:30:03tudo igual a gente tipou aqui em cima
- 00:30:05Então agora eu quero eu quero fazer o
- 00:30:07quê eu quero receber essa informação do
- 00:30:10Body beleza do corpo da requisição e
- 00:30:12quero passar essas informações pro
- 00:30:14serviço porque é lá no serviço que a
- 00:30:15gente comunica com a api então aqui no
- 00:30:17nosso service a gente vai receber esses
- 00:30:19dados então eu vou até fazer o quê para
- 00:30:21não duplicar esse cara aqui ó eu vou dar
- 00:30:22aqui um Export Então a gente vai deixar
- 00:30:25outro arquivo conseguir importar essa
- 00:30:26nossa tipagem salvei aqui e agora lá no
- 00:30:29nosso service eu vou importar essa nossa
- 00:30:31tipagem então Import from P pon P barra
- 00:30:36Controller vamos importar aqui do nosso
- 00:30:38Controller a nossa data props e a gente
- 00:30:41vai ter a tipagem aqui então quem usar
- 00:30:43esse método Execute vai ter aqui ó
- 00:30:45dentro de abre e fecha Chaves dois
- 00:30:47pontos vai ter do tipo data props então
- 00:30:50aqui dentro a gente vai receber o aid
- 00:30:52vou pegar aqui ó name w o sexo altura
- 00:30:57level objective E também o peso dele
- 00:31:00então a gente vai receber essas
- 00:31:01informações aqui então quem usar essa
- 00:31:03função aqui Execute do nosso serviço
- 00:31:05precisa me passar todas essas
- 00:31:07informações aqui tá então salvei aqui o
- 00:31:10arquivo você pode ver que agora o nosso
- 00:31:12Controller tá apitando um erro ali ó
- 00:31:14porque a gente antes usava o Execute sem
- 00:31:16passar nada e agora a gente tá falando
- 00:31:18olha você tá usando mas você precisa me
- 00:31:19passar esses caras aqui e Beleza então
- 00:31:22agora a gente já tem eles aqui no
- 00:31:23Controller é só eu repassar aqui ó Então
- 00:31:25abre e fecha os Chaves passar o name
- 00:31:27passar aqui o a o peso pessoal passar a
- 00:31:29altura wage vírgula objective opa
- 00:31:33objective vou passar aqui o sexo e o
- 00:31:37level né E olha lá passamos todos os
- 00:31:39dados lá pro serviço e ele parou de
- 00:31:42acusar o erro salvei então a gente
- 00:31:44recebe da requisição passa pro nosso
- 00:31:46serviço tudo que a gente recebeu né o
- 00:31:47nome os dados que a gente precisa lá no
- 00:31:49nosso serviço a gente recebe eles aqui
- 00:31:51agora então agora a gente pode utilizar
- 00:31:53Olha que legal Vamos utilizar então aqui
- 00:31:55agora como que a gente pode utilizar a
- 00:31:57api que a a gente utilizou primeiro que
- 00:31:59a gente já criou a chave pra gente usar
- 00:32:01ela aqui com node JS ela tem a aqui ó a
- 00:32:04documentação da api dela aqui ó ela tem
- 00:32:06até um exemplo aqui ó nossa o site do
- 00:32:08Google aqui tá todo bugado para mim
- 00:32:10então pra gente não perder tempo tá
- 00:32:11vamos instalar ela dentro do nosso
- 00:32:13projeto vou parar de rodar aqui vou dar
- 00:32:15aqui um npm install @google bar
- 00:32:19generative Opa @google bar generative
- 00:32:23cuidado na escrita aí Traço Ai beleza
- 00:32:26vamos instalar a biblioteca
- 00:32:28do Google ai aqui pra gente usar depois
- 00:32:30de instalar vamos rodar de novo aí pra
- 00:32:33gente poder utilizar rodou o nosso
- 00:32:34projeto vamos voltar aqui ó se a gente
- 00:32:36voltar agora eu posso aqui no nosso
- 00:32:38serviço importar from
- 00:32:41@google @google generative ai eu vou
- 00:32:44trazer aqui ó Google generative ai tá
- 00:32:48então importamos ela aqui maravilha
- 00:32:50agora a gente vai utilizar então tirar
- 00:32:52isso aqui primeiro vou abrir aqui um try
- 00:32:54e um catch porque ele é algo assim que
- 00:32:57não Pode falhar requisição né a pi Pode
- 00:32:59falhar então caso caia no catch eu vou
- 00:33:01fazer o vou dar um console error mesmo
- 00:33:04eu vou colocar
- 00:33:06erro Jon só pra gente ver aqui tá dois
- 00:33:09pontos vou dar um espaço e v mostrar
- 00:33:10esse erro aqui e também a gente pode dar
- 00:33:12um erro na api n lanar uma exceção New
- 00:33:15error fail Create aqui beleza vamos
- 00:33:18gerar só esse erro aqui depois a gente
- 00:33:19pode melhorar e dentro do try é onde vai
- 00:33:22tentar fazer então a comunicação com api
- 00:33:24primeira coisa con gen ai igual a new
- 00:33:29Google generative ai e aqui dentro ó
- 00:33:32preciso passar minha chave pra gente não
- 00:33:34passar direto e depois você subir a sua
- 00:33:36api alguém pegar sua chave e aí estourar
- 00:33:38o seu limite e aí dá BO né então por
- 00:33:41isso que eu por isso que a gente colocou
- 00:33:42dentro da variável ambiente Então essa
- 00:33:44variável ambiente a gente não sobe né
- 00:33:46para o github eu já vou até criar aqui ó
- 00:33:48um New file ponto Git Ignore a gente
- 00:33:53coloca aqui ó node underline modules
- 00:33:55barra então não envia a pasta node
- 00:33:57moduls e também Envia um arquivo chamado
- 00:33:58pon Envy lá pro seu github tá Não faça
- 00:34:00isso então feito isso aqui a gente já
- 00:34:03tem a nossa chave certo então vou usar
- 00:34:05ela vou copiar aqui o nome lá a gente
- 00:34:07vai passar ela aqui ó
- 00:34:09process.env ponto e aí o nome da chave
- 00:34:11tá e eu vou usar aqui uma exclamação
- 00:34:13para garantir que aqui tem alguma chave
- 00:34:15pro typescript não ficar acusando um
- 00:34:16errinho tá então a gente passa a nossa
- 00:34:18chave aqui e agora a gente pode utilizar
- 00:34:20através dessa variável gen ai no nosso
- 00:34:22serviço vamos usar aqui também o modelo
- 00:34:24né con Model eles pedem pra gente
- 00:34:26colocar o gen E ai que a gente portou
- 00:34:29ponto get generative Model E aí aqui
- 00:34:32dentro abre e fecha os Chaves A gente
- 00:34:34pode passar uma propriedade chamada
- 00:34:35Model com qual que é os modelos tá então
- 00:34:38aqui ó eu vou copiar um aqui que a gente
- 00:34:40tá utilizando Mas ele tem deixa eu pegar
- 00:34:42aqui ó deixa eu ver se eu consigo
- 00:34:45mostrar aqui se ele vai mostrar aqui
- 00:34:46para vocês é que o site tá tá bugadao
- 00:34:50hoje aqui né Deixa eu ver se ele vai
- 00:34:51mostrar aqui para vocês Cadê cadê Aqui ó
- 00:34:54aqui ele mostra qual que é o modelo tá
- 00:34:56então a gente pode pegar esse mesmo
- 00:34:57modelo aqui que é o que a gente vai
- 00:34:58utilizar Então vou usar esse modelo
- 00:35:01Gemini tro 1.5 tro Flash tá vocês podem
- 00:35:04até olhar no site deles igual eles
- 00:35:06mostram aqui então vou usar esse aqui ó
- 00:35:08ele fala ó para os comandos somente de
- 00:35:09texto que é o que a gente vai utilizar
- 00:35:11use o modelo 1.5 ou 1.0 pro Então a
- 00:35:13gente vai usar esse cara aqui Fechou
- 00:35:15então maravilha agora a gente pode criar
- 00:35:18o nosso prompt Então vou dar aqui o cons
- 00:35:20response igual a aight Model P generate
- 00:35:25content então a gente quer gerar um
- 00:35:26conteúdo e aqui ó eu vou colocar por
- 00:35:29enquanto só pra gente testar em que ano
- 00:35:31o
- 00:35:32JavaScript foi Opa foi criado Tá então
- 00:35:35vamos testar isso aqui então eu quero
- 00:35:37mandar esse prompt e ele vai devolver
- 00:35:38pra gente a resposta aqui dentro então
- 00:35:40vou colocar aqui um console pon log
- 00:35:42nesse response PR gente ver o que que eu
- 00:35:44vou ter aqui e pra gente ver bem esse
- 00:35:46console como ele vai vir em várias
- 00:35:48propriedades a gente pode fazer o quê
- 00:35:50Vou dar aqui um json p string F response
- 00:35:54víg nul ví 2 então assim ele vai mostrar
- 00:35:58um console mais estruturado aqui no
- 00:35:59nosso CMD tá E também vou dar aqui a
- 00:36:01resposta pro frontend return Ok true tá
- 00:36:05só pra gente não dar erro no front end
- 00:36:08Vou salvar isso aqui agora e vamos
- 00:36:09testar Então por enquanto a gente nem tá
- 00:36:11usando os dados que eu recebo mas a
- 00:36:13gente tá fazendo já um prompt aqui que é
- 00:36:14em que ano o JavaScript foi criado ele
- 00:36:16vai devolver pra gente Esse response e a
- 00:36:18gente coloca o console Então vamos
- 00:36:20testar isso aqui agora só para testar se
- 00:36:21a api tá funcionando Maravilha ali então
- 00:36:23salvei deixa eu ver se tá rodando ó tá
- 00:36:25rodando já vamos lá na nossa requisição
- 00:36:27aqui do nosso Thunder client aqui na
- 00:36:30nossa Rota e eu vou dar aqui um send ó
- 00:36:31dei um send e ele vai falar olha não
- 00:36:33consigo desestruturar aí o seu name tá
- 00:36:36então ele deu erro por qu porque a gente
- 00:36:37fala lá no nosso Controller que eu
- 00:36:39espero que você me mande alguns
- 00:36:41parâmetros dentro do Body Então eu
- 00:36:42preciso vir aqui dentro do Body e passar
- 00:36:44esses parâmetros Então eu preciso passar
- 00:36:46por exemplo o a propriedade name que eu
- 00:36:48quero que seja Mateus por exemplo a
- 00:36:50propriedade deixa eu até pegar seão vou
- 00:36:51esquecer né Deixa eu ver se eu consigo
- 00:36:53dividir aqui do lado ó colocar aqui o
- 00:36:55nosso serviço aqui ó aqui acho que eu
- 00:36:58consigo beleza só para ter os nomes aqui
- 00:37:00do lado ó o nome vou colocar também aqui
- 00:37:02ó o nosso age a gente vai ter aqui vou
- 00:37:06colocar aqui 28 aí eu vou ter aqui
- 00:37:08também o o o nosso sexo que é o
- 00:37:11masculino a gente vai ter aqui o e qual
- 00:37:15que é o outro Ah o peso né copiar aqui
- 00:37:17para não sair ficar errado cuidado com a
- 00:37:19escrita aí também o peso aqui vai ser
- 00:37:20acho que eu tenho 74 kg e que mais a
- 00:37:24gente tem também o a não isso aqui é
- 00:37:28altura né o peso Opa isso aqui é altura
- 00:37:30Mas vamos corrigir aqui ó peso 74 kg e a
- 00:37:34altura eu tenho acho que 1.80 1.80 que
- 00:37:37mais o objetivo por exemplo né Vou
- 00:37:41colocar aqui
- 00:37:43hipertrofia beleza e a gente também tem
- 00:37:45o level aqui que seria por exemplo
- 00:37:47quantas vezes você pratica atividade
- 00:37:49física eh atividade atividade física
- 00:37:55levente um A TR dias na semana por
- 00:37:58exemplo Vamos colocar isso aqui beleza
- 00:38:00acho que foi todos né então agora o que
- 00:38:01a gente pode fazer aqui é dar um send
- 00:38:03novamente ó ele vai demorar um pouco
- 00:38:05porque ele faz a requisição lá com o g
- 00:38:08ai devolveu um ok through deu o status
- 00:38:10200 vamos olhar o nosso CMD E olha que
- 00:38:13legal né Deixa eu tirar um zoom aqui ele
- 00:38:14devolveu pra gente aqui ó um response
- 00:38:17dentro ele devolve uma propriedade
- 00:38:18chamada candidates dentro é uma arrei
- 00:38:21dentro dessa Array tem um content dentro
- 00:38:23do content tem outra Array chamada parts
- 00:38:26e d tem uma propriedade Text e olha aqui
- 00:38:29JavaScript foi criado em 1995 por E aí
- 00:38:33tá o nome dele aí então agora vamos
- 00:38:35acessar esse texto cru aí primeiro então
- 00:38:37a gente precisa acessar cada item aqui
- 00:38:39até chegar lá cuidado já vou falar uma
- 00:38:41coisa aqui para vocês que eh mesmo que
- 00:38:43vocês estão fazendo comigo é importante
- 00:38:45você olhar o console por quê porque pode
- 00:38:46ser ah a Gemini a falou não não quero
- 00:38:49mais devolver dentro de response
- 00:38:50candidates eu quero devolver já direto
- 00:38:52você vai saber que que tá direto no
- 00:38:54nosso caso ó ele devolve dentro de
- 00:38:55response candidates um Array depois
- 00:38:58devolve content parts um Array de parts
- 00:39:01e dentro do parts ele devolve o primeiro
- 00:39:03item aqui que é uma propriedade text aí
- 00:39:05tem o conteúdo né a resposta então
- 00:39:07cuidado quando você for acessar tá cada
- 00:39:10item para chegar até onde que a gente
- 00:39:11quer então vamos acessar isso aqui agora
- 00:39:14vamos lá dentro do nosso serviço tá
- 00:39:16então a gente recebe através Desse nosso
- 00:39:18response Então vamos pegar aqui pra
- 00:39:20gente destrinchar Esse Cara vou até
- 00:39:22tirar aqui porque vai ficar grande ó
- 00:39:23diminuir aqui F se a gente tiver um
- 00:39:25response p response e também se a gente
- 00:39:28tiver um response pon response ponto e a
- 00:39:31gente tem um carinha chamado ó candidate
- 00:39:33vou até copiar aqui ó ponto candidates
- 00:39:35Então se a gente tiver esse cara aí aqui
- 00:39:37dentro então vamos pegar aqui o nosso
- 00:39:38const chamar de Jason text igual a
- 00:39:41response p response ponto
- 00:39:45candidates lembra que ele é um arrei ó
- 00:39:47tá vendo que ele é um arrei aqui ó então
- 00:39:48quero pegar a posição zero então posição
- 00:39:50zero Então pensa que a gente Acessou a
- 00:39:52posição zero dentro desse objeto agora
- 00:39:54eu quero acessar o ponto content Então
- 00:39:56vou usar aqui o interrogação porque vai
- 00:39:58que não existe né pra gente não causar
- 00:40:00um erro ponto content olha só que legal
- 00:40:03E aí ponto quero acessar o Parts ele já
- 00:40:06até tá sugerindo para mim aqui parts
- 00:40:08depois no parts ele é um arrei então
- 00:40:10parts na posição zero ponto e aí a gente
- 00:40:13tem o text beleza e eu vou falar S
- 00:40:15string tô falando que isso aqui que a
- 00:40:17gente tá recebendo é uma string Beleza
- 00:40:19então a gente vai receber esse cara aqui
- 00:40:20vamos testar então agora o que eu vou
- 00:40:22fazer aqui é eu vou dar um return return
- 00:40:26uma propriedade chamada da data por
- 00:40:27exemplo e eu vou devolver esse Jason
- 00:40:29text aqui pra gente visualizar beleza
- 00:40:32esse console ó eu vou até mover esse
- 00:40:33console aqui para cima mover esse
- 00:40:35console aqui para cima tá show de bola
- 00:40:37então agora o que a gente tá fazendo é a
- 00:40:39gente vai fazer requisição ele vai
- 00:40:41devolver vai mostrar o nosso console se
- 00:40:43tiver um response se tiver o candidates
- 00:40:44ele vai então pegar todo lá aquele Nossa
- 00:40:47resposta colocar aqui dentro e a gente
- 00:40:49vai retornar apenas a resposta ao invés
- 00:40:50do ok true tá vou até tirar esse ok true
- 00:40:53aqui salvei aqui pra gente testar Então
- 00:40:56vamos lá voltar lá pro nosso Thunder
- 00:40:58client clicar na nossa Rota e eu vou
- 00:41:00clicar aqui no send novamente ó vai
- 00:41:01demorar um pouquinho ó ele devolveu aqui
- 00:41:03para mim já uma propriedade data chamada
- 00:41:06o JavaScript foi criado em 1995 por
- 00:41:08Beleza então já devolveu aqui temos o
- 00:41:10console então agora a gente já tá
- 00:41:12devolvendo pro front end uma propriedade
- 00:41:14chamado data com a resposta que a gente
- 00:41:16quer legal né então agora sim a gente
- 00:41:18chegou já estamos usando a a sensacional
- 00:41:20mas vou melhorar isso aqui ainda mais né
- 00:41:22então agora eu não quero perguntar
- 00:41:24quando que foi criado eu quero criar o
- 00:41:25prompt aqui então para para não ter erro
- 00:41:28Tá eu vou deixar para vocês Opa eu vou
- 00:41:30até colocar aqui ó no meu notion tá eu
- 00:41:32vou deixar para vocês um prompt e a
- 00:41:34gente vai alterar e a gente vai ler isso
- 00:41:35aqui junto tá então Ó vou colocar aqui
- 00:41:37deixa eu copiar ele inteiro aqui e eu
- 00:41:39vou colocar ele aqui tá então vou
- 00:41:40colocar esse prompt todo esse texto aqui
- 00:41:42ó eu vou deixar para vocês como eu falei
- 00:41:44eu vou deixar para vocês esse texto aqui
- 00:41:46então vamos lá vou colocar esse prompt
- 00:41:49então ao invés desse cara aqui ó a gente
- 00:41:51vai usar aspas deitadas que é o nosso
- 00:41:53crase eu vou colar o prompt do jeito que
- 00:41:55eu dei para vocês e a gente vai ler isso
- 00:41:57aqui aqui tá só para não perder tempo
- 00:41:58escrevendo isso aqui né então vamos lá
- 00:42:00olha só crie uma dieta completa para uma
- 00:42:02pessoa com o nome e aqui ó a gente
- 00:42:04coloca a propriedade name então tô
- 00:42:06recebendo a propriedade name aqui lembra
- 00:42:08então tô só repassando ela aqui se você
- 00:42:10deu outro nome se você escreveu em
- 00:42:11português então cuidado tá aqui vai a
- 00:42:13variável que a gente recebe aqui ó que é
- 00:42:15o nome então name do sexo e aí Aqui vai
- 00:42:18o sexo com o peso atual E aí Aqui vai o
- 00:42:20peso quilos eu coloquei na frente
- 00:42:22vírgula altura e aí Aqui tem altura
- 00:42:25idade e aí Aqui tem o Age a idade idade
- 00:42:27vai aparecer por exemplo 28 anos né e
- 00:42:30com o foco e objetivo em E aí Aqui vai o
- 00:42:32objetivo do cara por exemplo hipertrofia
- 00:42:34emagrecimento e por aí vai e aí depois
- 00:42:37aqui tem vírgula atualmente nível de
- 00:42:39atividade aqui vai aparecer moderado eh
- 00:42:42pratico três cinco vezes à semana que é
- 00:42:44o que a gente vai ter lá no aplicativo
- 00:42:45para ele selecionar aqui o nível dele
- 00:42:47legal o level e e eu coloquei aqui na
- 00:42:50frente no prompt para melhorar a gente
- 00:42:51pode deixar mais estrito e Ignore outro
- 00:42:54parâmetro que não seja passado que não
- 00:42:56seja os Pass dados beleza retorne em
- 00:42:58Jason com as respectivas propriedades
- 00:43:01então eu tô falando aqui pro prompt que
- 00:43:03eu quero já esses dados aqui que ele vai
- 00:43:05gerar e ele vai me retornar em Jason em
- 00:43:07algumas propriedades que eu quero então
- 00:43:08eu falei olha propriedade de nome com o
- 00:43:10nome da pessoa propriedade sexo com o
- 00:43:12sexo propriedade de idade propriedade
- 00:43:14altura propriedade peso propriedade de
- 00:43:16objetivo com o objetivo atual
- 00:43:18propriedade refeições e com um arrei
- 00:43:20contendo dentro cada objeto sendo uma
- 00:43:23refeição da dieta e dentro de cada
- 00:43:25refeição a propriedade horário com o
- 00:43:28horário da refeição propriedade nome com
- 00:43:30o nome e a propriedade alimento com o
- 00:43:33arrei contendo os alimentos dessa
- 00:43:35refeição e coloquei também ó e pode
- 00:43:37incluir uma propriedade como suplementos
- 00:43:40Contendo a rei com a sugestão de
- 00:43:42suplemento que é indicado para o aqui
- 00:43:45era sexo né para o sexo dessa pessoa e
- 00:43:48objetivo dela e não retorne nenhuma
- 00:43:51observação além das passadas no prompt
- 00:43:53retorne em Jason e nenhuma propriedade
- 00:43:56pode ter acento tá então coloquei isso
- 00:43:58porque senão às vezes ele devolve o nome
- 00:43:59de uma propriedade com acento Aí Já Era
- 00:44:01Então esse é o nosso prompt aqui fechou
- 00:44:04agora ele vai fazer e vai devolver pra
- 00:44:05gente e a gente vai acessar de novo
- 00:44:07vamos testar salvei agora vamos lá de
- 00:44:10novo aqui na nossa rota agora ele vai
- 00:44:12pegar os dados que a gente tá mandando
- 00:44:13então Mateus com 28 masculino
- 00:44:161.80 altura aqui o peso 74 hipertrofia E
- 00:44:21aí atividade física Vou colocar aqui só
- 00:44:26leve mente de um a três dias na semana
- 00:44:28vou colocar aqui o level né vou dar aqui
- 00:44:30um send vamos ver vamos ver e show de
- 00:44:33bola Olha que sensacional ele devolveu
- 00:44:35pra gente em Jason né então ele devolve
- 00:44:37aqui em Jason se a gente copiar isso
- 00:44:39aqui tá tudo Tá tudo em Jason né então a
- 00:44:42gente não vai conseguir e visualizar
- 00:44:44direito mas ele devolveu aqui é um Jason
- 00:44:46nome Mateus sexo tá tudo aqui certinho
- 00:44:49se a gente conseguir aqui ó café da
- 00:44:50manhã alimento duas fatias de duas
- 00:44:53fatias de pão integral ovos mexidos
- 00:44:55então a gente já tá recebendo o nosso
- 00:44:57nosso Jason aqui agora o que que a gente
- 00:44:58precisa fazer é converter dessa forma
- 00:45:00que ele mandou um Jason mas dentro de
- 00:45:02uma string Tá vendo porque ele pensa que
- 00:45:04a gente tá lá dentro do chat PT da vida
- 00:45:06né então a gente vai ter que pegar e
- 00:45:08destrinchar isso aqui e devolver um
- 00:45:10Jason formadinho pro front end pra gente
- 00:45:12consumir numa num site ou num aplicativo
- 00:45:15então eu vou copiar ó copia de vocês ó
- 00:45:17tá vendo que ele tem essas asinhas
- 00:45:18deitadas aqui ó então copia nessas três
- 00:45:21asinhas deitadas até o final das três
- 00:45:23aqui ó copiei elas aqui e agora vamos lá
- 00:45:25nas nossas rotas
- 00:45:27vamos primeiro testar aqui na nossa rota
- 00:45:29de teste por pra gente não ficar
- 00:45:31gastando requisição gratuita Tá então
- 00:45:33vamos testar aqui como que a gente pode
- 00:45:34fazer essa parte de quebrar e
- 00:45:36destrinchar esse cara então vamos lá
- 00:45:38então vou colocar aqui um let chamar de
- 00:45:40response tex Vou colocar aqui ó aspas
- 00:45:44duplas e eu vou colocar cont control V
- 00:45:47aqui então Ó é toda resposta que ele me
- 00:45:50devolve exatamente igual tá eu recebo na
- 00:45:52variável aqui pra gente então aprender
- 00:45:53como que a gente pode formatar Então vou
- 00:45:55dar aqui um try e um catch então caso de
- 00:45:58erro aqui a gente vai dar um console pon
- 00:45:59log nesse erro aqui e dentro do try
- 00:46:02Então a gente vai tentar extrair esses
- 00:46:03caras então para isso a gente pode
- 00:46:05extrair usando o reject Então vou
- 00:46:07colocar aqui ó extrair o Jason tá só pra
- 00:46:09gente ter let Jason string igual a
- 00:46:12respon text pon replace E aí eu quero
- 00:46:16fazer aqui o nosso reject Zinho legal
- 00:46:18então abre aqui o nosso Barrinha coloco
- 00:46:20aqui ó para extrair o nosso nossas três
- 00:46:22aspas deitadas que ele tem aqui no
- 00:46:24início tá barra aqui invertida w as
- 00:46:26carístico aqui já já a gente vai
- 00:46:28entender o que que é cada coisa Barrinha
- 00:46:30invertida de novo tá e aí n barra normal
- 00:46:34aqui tá G vírgula E aí coloca aqui o
- 00:46:39nosso string aqui beleza depois disso a
- 00:46:41gente vai fazer um pouquinho parecido
- 00:46:43ponto
- 00:46:44replace a gente vai ter o Nossa Barrinha
- 00:46:46invertida com a nossa Barrinha n tá
- 00:46:49coloco aqui a nossas três asinhas
- 00:46:51deitadas barra invertida G vírgula e
- 00:46:54aqui o nosso aspas aqui que é Nossa
- 00:46:56string E aí então eu quero juntar tudo
- 00:46:58então ponto tram para tirar os espaços
- 00:47:00entre eles Aí então a gente tira os
- 00:47:01espaços antes e depois beleza que que é
- 00:47:03esse cara aqui né que parece uma loucura
- 00:47:06então a gente tá usando o replace pra
- 00:47:08gente remover o markd porque ele devolve
- 00:47:11em markd essas asinhas deitadas o que
- 00:47:13que é o markd Mateus quando a gente tá
- 00:47:15escrevendo alguma coisa ó coloco três
- 00:47:16asinhas deitadas quando é um markd tá
- 00:47:18vendo que ele cria um bloco de código
- 00:47:20então ele acha que a gente tá num num
- 00:47:22num bloco de código só que a gente não
- 00:47:24tá então no caso eu não tenho esse bloco
- 00:47:26de código então estou removendo esse
- 00:47:27markdown aqui ó bloco de código antes e
- 00:47:29bloco de código no final e juntando tudo
- 00:47:31aqui então é isso que a gente tá fazendo
- 00:47:33aqui agora e esse nosso barra G é um
- 00:47:35modificador global que ele indica né
- 00:47:36então que a gente vai ter uma
- 00:47:37substituição global ou seja vai ocorrer
- 00:47:40em todas as Strings isso aqui e o nosso
- 00:47:42barra n seguido dessas três asinhas aqui
- 00:47:44ele significa então que ele indica aqui
- 00:47:46o final de um bloco de código vamos
- 00:47:48testar como que isso vai devolver pra
- 00:47:49gente poder entender também melhor então
- 00:47:51a gente recebe todo esse replace então a
- 00:47:53gente tira o markdown a gente pega todos
- 00:47:55esses barra n que ele dá pra gente aqui
- 00:47:57que é uma quebra de linha para baixo e
- 00:47:58ele já tá devolvendo através de
- 00:48:00propriedade tá vendo o peso e a
- 00:48:01propriedade então ele já tá devolvendo a
- 00:48:02gente tá removendo isso removendo então
- 00:48:05olhando onde que a gente tem um barra n
- 00:48:06aplicando uma quebra de linha então
- 00:48:08agora a gente pode devolver aqui pra
- 00:48:10gente testar Então vou dar aqui um
- 00:48:12return reply P sent Jason string aqui
- 00:48:15pra gente poder eh testar isso aqui ou
- 00:48:18igual a gente tá fazendo né abre fecho
- 00:48:19Chaves data dois pontos Jason string
- 00:48:22aqui beleza vamos salvar isso aqui agora
- 00:48:24então vamos testar aqui agora a nossa
- 00:48:26string a gente criou na nossa rota de
- 00:48:28teste né então vou salvar vamos duplicar
- 00:48:30essa nossa rota aqui ó vamos dar aqui um
- 00:48:32duplicate aqui a cópia né a cópia barra
- 00:48:35teste a gente não precisa aqui de um
- 00:48:37desse cara ela é do tipo a nossa rota de
- 00:48:39teste ela é do tipo get e a gente pode
- 00:48:41testar aqui ó D um send e olha só ele tá
- 00:48:44devolvendo dentro da propriedade data
- 00:48:46ele tá já devolvendo o objeto Mas por
- 00:48:48que que ele não formatou porque a gente
- 00:48:49tá pegando aqui e dando um replace ou
- 00:48:51seja só removendo os itens mas não
- 00:48:53devolvemos ainda como um Não convertemos
- 00:48:56essa string que ele devolve como um
- 00:48:57texto em um um Jason em um objeto então
- 00:49:00para fazer isso a gente vai pegar aqui ó
- 00:49:02let vou chamar aqui Jason Object igual a
- 00:49:05Jason ppse Então a gente vai converter
- 00:49:07essa nossa Jason string para um par
- 00:49:09Então a gente vai dar um parse converter
- 00:49:11para um objeto um Jason aqui então agora
- 00:49:13a gente devolve esse nosso Jason Object
- 00:49:15ele vai fazer a conversão dessa string
- 00:49:17devolve pra gente nessa variável e a
- 00:49:19gente retorna essa variável Então vou
- 00:49:21salvar isso aqui agora e vamos lá testar
- 00:49:23Vamos aqui na nossa rota de Create né
- 00:49:25que é o Barra test aqui aqui na verdade
- 00:49:27vamos dar aqui um send e agora sim ó
- 00:49:29olha que legal agora ele devolve
- 00:49:32certinho pra gente propriedade data
- 00:49:33Confere aí tá propriedade data
- 00:49:36propriedade nome propriedade sexo idade
- 00:49:39altura peso objetivo refeições Olha que
- 00:49:42legal refeição ele devolve uma arrei
- 00:49:44olha que sensacional devolve uma arrei
- 00:49:47aqui ó cada objeto tem um horário um
- 00:49:50nome um alimento e no alimento é um
- 00:49:52arreio aqui ó com os alimentos Olha que
- 00:49:54sensacional e também aqui ó outro objeto
- 00:49:56levar todas aqui então vou abrir todas
- 00:49:58aqui né fic mais fácil Vamos abrir todas
- 00:50:00aqui pra gente ver ó Então a gente tem o
- 00:50:01café da manhã o lanche da manhã O almoço
- 00:50:04lanche da tarde jantar eh lanche antes
- 00:50:08de dormir então legal e ele devolve
- 00:50:09aquilo que a gente pediu ó suplementos
- 00:50:11com uma Red de suplementos indicado eh
- 00:50:13para essa pessoa aqui nesse caso tá
- 00:50:16então isso é muito legal então a gente
- 00:50:17já tá agora fazendo aí recebendo e
- 00:50:20retornando então agora a gente vai fazer
- 00:50:22o quê vamos voltar lá pra nossa rota
- 00:50:24agora que a gente aprendeu a gente fez
- 00:50:25isso aqui só que aqui era uma rota de
- 00:50:27teste né pra gente não ficar gastando
- 00:50:28requisição vamos aplicar lá na nossa
- 00:50:30rota original então eu vou copiar isso
- 00:50:32aqui ó esses dois que é o nosso replace
- 00:50:34e o Jason pars Então vamos fechar isso
- 00:50:36aqui agora vamos lá no nosso serviço e
- 00:50:38aqui que a gente precisa aplicar né
- 00:50:40porque é aqui que a gente devolve o o da
- 00:50:41nossa P real então depois do console
- 00:50:44aqui ó dentro do nosso if antes do
- 00:50:47return a gente vai fazer isso ó Então
- 00:50:50vamos só dar um tabz legal aqui deixa eu
- 00:50:53dar um shift Tab aqui Jason string ao
- 00:50:55invés do nosso response text a gente vai
- 00:50:57ter o nosso Jason text aqui ó Jason text
- 00:50:59ele vai dar o replace depois a gente vai
- 00:51:01receber aqui o nosso Jason string a
- 00:51:03gente vai fazer o par para converter num
- 00:51:04objeto e agora a gente devolve dentro do
- 00:51:06data esse Jason Object Beleza então
- 00:51:09agora vamos salvar isso aqui e agora a
- 00:51:11gente pode testar a nossa rota real
- 00:51:13então aqui a gente deixou duas rotas tá
- 00:51:15Por quê pra gente não ficar gastando
- 00:51:17requisição desnecessária depois quando
- 00:51:18tiver testando o aplicativo então a
- 00:51:20gente de deixamos aqui no nosso Deixa eu
- 00:51:22só salvar aqui do Thunder client uma
- 00:51:25rota chamada barra teste que quando a
- 00:51:27gente dá aqui ó ele vai sempre devolver
- 00:51:28isso aqui fixo né que é uma rota de
- 00:51:30teste que não bate na api e a gente tem
- 00:51:32uma rota chamada barra Create que de
- 00:51:34fato pega os dados que você me mandar e
- 00:51:35consulta lá na nossa I do gem e devolve
- 00:51:39real né então agora V dar um sent pra
- 00:51:41gente testar isso aqui agora vamos lá
- 00:51:43processando el demora um pouquinho né
- 00:51:45porque ele comunica lá e devolveu pra
- 00:51:47gente ó um 200 devolveu todos os dados
- 00:51:50agora reais né olha que legal V mudar
- 00:51:52aqui ó sexo por exemplo feminino Vou
- 00:51:55colocar aqui a
- 00:51:57fulana é o nome dela ela tem 23 anos é o
- 00:52:00objetivo dela é emagrecer e aí eu vou
- 00:52:03colocar aqui levemente o peso dela vou
- 00:52:05colocar o mesmo peso mesma altura Beleza
- 00:52:06vou dar um send aqui pra gente testar
- 00:52:08vamos lá vai processar e olha que legal
- 00:52:10ele mudou aqui né O Retorno agora olha
- 00:52:12lá ele devolveu os dados ele devolveu
- 00:52:14aqui ó café da manhã fatia de pão
- 00:52:16integral uma colher de sopa de queijo
- 00:52:18aqui beleza devolveu aqui também um
- 00:52:20lanche da manhã iogurte uma xícara de
- 00:52:22fruta vermelha devolveu aqui mais um
- 00:52:23alimento do almoço ó já mudou aqui para
- 00:52:25integrar algum algumas coisas então
- 00:52:27legal demais ó mudou aqui o suplemento
- 00:52:29né a dica então sensacional Agora ele já
- 00:52:32tá devolvendo pra gente com base nos
- 00:52:33dados aqui agora então a gente pode
- 00:52:36partir pro nosso aplicativo então a
- 00:52:38gente criou o nosso backend criando o
- 00:52:40nosso api com nodejs comunicando com o
- 00:52:43Gemini aí e agora falta o nosso
- 00:52:45aplicativo então para isso ó agora a
- 00:52:47gente pode começar a criar aí o nosso
- 00:52:49aplicativo usando Expo nessa aula aqui a
- 00:52:52gente vai ter duas aulas né Essa criando
- 00:52:54api e a aula criando aí o aplicativo
- 00:52:57final né então agora então a gente pode
- 00:52:59partir pro nosso aplicativo para criar a
- 00:53:01parte mobile né criar o nosso aplicativo
- 00:53:03e consumir aí o nosso a nossa api que a
- 00:53:06gente desenvolveu então para isso a
- 00:53:07gente vai fazer na nossa segunda aula
- 00:53:09que é criando focado na parte mobile né
- 00:53:11usando a nossa ap que a gente criou
- 00:53:13então a gente fez a parte do backend que
- 00:53:15era criar nossa payon node consumir aí o
- 00:53:17gem ai com retornar os dados aí da forma
- 00:53:20que a gente queria o prompt que a gente
- 00:53:21viu que a gente pode manipular o prompt
- 00:53:23E pedir a forma de retorno também que
- 00:53:25ficou sensacional então a agora antes de
- 00:53:27você ir pra segunda aula posto aí marca
- 00:53:29a gente lá no Instagram @su jeito
- 00:53:31programador quero ver você lá no Stories
- 00:53:33fazendo Esse projeto aí e lembrando né
- 00:53:35recado importante se você quer aprender
- 00:53:38desde o zero a desenvolver aplicativos
- 00:53:39sites sair desde o zero pronto pro
- 00:53:42mercado aí criando projetos
- 00:53:43profissionais O link tá aqui embaixo e
- 00:53:45Aproveita porque as vagas são limitadas
- 00:53:47pra gente atender todo mundo para eu dar
- 00:53:49um suporte porque você não entra só num
- 00:53:51curso para só fazer mais um tutorial
- 00:53:53mais um curso não é para você realmente
- 00:53:54aprender e sair pronto pro mercado ter
- 00:53:56acesso à comunidade todas as aulas de
- 00:53:58vaga de freelan Então você quer
- 00:54:01realmente aprender a desenvolver
- 00:54:02aplicativo site sistemas web passo a
- 00:54:05passo sair pronto pro mercado O link tá
- 00:54:07aqui embaixo então te vejo na próxima
- 00:54:09aula se inscreve aqui no canal para você
- 00:54:11não perder e posta lá como é que tá o
- 00:54:13seu projeto então te beijo aí na próxima
- 00:54:14aula
- React Native
- TypeScript
- API
- Gemini AI
- Fastify
- Node.js
- Inteligencia Artificial
- Desarrollo móvil
- Dietas personalizadas
- Backend