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.
マインドマップ
ビデオQ&A
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