├── images ├── logo.jpeg ├── banner.png ├── dietas.png ├── favicon.ico ├── Consulta.png ├── exercicio.png ├── fichatreino.png ├── Responsividade.png ├── tela azul note.jpg ├── tutorialApi │ ├── 01.png │ ├── 02.png │ ├── 03.png │ ├── 04.png │ ├── 05.png │ ├── 06.png │ └── 07.png └── Fichatreinomodal.png ├── views ├── dietas.html ├── treinos.html ├── exercicios.html ├── consulta.html └── help.html ├── js ├── exercicios.js ├── app.js └── dados.js ├── index.html ├── ReadMe.md └── css └── styles.css /images/logo.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/logo.jpeg -------------------------------------------------------------------------------- /images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/banner.png -------------------------------------------------------------------------------- /images/dietas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/dietas.png -------------------------------------------------------------------------------- /images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/favicon.ico -------------------------------------------------------------------------------- /images/Consulta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/Consulta.png -------------------------------------------------------------------------------- /images/exercicio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/exercicio.png -------------------------------------------------------------------------------- /images/fichatreino.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/fichatreino.png -------------------------------------------------------------------------------- /images/Responsividade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/Responsividade.png -------------------------------------------------------------------------------- /images/tela azul note.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/tela azul note.jpg -------------------------------------------------------------------------------- /images/tutorialApi/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/tutorialApi/01.png -------------------------------------------------------------------------------- /images/tutorialApi/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/tutorialApi/02.png -------------------------------------------------------------------------------- /images/tutorialApi/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/tutorialApi/03.png -------------------------------------------------------------------------------- /images/tutorialApi/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/tutorialApi/04.png -------------------------------------------------------------------------------- /images/tutorialApi/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/tutorialApi/05.png -------------------------------------------------------------------------------- /images/tutorialApi/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/tutorialApi/06.png -------------------------------------------------------------------------------- /images/tutorialApi/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/tutorialApi/07.png -------------------------------------------------------------------------------- /images/Fichatreinomodal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cesarka1/NuTrainerAI/HEAD/images/Fichatreinomodal.png -------------------------------------------------------------------------------- /views/dietas.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dicas Gerais - NuTrainerAi 7 | 8 | 13 | 14 | 15 | 26 | 27 |
28 |
29 |

Dietas

30 |
31 |
32 |
33 |

Pesquise por dietas

34 |
35 | 41 | 42 |
43 |

44 |
45 |

46 |
47 | 54 | 58 |
59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /views/treinos.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dicas Gerais - NuTrainerAi 7 | 8 | 13 | 14 | 15 | 26 | 27 |
28 |
29 |

Fichas de Treino

30 |
31 |
32 |
33 |

Pesquise por treinos

34 |
35 | 41 | 42 |
43 |

44 |
45 |
46 |
47 | 54 | 58 |
59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /views/exercicios.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Exercícios - NuTrainerAi 7 | 8 | 9 | 10 | 11 | 22 | 23 |
24 |
25 |

Exercícios

26 |
27 |
28 |
29 |

Pesquise por exercícios

30 |
31 | 32 | 33 |
34 |

35 |
36 |
37 | 38 |
39 | 46 | 50 |
51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /views/consulta.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Consulta de Treinos e Dietas - NuTrainerAi 7 | 8 | 13 | 14 | 15 | 26 | 27 |
28 |
29 |

Consulta com o NuTrainerAi

30 |

(Ainda não implementado devido ao regulamento da Imerssão, será implementado após as avaliações da imerssão)

31 |
32 |
33 |
34 |

Preencha suas informações

35 |
36 | 37 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 55 | 59 |
60 |
61 | 62 | 63 |
64 |
65 | 66 | 67 |
68 |
69 | 70 | 71 |
72 |
73 | 74 |
75 |
76 |
77 |
78 | 82 |
83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /views/help.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | NuTrainerAi - Aplicação de Treinos e Dietas 7 | 8 | 9 | 10 | 11 | 21 | 22 |
23 |
24 |

Ajuda

25 |
26 |
27 |
28 |

Como obter a API Key do Gemini:

29 |

Para utilizar o seu sistema com a inteligência artificial do Gemini, é necessário gerar uma "chave de API". Esta chave possibilita a conexão do sistema com o Gemini.

30 |
31 | 32 |
33 |

Passo 1: Criar uma Conta no Gemini

34 |

Antes de gerar a chave de API, siga os passos abaixo para acessar o Gemini com sua conta Google:

35 |
    36 |
  1. Acesse o site oficial do Gemini aqui.
  2. 37 |
  3. Faça login usando sua conta Google.
  4. 38 | 39 |
40 |
41 | 42 |
43 |

Passo 2: Gerar a Chave de API do Gemini

44 |

Após fazer login, siga os passos abaixo para gerar sua chave de API:

45 |
    46 |
  1. Acesse a seção de geração de chave de API clicando aqui.
  2. 47 |
  3. Clique no botão "Gerar Nova Chave de API".
  4. 48 | 49 | 50 | 51 | 52 | 53 |
  5. Copie a chave gerada e guarde-a em um local seguro.
  6. 54 | 55 | 56 |
57 |
58 | 59 |
60 |

Passo 3: Usar a Chave de API do Gemini

61 |

Com sua chave de API em mãos, você pode utilizá-la para fazer consultas no sistema. Veja abaixo um exemplo de como fazer uma requisição usando a chave:

62 | 63 |
64 | 65 |
66 |

Considerações Finais

67 |

O uso do Gemini API é gratuito, porém é importante tomar cuidado com o uso excessivo. Não me responsabilizo por quaisquer cobranças posteriores que possam ocorrer devido ao uso além dos limites gratuitos.

68 |

Certifique-se de manter sua chave de API em segurança, pois ela concede acesso aos seus dados e perfil no Gemini. Para mais detalhes, consulte a documentação oficial do Gemini.

69 |
70 | 71 | 72 |
73 | 77 |
78 | 79 | 80 | -------------------------------------------------------------------------------- /js/exercicios.js: -------------------------------------------------------------------------------- 1 | function criarElementoResultadoExercicio(exercicio) { 2 | // Cria um elemento HTML para exibir as informações de um exercício. 3 | // Retorna uma string HTML formatada. 4 | 5 | return ` 6 |
7 |

8 | 11 | ${exercicio.Nome} 12 |

13 |
14 | ${ 15 | exercicio.Link 16 | ? `${exercicio.Nome}` 17 | : "" 18 | }
19 |
20 | ${ 21 | exercicio.MusculoTrabalhado 22 | ? `

Músculo Trabalhado: ${exercicio.MusculoTrabalhado}

` 23 | : "" 24 | } ${ 25 | exercicio.Equipamento 26 | ? `

Equipamento: ${exercicio.Equipamento}

` 27 | : "" 28 | } 31 | Mais informações 32 | 33 |
34 |
35 | `; 36 | } 37 | 38 | function gerarResultadosExercicios(resultados) { 39 | let resultadosHTML = ""; 40 | 41 | // Gerando o HTML para cada exercício 42 | 43 | resultados.forEach((exercicio) => { 44 | resultadosHTML += criarElementoResultadoExercicio(exercicio); 45 | }); 46 | 47 | // Inserindo o HTML gerado na seção 48 | document.getElementById("resultados-exercicios").innerHTML = resultadosHTML; 49 | 50 | // Adiciona evento de clique nos links "Mais informações" 51 | const maisInformacoesLinks = document.querySelectorAll(".mais-informacoes"); 52 | maisInformacoesLinks.forEach((link) => { 53 | link.addEventListener("click", (e) => { 54 | e.preventDefault(); 55 | const titulo = e.target.getAttribute("data-titulo"); 56 | const conteudo = JSON.parse(e.target.getAttribute("data-conteudo")); // Converte de volta para objeto 57 | abrirModalExercicio(titulo, conteudo); 58 | }); 59 | }); 60 | } 61 | 62 | function abrirModalExercicio(titulo, conteudo) { 63 | // Formata o conteúdo do modal 64 | let conteudoHTML = ` 65 |
66 |

${titulo}

${ 67 | conteudo.Link 68 | ? `${conteudo.Nome}` 69 | : "" 70 | }
71 |
72 | ${ 73 | conteudo.Descricao 74 | ? `

Descrição: ${conteudo.Descricao}

` 75 | : "" 76 | } 77 | ${ 78 | conteudo.MusculoTrabalhado 79 | ? `

Músculo Trabalhado: ${conteudo.MusculoTrabalhado}

` 80 | : "" 81 | } 82 | ${ 83 | conteudo.Equipamento 84 | ? `

Equipamento: ${conteudo.Equipamento}

` 85 | : "" 86 | } 87 |
88 |
`; 89 | 90 | document.getElementById("modalConteudo").innerHTML = conteudoHTML; 91 | document.getElementById("myModal").style.display = "block"; 92 | } 93 | 94 | // Fecha o modal quando o usuário clica no "x" 95 | document.querySelector(".close").onclick = function () { 96 | document.getElementById("myModal").style.display = "none"; 97 | }; 98 | 99 | // Fecha o modal quando o usuário clica fora do modal 100 | window.onclick = function (event) { 101 | if (event.target == document.getElementById("myModal")) { 102 | document.getElementById("myModal").style.display = "none"; 103 | } 104 | }; 105 | 106 | function pesquisar() { 107 | const input = document.getElementById("searchInput").value.toLowerCase(); 108 | let resultadosFiltrados; 109 | 110 | if (input === "") { 111 | resultadosFiltrados = exercicios; // Mostra todos os exercícios se o campo estiver vazio 112 | } else { 113 | // Filtra com base em todos os campos 114 | resultadosFiltrados = exercicios.filter( 115 | (exercicio) => 116 | exercicio.Nome.toLowerCase().includes(input) || 117 | (exercicio.Descricao && 118 | exercicio.Descricao.toLowerCase().includes(input)) || 119 | (exercicio.MusculoTrabalhado && 120 | exercicio.MusculoTrabalhado.toLowerCase().includes(input)) || 121 | (exercicio.Equipamento && 122 | exercicio.Equipamento.toLowerCase().includes(input)) 123 | ); 124 | } 125 | 126 | gerarResultadosExercicios(resultadosFiltrados); 127 | } 128 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | NuTrainerAi - Aplicação de Treinos e Dietas 7 | 8 | 9 | 10 | 11 | 22 | 23 |
24 |
25 |

Bem-vindo ao NuTrainerAi

26 |
27 |
28 |
29 |

Sobre o NuTrainerAi

30 |

31 | O NuTrainerAi é uma aplicação dedicada a fornecer dicas e consultas 32 | sobre treinos e dietas personalizadas. Aqui, você pode encontrar 33 | informações valiosas para melhorar seu desempenho e saúde. 34 |

35 | 36 |
37 | 38 |
39 |

Funcionalidades Principais

40 | 41 |

42 | Visualização de Exercícios com Animações: A 43 | plataforma oferece animações que demonstram a execução correta de 44 | cada exercício. Isso ajuda os usuários a entenderem a técnica 45 | adequada, reduzindo o risco de lesões e melhorando a eficácia dos 46 | treinos. 47 |

48 | 49 |

50 | Treinos Personalizados: O NuTrainerAi oferece 51 | fichas de treino adaptadas aos diferentes níveis de experiência, 52 | desde iniciantes até avançados. Isso garante que cada usuário tenha 53 | acesso a um programa que se alinha com suas capacidades e objetivos, 54 | promovendo um progresso contínuo e motivador. 55 |

56 | 57 |

58 | Dietas Adaptativas: Com planos alimentares que se 59 | ajustam às necessidades individuais, a plataforma não apenas ajuda 60 | os usuários a alcançarem seus objetivos, mas também a entenderem a 61 | importância de uma nutrição equilibrada. Esta abordagem contribui 62 | para um estilo de vida saudável e sustentável. 63 |

64 | 65 |

NÃO IMPLEMENTADO DENTRO DA IMERSSÃO, SERÁ COLOCADO NO FUTURO:

66 |

67 | Consultoria Online com IA: Um dos grandes 68 | diferenciais do NuTrainerAi é a consultoria online gratuita, que 69 | utiliza a inteligência artificial Gemini da Google. Essa 70 | funcionalidade proporciona respostas personalizadas a dúvidas 71 | específicas, considerando fatores como idade, sexo, altura e peso. 72 | Isso não só enriquece a experiência do usuário, mas também garante 73 | que cada interação seja relevante e útil. 74 |

75 |
76 | 77 |
78 |

Experiência do Usuário

79 | 80 |

81 | A interface do NuTrainerAi foi projetada para ser intuitiva e 82 | acessível, permitindo que os usuários naveguem facilmente entre as 83 | funcionalidades. Além disso, a disponibilização de materiais 84 | educativos complementa a experiência, oferecendo informações 85 | valiosas sobre saúde e fitness. 86 |

87 |
88 | 89 |
90 |

Conclusão

91 | 92 |

93 | O NuTrainerAi é mais do que uma simples plataforma de treino; é um 94 | parceiro na jornada de saúde e bem-estar. Com uma proposta 95 | inovadora, funcionalidades criativas e um compromisso com a 96 | eficácia, o NuTrainerAi está preparado para fazer a diferença na 97 | vida de cada usuário, promovendo uma abordagem integrada e 98 | personalizada ao fitness. 99 |

100 |
101 |
102 | 103 | 107 |
108 | 109 | 110 | -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | # NuTrainerAI 2 | 3 | O **NuTrainAI** é um sistema inovador que busca auxiliar os usuários no mundo fitness, oferecendo uma lista de exercícios com animações de execução, fichas de treino categorizadas por níveis e sugestões de dietas personalizadas de acordo com os objetivos do usuário. Um dos principais diferenciais do NuTrainAI é a integração com a inteligência do Gemini da Google, permitindo consultorias personalizadas e respostas a dúvidas com base nas características individuais, como sexo, idade, peso e altura. 4 | 5 | 6 | Disponivel em: https://cesarka1.github.io/NuTrainerAI/ 7 | 8 | logo gemini 9 | 10 | 11 | 12 | ## Tecnologias Utilizadas 13 |
14 | logo html 15 | logo css 16 | logo js 17 | logo gemini 18 | 19 |
20 | 21 | ## Características e Funcionalidades 22 | **Interações e Interfaces:** 23 | - **Lista de Exercícios:** Acesso a uma variedade de exercícios com animações que demonstram a execução correta. 24 | ![alt text](images/exercicio.png) 25 | 26 | - **Fichas de Treino:** Fichas de treino organizadas por níveis de dificuldade. 27 | ![alt text](images/fichatreino.png) 28 | ![alt text](images/Fichatreinomodal.png) 29 | 30 | - **Sugestões de Dieta:** Planos de dieta adaptados aos objetivos do usuário. 31 | ![alt text](images/dietas.png) 32 | 33 | ## Implementação futura Pós Imerssão 34 | - **Consultoria Personalizada:** Interação com a inteligência do Gemini para tirar dúvidas e oferecer recomendações personalizadas.(Ainda não está funcionado) 35 | ![alt text](images/Consulta.png) 36 | 37 | 38 | 39 | ## Motivação 40 | A escolha deste tema surgiu do meu amor pelo esporte, especialmente pela musculação, e pela importância de cuidar da saúde alimentar. Com o NuTrainAI, desejo incentivar outras pessoas a se envolverem com o esporte, especialmente aquelas que podem hesitar em começar por acharem difícil ou terem vergonha de não saberem executar os exercícios corretamente. 41 | 42 | ## Processo de Desenvolvimento 43 | 44 | O desenvolvimento do **NuTrainAI** começou com o objetivo de aprimorar minhas habilidades em front-end, que estavam enferrujadas e nunca foram meu forte. Durante essa jornada, enfrentei diversos desafios, especialmente em relação à estilização das páginas. Questões como alinhamento de elementos, tamanhos excessivos de objetos e outros detalhes de design se tornaram obstáculos frequentes. No entanto, com o auxílio das aulas da Imersão da Alura e o uso do Gemini como ferramenta de consulta, consegui superar essas dificuldades e aprender de forma prática. 45 | 46 | Após a fase inicial, quando a ideia começou a ganhar forma e a primeira tela estava sendo criada, essa sendo uma que agrupava treinos e dietas, percebi que poderia ir além. Decidi mergulhar de cabeça no projeto e me desafiar ainda mais. Assim, optei por dividir a interface em três telas: uma para todos os exercícios, outra para as fichas de treino que utilizavam a lista de exercícios já criada, e uma terceira seção dedicada às dietas. 47 | 48 | Felizmente, após muitas horas ajustando CSS, HTML e adicionando uma pitada de JavaScript para garantir que tudo funcionasse corretamente, consegui implementar essa estrutura com sucesso. 49 | 50 | No entanto, ao chegar a esse ponto, refleti: "Se este é um sistema de consulta de treinos, exercícios e dietas, ninguém vai acessá-lo com frequência pelo PC." 🤔 Foi então que percebi a necessidade de desenvolver uma interface responsiva. Iniciei uma intensa jornada, ao ponto de precisar virar a noite (não façam isso crianças, isso não é saudavel kkkkk) , para garantir que o site fosse eficiente e adaptável a dispositivos móveis, permitindo consultas rápidas de exercícios e visualizações das execuções em qualquer lugar. 51 | 52 | ![alt text](images/Responsividade.png) 53 | 54 | 55 | Chegou ao ponto de eu estar tão imerso no projeto que como dizem no meio fitnes eu fui até a falha, mas nesse caso do meu notebook, que enquanto eu codava e tava com mil abas abertas, falhou e deu tela azul KKKKKKKK 😅 56 | 57 | ![alt text]() 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | ## Contribua 68 | 1. Clone o repositório. 69 | 2. Crie uma branch para sua feature. 70 | 3. Faça alterações. 71 | 4. Envie um pull request. 72 | 73 | Agradeço seu apoio ao NuTrainAI. Juntos, podemos promover um estilo de vida saudável! 74 | 75 | ### Autor e Links 76 |
77 | 78 | 79 |
80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /js/app.js: -------------------------------------------------------------------------------- 1 | function criarElementoResultado( 2 | titulo, 3 | descricao, 4 | grupoMuscular, 5 | nivel, 6 | objetivo, 7 | link, 8 | exerciciosOuPratos 9 | ) { 10 | return ` 11 |
12 |

13 | 16 | ${titulo} 17 | 18 |

19 |

${descricao}

20 | ${ 21 | grupoMuscular 22 | ? `

Grupo Muscular: ${grupoMuscular}

` 23 | : "" 24 | } 25 | ${nivel ? `

Nível: ${nivel}

` : ""} 26 | ${objetivo ? `

Objetivo: ${objetivo}

` : ""} 27 | 30 | Mais informações 31 | 32 |
33 | `; 34 | } 35 | 36 | function gerarResultadosTreinos(resultados) { 37 | let resultadosHTML = ""; 38 | 39 | resultados.forEach((item) => { 40 | resultadosHTML += criarElementoResultado( 41 | item.Titulo, 42 | item.Descricao, 43 | item.GrupoMuscular, 44 | item.Nivel, 45 | "", // Objetivo não se aplica a treinos 46 | "#", // Link placeholder - substituir por um link real 47 | item.Exercicios // Passa o array de exercícios 48 | ); 49 | }); 50 | 51 | // Inserindo o HTML gerado na seção 52 | document.getElementById("resultados").innerHTML = resultadosHTML; 53 | 54 | // Adiciona evento de clique nos links "Mais informações" 55 | const maisInformacoesLinks = document.querySelectorAll(".mais-informacoes"); 56 | maisInformacoesLinks.forEach((link) => { 57 | link.addEventListener("click", (e) => { 58 | e.preventDefault(); 59 | const titulo = e.target.getAttribute("data-titulo"); 60 | const conteudo = JSON.parse(e.target.getAttribute("data-conteudo")); // Converte de volta para objeto 61 | abrirModal(titulo, conteudo); 62 | }); 63 | }); 64 | } 65 | 66 | function gerarResultadosDietas(resultados) { 67 | let resultadosHTML = ""; 68 | 69 | resultados.forEach((item) => { 70 | resultadosHTML += criarElementoResultado( 71 | item.Titulo, 72 | item.Descricao, 73 | "", // Grupo Muscular não se aplica a dietas 74 | "", // Nível não se aplica a dietas 75 | item.Objetivo, 76 | "#", // Link placeholder - substituir por um link real 77 | item.Refeicoes // Passa o array de refeições 78 | ); 79 | }); 80 | 81 | // Inserindo o HTML gerado na seção 82 | document.getElementById("resultados").innerHTML = resultadosHTML; 83 | 84 | // Adiciona evento de clique nos links "Mais informações" 85 | const maisInformacoesLinks = document.querySelectorAll(".mais-informacoes"); 86 | maisInformacoesLinks.forEach((link) => { 87 | link.addEventListener("click", (e) => { 88 | e.preventDefault(); 89 | const titulo = e.target.getAttribute("data-titulo"); 90 | const conteudo = JSON.parse(e.target.getAttribute("data-conteudo")); // Converte de volta para objeto 91 | abrirModal(titulo, conteudo); 92 | }); 93 | }); 94 | } 95 | 96 | function abrirModal(titulo, conteudo) { 97 | document.getElementById("modalTitulo").innerText = titulo; 98 | 99 | // Formata o conteúdo do modal 100 | let conteudoHTML = '
'; 101 | conteudo.forEach((item) => { 102 | conteudoHTML += `
103 | ${item.Nome}
${ 104 | item.Link 105 | ? `${item.Nome}` 106 | : "" 107 | }
108 |
109 | ${ 110 | item.Series && 111 | `

Series: ${item.Series}

` 112 | } 113 | ${ 114 | item.Repeticoes && 115 | `

Repeticoes: ${item.Repeticoes}

` 116 | } 117 | ${ 118 | item.Descanso && 119 | `

Descanso: ${item.Descanso}

` 120 | } 121 | ${ 122 | item.Equipamento && 123 | `

Equipamento: ${item.Equipamento}

` 124 | } 125 | 126 | ${ 127 | item.Alimentos && 128 | `

Alimentos: ${item.Alimentos}

` 129 | } 130 | ${ 131 | item.Calorias && 132 | `

Calorias: ${item.Calorias}

` 133 | } 134 | ${ 135 | item.Macros && 136 | `

Macros: 137 | Carboidratos: ${item.Macros.carboidratos} 138 | Proteinas: ${item.Macros.proteinas} 139 | Gorduras: ${item.Macros.gorduras} 140 |

` 141 | } 142 |
143 | 144 |
145 | `; 146 | }); 147 | conteudoHTML += "
"; 148 | 149 | document.getElementById("modalConteudo").innerHTML = conteudoHTML; 150 | document.getElementById("myModal").style.display = "block"; 151 | } 152 | 153 | // Fecha o modal quando o usuário clica no "x" 154 | document.querySelector(".close").onclick = function () { 155 | document.getElementById("myModal").style.display = "none"; 156 | }; 157 | 158 | // Fecha o modal quando o usuário clica fora do modal 159 | window.onclick = function (event) { 160 | if (event.target == document.getElementById("myModal")) { 161 | document.getElementById("myModal").style.display = "none"; 162 | } 163 | }; 164 | 165 | function filtroTreinos() { 166 | const input = document.getElementById("searchInput").value.toLowerCase(); 167 | let resultadosFiltrados = []; 168 | resultadosFiltrados = treinos.filter( 169 | (treino) => 170 | treino.Titulo.toLowerCase().includes(input) || 171 | treino.Descricao.toLowerCase().includes(input) || 172 | (treino.GrupoMuscular && 173 | treino.GrupoMuscular.toLowerCase().includes(input)) || 174 | (treino.Nivel && treino.Nivel.toLowerCase().includes(input)) 175 | ); 176 | gerarResultadosTreinos(resultadosFiltrados); 177 | } 178 | 179 | function filtroDietas() { 180 | const input = document.getElementById("searchInput").value.toLowerCase(); 181 | let resultadosFiltrados = []; 182 | resultadosFiltrados = dietas.filter( 183 | (dieta) => 184 | dieta.Titulo.toLowerCase().includes(input) || 185 | dieta.Descricao.toLowerCase().includes(input) || 186 | (dieta.Objetivo && dieta.Objetivo.toLowerCase().includes(input)) 187 | ); 188 | 189 | gerarResultadosDietas(resultadosFiltrados); 190 | } 191 | -------------------------------------------------------------------------------- /css/styles.css: -------------------------------------------------------------------------------- 1 | /* styles.css */ 2 | 3 | /* Importa a fonte Chakra Petch do Google Fonts */ 4 | @import url("https://fonts.googleapis.com/css2?family=Chakra+Petch:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"); 5 | 6 | 7 | 8 | /* Estiliza o corpo da página */ 9 | body { 10 | font-family: "Chakra Petch", sans-serif; 11 | background-color: #dbf3eb; /* Cor de fundo */ 12 | margin: 0; 13 | padding: 0; 14 | } 15 | 16 | /* Sidebar */ 17 | .sidebar { 18 | width: 220px; /* Aumentado para melhor espaçamento */ 19 | background-color: #30475e; 20 | color: white; 21 | padding: 20px; 22 | position: fixed; 23 | height: 100%; 24 | transition: width 0.3s; /* Transição suave para a sidebar */ 25 | } 26 | 27 | .sidebar h2 { 28 | text-align: center; 29 | } 30 | 31 | .sidebar ul { 32 | list-style-type: none; 33 | padding: 0; 34 | } 35 | 36 | .sidebar ul li { 37 | margin: 10px 0; 38 | } 39 | 40 | .sidebar ul li a { 41 | color: white; 42 | text-decoration: none; 43 | } 44 | 45 | /* Estiliza a seção principal */ 46 | .main-content { 47 | margin-left: 240px; /* Ajustado para o novo tamanho da sidebar */ 48 | padding: 20px; 49 | transition: margin-left 0.3s; /* Transição suave para o conteúdo principal */ 50 | } 51 | 52 | /* Adicionando espaçamento entre a sidebar e os componentes */ 53 | .main-content > header, 54 | .main-content > main, 55 | .main-content > footer { 56 | margin-left: 20px; /* Espaço entre a sidebar e os componentes */ 57 | } 58 | 59 | .about { 60 | body { 61 | font-family: Arial, sans-serif; 62 | line-height: 1.6; 63 | margin: 20px; 64 | background-color: #f4f4f4; 65 | text-align: center; 66 | justify-content: flex-start; 67 | align-items: center; 68 | } 69 | h1, 70 | h2 { 71 | color: #333; 72 | } 73 | h1 { 74 | text-align: center; 75 | } 76 | section { 77 | background: #fff; 78 | padding: 20px; 79 | margin: 10px 0; 80 | border-radius: 5px; 81 | box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); 82 | } 83 | } 84 | 85 | /* Estiliza os títulos h1 */ 86 | h1 { 87 | font-size: 4rem; 88 | color: #222831; 89 | text-align: center; 90 | } 91 | 92 | /* Estiliza os inputs e botões */ 93 | input[type="text"], 94 | input[type="number"], 95 | select { 96 | width: calc(100% - 22px); 97 | padding: 10px; 98 | margin-bottom: 15px; /* Aumentado para mais espaço */ 99 | border: 1px solid #ced4da; /* Borda padrão */ 100 | border-radius: 4px; 101 | } 102 | 103 | section { 104 | display: flex; /* Usa Flexbox para layout */ 105 | flex-direction: column; /* Alinha os itens na vertical */ 106 | align-items: center; /* Centraliza os itens horizontalmente */ 107 | margin-bottom: 3rem; /* Espaçamento abaixo de cada seção */ 108 | justify-content: center; 109 | } 110 | 111 | .search-container { 112 | display: flex; /* Usa Flexbox para layout */ 113 | flex-direction: column; /* Alinha os itens na vertical */ 114 | align-items: center; /* Centraliza os itens horizontalmente */ 115 | width: 100%; /* Ajuste a largura do contêiner */ 116 | max-width: 30rem; /* Define uma largura máxima para o contêiner */ 117 | margin: 0 auto; /* Centraliza o contêiner */ 118 | } 119 | 120 | section button { 121 | padding: 0.8rem 1.2rem; /* Espaçamento interno do botão */ 122 | border: none; /* Remove a borda padrão */ 123 | border-radius: 1.5rem; /* Borda arredondada */ 124 | background-color: #30475e; /* Cor de fundo do botão */ 125 | color: #f5f7f8; /* Cor do texto do botão */ 126 | font-size: 1rem; /* Tamanho da fonte */ 127 | cursor: pointer; /* Muda o cursor para indicar que é clicável */ 128 | } 129 | 130 | button:hover { 131 | background-color: #222831; /* Cor ao passar o mouse */ 132 | } 133 | 134 | .results { 135 | margin-top: 20px; 136 | } 137 | 138 | /* Rodapé */ 139 | footer { 140 | text-align: center; 141 | margin-top: 20px; 142 | color: #45474b; 143 | padding: 10px 0; /* Espaço no topo e na base do rodapé */ 144 | } 145 | 146 | /* Estilo para os campos 2x2 */ 147 | .fields-grid { 148 | display: grid; 149 | grid-template-columns: repeat(2, 1fr); /* 2 colunas */ 150 | gap: 20px; /* Espaçamento entre os campos */ 151 | margin-bottom: 20px; /* Espaço abaixo da grade */ 152 | } 153 | 154 | .item-resultado { 155 | background: #ffffff; 156 | border-radius: 0.4rem; /* Borda arredondada */ 157 | padding: 0.5rem; /* Reduz o espaçamento interno */ 158 | margin-bottom: 0.5rem; /* Reduz o espaçamento abaixo dos itens */ 159 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Sombra leve */ 160 | display: flex; 161 | flex-direction: column; /* Alinha os itens verticalmente */ 162 | justify-content: flex-start; /* Alinha os itens ao início */ 163 | 164 | width: 30%; 165 | .h2 { 166 | text-align: center; 167 | } 168 | 169 | .imagem { 170 | width: 70%; /* Define a largura da imagem */ 171 | margin-left: 15%; 172 | } 173 | .texto { 174 | flex: 1; /* Ocupa o espaço restante */ 175 | } 176 | } 177 | 178 | .item-resultado .texto { 179 | margin-top: 0.5rem; /* Espaçamento entre o título e o texto */ 180 | } 181 | 182 | .item-resultado h2 { 183 | font-size: 1.5rem; /* Tamanho da fonte */ 184 | color: #222831; /* Cor do texto */ 185 | } 186 | 187 | .item-resultado a { 188 | text-decoration: none; /* Remove o sublinhado padrão dos links */ 189 | color: #30475e; /* Cor do texto dos links */ 190 | } 191 | 192 | .item-resultado a:hover { 193 | text-decoration: underline; /* Adiciona sublinhado ao passar o mouse */ 194 | } 195 | 196 | .item-Modal { 197 | background: #ffffff; 198 | border-radius: 0.4rem; /* Borda arredondada */ 199 | padding: 0.5rem; /* Reduz o espaçamento interno */ 200 | margin-bottom: 0.5rem; /* Reduz o espaçamento abaixo dos itens */ 201 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Sombra leve */ 202 | p { 203 | font-size: 20; /* Ocupa o espaço restante */ 204 | } 205 | } 206 | 207 | /* Modal */ 208 | 209 | .modal { 210 | display: none; /* Escondido por padrão */ 211 | position: fixed; /* Fica na tela inteira */ 212 | z-index: 1; /* Fica acima de outros elementos */ 213 | left: 0; 214 | top: 0; 215 | width: 100%; /* Largura total */ 216 | height: 100%; /* Altura total */ 217 | overflow: auto; /* Habilita rolagem se necessário */ 218 | background-color: rgb(0, 0, 0); /* Cor de fundo */ 219 | background-color: rgba(0, 0, 0, 0.4); /* Fundo com transparência */ 220 | } 221 | 222 | .modal-content { 223 | background-color: #dbf3eb; 224 | margin: 5% auto; /* Reduz a margem superior e inferior */ 225 | padding: 10px; /* Reduz o padding */ 226 | border: 1px solid #888; 227 | width: 90%; /* Largura do modal */ 228 | max-width: 1000px; /* Limite máximo da largura */ 229 | } 230 | 231 | .flex-container { 232 | display: flex; 233 | gap: 10px; 234 | padding-left: 10%; 235 | flex-wrap: wrap; 236 | } 237 | 238 | .item-modal { 239 | width: 40%; 240 | .imagem { 241 | width: 70%; /* Define a largura da imagem */ 242 | } 243 | .texto { 244 | flex: 10; /* Ocupa o espaço restante */ 245 | } 246 | } 247 | 248 | .close { 249 | color: #aaa; 250 | float: right; 251 | font-size: 28px; 252 | font-weight: bold; 253 | } 254 | 255 | .close:hover, 256 | .close:focus { 257 | color: black; 258 | text-decoration: none; 259 | cursor: pointer; 260 | } 261 | 262 | /* Responsividade */ 263 | @media (max-width: 768px) { 264 | .sidebar { 265 | width: 90%; /* Reduz a largura da sidebar em dispositivos menores */ 266 | position: relative; 267 | } 268 | 269 | .slidebar-items { 270 | display: flex; 271 | justify-content: center; 272 | flex-direction: row; 273 | 274 | align-items: flex-start; 275 | flex-wrap: wrap; 276 | padding: 20px; 277 | gap: 10px; 278 | 279 | li { 280 | width: 30%; /* Cada item ocupará 20% da largura disponível */ 281 | margin: 10px; 282 | text-align: center; 283 | } 284 | } 285 | .main-content > header, 286 | .main-content > main, 287 | .main-content > footer { 288 | margin-left: 0px; /* Espaço entre a sidebar e os componentes */ 289 | } 290 | 291 | .main-content { 292 | margin-left: 0px; 293 | } 294 | 295 | h1 { 296 | font-size: 2rem; /* Ajusta o tamanho do título */ 297 | } 298 | 299 | .item-resultado { 300 | flex-direction: column; /* Alinha os itens verticalmente */ 301 | } 302 | 303 | .flex-container { 304 | display: flex; 305 | justify-content: center; 306 | width: 100%; 307 | padding-left: 0%; 308 | .imagem { 309 | margin-left: 0%; 310 | width: 100%; /* Imagem ocupa 100% em dispositivos menores */ 311 | } 312 | .item-resultado { 313 | width: 70%; 314 | } 315 | } 316 | 317 | .item-modal { 318 | width: 80%; 319 | padding-top: 5%; 320 | } 321 | 322 | .exercicios { 323 | width: 80%; 324 | padding-top: 5%; 325 | .imagem { 326 | width: 100%; 327 | margin-left: 0%; 328 | } 329 | } 330 | } 331 | -------------------------------------------------------------------------------- /js/dados.js: -------------------------------------------------------------------------------- 1 | let exercicios = [ 2 | // Exercícios de Peito 3 | { 4 | Nome: "Supino Reto com Barra", 5 | Equipamento: "Barra e Halteres", 6 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2019/08/developpe-couche.gif", 7 | MusculoTrabalhado: "Peito", 8 | Descricao: 9 | "Exercício composto que trabalha o peitoral, ombros e tríceps, realizado em um banco plano com a barra.", 10 | }, 11 | { 12 | Nome: "Supino Inclinado com Halteres", 13 | Equipamento: "Halteres", 14 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/06/developpe-incline-halteres-exercice-musculation.gif", 15 | MusculoTrabalhado: "Peito", 16 | Descricao: 17 | "Trabalha a parte superior do peitoral, proporcionando maior envolvimento dos deltoides frontais.", 18 | }, 19 | { 20 | Nome: "Flexões", 21 | Equipamento: "Peso Corporal", 22 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2020/10/pompe-musculation.gif", 23 | MusculoTrabalhado: "Peito", 24 | Descricao: 25 | "Exercício de peso corporal que fortalece o peitoral, ombros e tríceps, mantendo o corpo reto.", 26 | }, 27 | { 28 | Nome: "Peck Deck", 29 | Equipamento: "Máquina", 30 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/06/pec-deck-butterfly-exercice-musculation.gif", 31 | MusculoTrabalhado: "Peito", 32 | Descricao: 33 | "Exercício de isolamento realizado em máquina para maximizar a contração do músculo peitoral.", 34 | }, 35 | { 36 | Nome: "Crossover", 37 | Equipamento: "Cabos", 38 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/06/ecarte-poulie-vis-a-vis-exercice-musculation-pectoraux.gif", 39 | MusculoTrabalhado: "Peito", 40 | Descricao: 41 | "Movimento de adução do peitoral realizado com polias para definição e fortalecimento.", 42 | }, 43 | { 44 | Nome: "Crucifixo Inclinado com Halteres", 45 | Equipamento: "Halteres", 46 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/09/ecartes-incline-avec-halteres.gif", 47 | MusculoTrabalhado: "Peito", 48 | Descricao: 49 | "Isolamento do peitoral superior com halteres, aumentando a amplitude de movimento e alongamento.", 50 | }, 51 | { 52 | Nome: "Supino Declinado com Barra", 53 | Equipamento: "Barra", 54 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/12/developpe-decline-barre.gif", 55 | MusculoTrabalhado: "Peito", 56 | Descricao: 57 | "Focado na parte inferior do peitoral, realizado em um banco declinado para maximizar o trabalho dessa região.", 58 | }, 59 | { 60 | Nome: "Crucifixo com Cabos", 61 | Equipamento: "Cabos", 62 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/04/ecartes-poulie-vis-a-vis.gif", 63 | MusculoTrabalhado: "Peito", 64 | Descricao: 65 | "Exercício de isolamento realizado em pé com polias, promovendo uma contração muscular intensa do peitoral.", 66 | }, 67 | { 68 | Nome: "Peck Deck com Dropset", 69 | Equipamento: "Máquina", 70 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/06/pec-deck-butterfly-exercice-musculation.gif", 71 | MusculoTrabalhado: "Peito", 72 | Descricao: 73 | "Versão avançada do Peck Deck utilizando dropsets para aumentar a intensidade e hipertrofia muscular.", 74 | }, 75 | 76 | // Exercícios de Pernas 77 | { 78 | Nome: "Agachamento Livre", 79 | Equipamento: "Barra", 80 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/08/air-squat.gif", 81 | MusculoTrabalhado: "Pernas", 82 | Descricao: 83 | "Exercício multiarticular que trabalha quadríceps, glúteos e posteriores de coxa, essencial para força e volume muscular.", 84 | }, 85 | { 86 | Nome: "Leg Press 45º", 87 | Equipamento: "Máquina", 88 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/08/presse-a-cuisses-inclinee.gif", 89 | MusculoTrabalhado: "Pernas", 90 | Descricao: 91 | "Exercício em máquina que foca nos quadríceps, glúteos e posterior de coxa, com variação de carga.", 92 | }, 93 | { 94 | Nome: "Cadeira Extensora", 95 | Equipamento: "Máquina", 96 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/06/leg-extension-exercice-musculation.gif", 97 | MusculoTrabalhado: "Quadríceps", 98 | Descricao: 99 | "Isolamento dos quadríceps, proporcionando máxima ativação durante a extensão dos joelhos.", 100 | }, 101 | { 102 | Nome: "Cadeira Flexora", 103 | Equipamento: "Máquina", 104 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/02/leg-curl-assis-machine.gif", 105 | MusculoTrabalhado: "Posterior de Coxa", 106 | Descricao: 107 | "Trabalha de forma isolada os músculos posteriores da coxa, ideal para definição e força.", 108 | }, 109 | { 110 | Nome: "Elevação de Panturrilha", 111 | Equipamento: "Peso Corporal", 112 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/10/extension-mollets-sur-marche.gif", 113 | MusculoTrabalhado: "Panturrilha", 114 | Descricao: 115 | "Fortalece os músculos da panturrilha, realizado em pé ou sentado, com peso corporal ou carga adicional.", 116 | }, 117 | { 118 | Nome: "Agachamento Livre com Peso", 119 | Equipamento: "Barra", 120 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/11/homme-faisant-un-squat-avec-barre.gif", 121 | MusculoTrabalhado: "Pernas", 122 | Descricao: 123 | "Versão avançada do agachamento, adicionando carga para aumentar a resistência e intensidade.", 124 | }, 125 | { 126 | Nome: "Leg Press com Dropset", 127 | Equipamento: "Máquina", 128 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/08/presse-a-cuisses-inclinee.gif", 129 | MusculoTrabalhado: "Pernas", 130 | Descricao: 131 | "Leg press utilizando a técnica de dropset para maximizar o trabalho dos músculos das pernas.", 132 | }, 133 | { 134 | Nome: "Cadeira Extensora com Isometria", 135 | Equipamento: "Máquina", 136 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/06/leg-extension-exercice-musculation.gif", 137 | MusculoTrabalhado: "Quadríceps", 138 | Descricao: 139 | "Inclui uma pausa isométrica durante a extensão, aumentando a resistência e força muscular nos quadríceps.", 140 | }, 141 | { 142 | Nome: "Cadeira Flexora com Isometria", 143 | Equipamento: "Máquina", 144 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/02/leg-curl-assis-machine.gif", 145 | MusculoTrabalhado: "Posterior de Coxa", 146 | Descricao: 147 | "Exercício com pausa isométrica para aumentar a intensidade e trabalho dos músculos posteriores da coxa.", 148 | }, 149 | 150 | // Exercícios de Costas 151 | { 152 | Nome: "Levantamento Terra com Barra", 153 | Equipamento: "Barra", 154 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/12/souleve-de-terre.gif", 155 | MusculoTrabalhado: "Dorsais", 156 | Descricao: 157 | "Exercício composto que trabalha todo o corpo, especialmente a região lombar, glúteos e posteriores da coxa.", 158 | }, 159 | { 160 | Nome: "Puxada Aberta com Barra", 161 | Equipamento: "Barra", 162 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/11/tirage-vertical-poitrine.gif", 163 | MusculoTrabalhado: "Costas", 164 | Descricao: 165 | "Foca no aumento da largura das costas, principalmente o grande dorsal, com pegada aberta.", 166 | }, 167 | { 168 | Nome: "Remada Curvada com Barra", 169 | Equipamento: "Barra", 170 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/09/rowing-barre.gif", 171 | MusculoTrabalhado: "Costas", 172 | Descricao: 173 | "Exercício que trabalha toda a musculatura das costas, enfatizando os músculos da parte superior e média.", 174 | }, 175 | { 176 | Nome: "Remada Unilateral com Halteres", 177 | Equipamento: "Halteres", 178 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/08/rowing-haltere-un-bras.gif", 179 | MusculoTrabalhado: "Costas", 180 | Descricao: 181 | "Foca no trabalho unilateral dos músculos dorsais, ajudando na simetria e fortalecimento muscular.", 182 | }, 183 | { 184 | Nome: "Pulldown com Triângulo", 185 | Equipamento: "Máquina", 186 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/08/tirage-vertical-prise-serree.gif", 187 | MusculoTrabalhado: "Costas", 188 | Descricao: 189 | "Exercício realizado em máquina para fortalecer os músculos das costas com pegada neutra.", 190 | }, 191 | 192 | // Exercícios de Ombros 193 | { 194 | Nome: "Desenvolvimento com Barra", 195 | Equipamento: "Barra", 196 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/08/developpe-militaire-exercice-musculation.gif", 197 | MusculoTrabalhado: "Ombros", 198 | Descricao: 199 | "Exercício composto para os ombros, realizado com barra, focando no deltoide anterior e medial.", 200 | }, 201 | { 202 | Nome: "Elevação Lateral com Halteres", 203 | Equipamento: "Halteres", 204 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/08/elevations-laterales-exercice-musculation.gif", 205 | MusculoTrabalhado: "Ombros", 206 | Descricao: 207 | "Isolamento para os ombros, especificamente o deltoide medial, melhorando a largura dos ombros.", 208 | }, 209 | { 210 | Nome: "Desenvolvimento com Halteres", 211 | Equipamento: "Halteres", 212 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/02/developpe-epaule-halteres.gif", 213 | MusculoTrabalhado: "Ombros", 214 | Descricao: 215 | "Trabalha toda a musculatura dos ombros, com maior liberdade de movimento do que com a barra.", 216 | }, 217 | { 218 | Nome: "Encolhimento com Halteres", 219 | Equipamento: "Halteres", 220 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/11/shrugs-avec-halteres.gif", 221 | MusculoTrabalhado: "Trapézio", 222 | Descricao: 223 | "Focado no desenvolvimento do trapézio, realizado com elevação dos ombros segurando halteres.", 224 | }, 225 | { 226 | Nome: "Elevação Frontal com Halteres", 227 | Equipamento: "Halteres", 228 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/08/elevations-frontales-exercice-musculation.gif", 229 | MusculoTrabalhado: "Ombros", 230 | Descricao: 231 | "Isola o deltoide anterior, levantando halteres à frente do corpo para fortalecimento.", 232 | }, 233 | 234 | // Exercícios de Tríceps 235 | { 236 | Nome: "Tríceps Testa com Barra", 237 | Equipamento: "Barra", 238 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/09/barre-front.gif", 239 | MusculoTrabalhado: "Tríceps", 240 | Descricao: 241 | "Exercício de isolamento que trabalha o tríceps, realizado deitado e com a barra movimentada em direção à testa.", 242 | }, 243 | { 244 | Nome: "Tríceps Pulley", 245 | Equipamento: "Cabos", 246 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/04/extension-triceps-poulie-haute.gif", 247 | MusculoTrabalhado: "Tríceps", 248 | Descricao: 249 | "Trabalha o tríceps através da extensão do cotovelo, usando polia alta.", 250 | }, 251 | { 252 | Nome: "Tríceps Francês com Halteres", 253 | Equipamento: "Halteres", 254 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/12/extensions-des-triceps-assis-avec-haltere.gif", 255 | MusculoTrabalhado: "Tríceps", 256 | Descricao: 257 | "Exercício de isolamento que foca no tríceps, realizado com halteres, estendendo os braços acima da cabeça.", 258 | }, 259 | { 260 | Nome: "Mergulho em Paralelas", 261 | Equipamento: "Paralelas", 262 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2000/01/dips-pectoraux.gif", 263 | MusculoTrabalhado: "Tríceps", 264 | Descricao: 265 | "Exercício de peso corporal que foca no tríceps, realizado em paralelas, descendo o corpo e empurrando para cima.", 266 | }, 267 | { 268 | Nome: "Tríceps Kickback com Halteres", 269 | Equipamento: "Halteres", 270 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/09/kickback.gif", 271 | MusculoTrabalhado: "Tríceps", 272 | Descricao: 273 | "Isolamento do tríceps realizado com halteres, estendendo o braço para trás enquanto se inclina levemente.", 274 | }, 275 | { 276 | Nome: "Tríceps na Polia Alta", 277 | Equipamento: "Cabos", 278 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/04/extension-triceps-poulie-haute.gif", 279 | MusculoTrabalhado: "Tríceps", 280 | Descricao: 281 | "Exercício que utiliza polia alta para trabalhar o tríceps, estendendo os braços para baixo.", 282 | }, 283 | { 284 | Nome: "Tríceps com Corda na Polia", 285 | Equipamento: "Cabos", 286 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/04/extension-triceps-poulie-haute.gif", 287 | MusculoTrabalhado: "Tríceps", 288 | Descricao: 289 | "Exercício que foca no tríceps, utilizando uma corda na polia para uma maior amplitude de movimento.", 290 | }, 291 | { 292 | Nome: "Rosca Direta com Barra", 293 | Equipamento: "Barra", 294 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/09/curl-barre.gif", 295 | MusculoTrabalhado: "Bíceps", 296 | Descricao: 297 | "Exercício clássico para os bíceps, levantando a barra diretamente para frente do corpo.", 298 | }, 299 | { 300 | Nome: "Rosca Alternada com Halteres", 301 | Equipamento: "Halteres", 302 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/08/curl-biceps-avec-halteres-alterne.gif", 303 | MusculoTrabalhado: "Bíceps", 304 | Descricao: 305 | "Rosca com halteres, alternando os braços para uma melhor simetria e controle muscular.", 306 | }, 307 | { 308 | Nome: "Rosca Concentrada", 309 | Equipamento: "Halteres", 310 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/09/curl-concentre.gif", 311 | MusculoTrabalhado: "Bíceps", 312 | Descricao: 313 | "Exercício de isolamento que foca no pico do bíceps, realizado com o braço apoiado.", 314 | }, 315 | { 316 | Nome: "Rosca Martelo", 317 | Equipamento: "Halteres", 318 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/09/curl-haltere-prise-neutre.gif", 319 | MusculoTrabalhado: "Bíceps", 320 | Descricao: 321 | "Exercício que trabalha os bíceps e o braquial, segurando os halteres com as palmas voltadas uma para a outra.", 322 | }, 323 | { 324 | Nome: "Rosca Scott", 325 | Equipamento: "Máquina ou Barra", 326 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/01/curl-pupitre-machine-prechargee.gif", 327 | MusculoTrabalhado: "Bíceps", 328 | Descricao: 329 | "Isolamento dos bíceps realizado em banco Scott, proporcionando maior foco na contração do músculo.", 330 | }, 331 | { 332 | Nome: "Rosca Inversa com Barra", 333 | Equipamento: "Barra", 334 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2022/04/curl-inverse-barre.gif", 335 | MusculoTrabalhado: "Bíceps", 336 | Descricao: 337 | "Exercício que foca nos músculos do antebraço e bíceps, segurando a barra com as palmas voltadas para baixo.", 338 | }, 339 | { 340 | Nome: "Rosca Concentrada com Halteres", 341 | Equipamento: "Halteres", 342 | Link: "https://www.docteur-fitness.com/wp-content/uploads/2021/09/curl-concentre.gif", 343 | MusculoTrabalhado: "Bíceps", 344 | Descricao: 345 | "Isolamento do bíceps com o braço apoiado, maximizando a contração e o trabalho do músculo.", 346 | }, 347 | ]; 348 | 349 | let treinos = [ 350 | { 351 | Titulo: "Treino de Peito para Iniciantes", 352 | Descricao: 353 | "Treino focado no desenvolvimento dos músculos peitorais para iniciantes.", 354 | GrupoMuscular: "Peito", 355 | Nivel: "Iniciante", 356 | Exercicios: [ 357 | { 358 | Nome: "Supino Reto com Barra", 359 | Series: 3, 360 | Repeticoes: "10-12", 361 | Descanso: 60, 362 | }, 363 | { 364 | Nome: "Supino Inclinado com Halteres", 365 | Series: 3, 366 | Repeticoes: "10-12", 367 | Descanso: 60, 368 | }, 369 | { Nome: "Flexões", Series: 3, Repeticoes: "8-10", Descanso: 60 }, 370 | { Nome: "Peck Deck", Series: 3, Repeticoes: "10-12", Descanso: 60 }, 371 | { Nome: "Crossover", Series: 3, Repeticoes: "10-12", Descanso: 60 }, 372 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 373 | }, 374 | { 375 | Titulo: "Treino de Peito para Intermediários", 376 | Descricao: "Treino avançado para aumento de força e hipertrofia no peito.", 377 | GrupoMuscular: "Peito", 378 | Nivel: "Intermediário", 379 | Exercicios: [ 380 | { 381 | Nome: "Supino Reto com Barra", 382 | Series: 4, 383 | Repeticoes: "8-10", 384 | Descanso: 90, 385 | }, 386 | { 387 | Nome: "Supino Inclinado com Halteres", 388 | Series: 4, 389 | Repeticoes: "8-10", 390 | Descanso: 90, 391 | }, 392 | { 393 | Nome: "Crucifixo Inclinado com Halteres", 394 | Series: 3, 395 | Repeticoes: "10-12", 396 | Descanso: 60, 397 | }, 398 | { Nome: "Peck Deck", Series: 4, Repeticoes: "10-12", Descanso: 60 }, 399 | { Nome: "Crossover", Series: 4, Repeticoes: "10-12", Descanso: 60 }, 400 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 401 | }, 402 | { 403 | Titulo: "Treino de Peito para Avançados", 404 | Descricao: 405 | "Treino intenso para maximizar a hipertrofia e definição dos músculos peitorais.", 406 | GrupoMuscular: "Peito", 407 | Nivel: "Avançado", 408 | Exercicios: [ 409 | { 410 | Nome: "Supino Reto com Barra", 411 | Series: 5, 412 | Repeticoes: "6-8", 413 | Descanso: 120, 414 | }, 415 | { 416 | Nome: "Supino Inclinado com Halteres", 417 | Series: 5, 418 | Repeticoes: "6-8", 419 | Descanso: 120, 420 | }, 421 | { 422 | Nome: "Supino Declinado com Barra", 423 | Series: 4, 424 | Repeticoes: "10-12", 425 | Descanso: 60, 426 | }, 427 | { Nome: "Peck Deck", Series: 4, Repeticoes: "10-12", Descanso: 60 }, 428 | { Nome: "Crossover", Series: 4, Repeticoes: "10-12", Descanso: 60 }, 429 | { 430 | Nome: "Crucifixo com Cabos", 431 | Series: 4, 432 | Repeticoes: "10-12", 433 | Descanso: 60, 434 | }, 435 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 436 | }, 437 | { 438 | Titulo: "Treino de Pernas para Iniciantes", 439 | Descricao: "Treino básico para iniciantes fortalecerem as pernas.", 440 | GrupoMuscular: "Pernas", 441 | Nivel: "Iniciante", 442 | Exercicios: [ 443 | { 444 | Nome: "Agachamento Livre", 445 | Series: 3, 446 | Repeticoes: "12-15", 447 | Descanso: 60, 448 | }, 449 | { Nome: "Leg Press", Series: 3, Repeticoes: "12-15", Descanso: 60 }, 450 | { 451 | Nome: "Cadeira Extensora", 452 | Series: 3, 453 | Repeticoes: "12-15", 454 | Descanso: 60, 455 | }, 456 | { Nome: "Cadeira Flexora", Series: 3, Repeticoes: "12-15", Descanso: 60 }, 457 | { 458 | Nome: "Elevação de Panturrilha", 459 | Series: 3, 460 | Repeticoes: "15-20", 461 | Descanso: 30, 462 | }, 463 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 464 | }, 465 | { 466 | Titulo: "Treino de Pernas para Intermediários", 467 | Descricao: "Treino focado em ganho de força e volume muscular para pernas.", 468 | GrupoMuscular: "Pernas", 469 | Nivel: "Intermediário", 470 | Exercicios: [ 471 | { 472 | Nome: "Agachamento Livre com Peso", 473 | Series: 4, 474 | Repeticoes: "10-12", 475 | Descanso: 90, 476 | }, 477 | { Nome: "Leg Press", Series: 4, Repeticoes: "10-12", Descanso: 90 }, 478 | { 479 | Nome: "Cadeira Extensora", 480 | Series: 4, 481 | Repeticoes: "12-15", 482 | Descanso: 60, 483 | }, 484 | { Nome: "Cadeira Flexora", Series: 4, Repeticoes: "12-15", Descanso: 60 }, 485 | { 486 | Nome: "Elevação de Panturrilha", 487 | Series: 4, 488 | Repeticoes: "15-20", 489 | Descanso: 30, 490 | }, 491 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 492 | }, 493 | { 494 | Titulo: "Treino de Pernas para Avançados", 495 | Descricao: "Treino avançado de pernas para máxima hipertrofia e força.", 496 | GrupoMuscular: "Pernas", 497 | Nivel: "Avançado", 498 | Exercicios: [ 499 | { 500 | Nome: "Agachamento Livre com Peso", 501 | Series: 5, 502 | Repeticoes: "6-8", 503 | Descanso: 120, 504 | }, 505 | { 506 | Nome: "Leg Press com Dropset", 507 | Series: 4, 508 | Repeticoes: "8-10", 509 | Descanso: 60, 510 | }, 511 | { 512 | Nome: "Cadeira Extensora com Isometria", 513 | Series: 4, 514 | Repeticoes: "12-15", 515 | Descanso: 60, 516 | }, 517 | { 518 | Nome: "Cadeira Flexora com Isometria", 519 | Series: 4, 520 | Repeticoes: "12-15", 521 | Descanso: 60, 522 | }, 523 | { 524 | Nome: "Elevação de Panturrilha", 525 | Series: 5, 526 | Repeticoes: "15-20", 527 | Descanso: 30, 528 | }, 529 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 530 | }, 531 | { 532 | Titulo: "Treino de Costas para Iniciantes", 533 | Descricao: 534 | "Treino focado no desenvolvimento dos músculos das costas para iniciantes.", 535 | GrupoMuscular: "Costas", 536 | Nivel: "Iniciante", 537 | Exercicios: [ 538 | { 539 | Nome: "Puxada Aberta com Barra", 540 | Series: 3, 541 | Repeticoes: "10-12", 542 | Descanso: 60, 543 | }, 544 | { 545 | Nome: "Remada Curvada com Barra", 546 | Series: 3, 547 | Repeticoes: "10-12", 548 | Descanso: 60, 549 | }, 550 | { 551 | Nome: "Remada Unilateral com Halteres", 552 | Series: 3, 553 | Repeticoes: "10-12", 554 | Descanso: 60, 555 | }, 556 | { 557 | Nome: "Pulldown com Triângulo", 558 | Series: 3, 559 | Repeticoes: "10-12", 560 | Descanso: 60, 561 | }, 562 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 563 | }, 564 | { 565 | Titulo: "Treino de Costas para Intermediários", 566 | Descricao: "Treino avançado para aumento de força e volume nas costas.", 567 | GrupoMuscular: "Costas", 568 | Nivel: "Intermediário", 569 | Exercicios: [ 570 | { 571 | Nome: "Puxada Aberta com Barra", 572 | Series: 4, 573 | Repeticoes: "8-10", 574 | Descanso: 90, 575 | }, 576 | { 577 | Nome: "Remada Curvada com Barra", 578 | Series: 4, 579 | Repeticoes: "8-10", 580 | Descanso: 90, 581 | }, 582 | { 583 | Nome: "Remada Unilateral com Halteres", 584 | Series: 4, 585 | Repeticoes: "10-12", 586 | Descanso: 60, 587 | }, 588 | { 589 | Nome: "Pulldown com Triângulo", 590 | Series: 4, 591 | Repeticoes: "10-12", 592 | Descanso: 60, 593 | }, 594 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 595 | }, 596 | { 597 | Titulo: "Treino de Costas para Avançados", 598 | Descricao: 599 | "Treino intenso para maximizar a hipertrofia e definição das costas.", 600 | GrupoMuscular: "Costas", 601 | Nivel: "Avançado", 602 | Exercicios: [ 603 | { 604 | Nome: "Puxada Aberta com Barra", 605 | Series: 5, 606 | Repeticoes: "6-8", 607 | Descanso: 120, 608 | }, 609 | { 610 | Nome: "Remada Curvada com Barra", 611 | Series: 5, 612 | Repeticoes: "6-8", 613 | Descanso: 120, 614 | }, 615 | { 616 | Nome: "Remada Unilateral com Halteres", 617 | Series: 4, 618 | Repeticoes: "8-10", 619 | Descanso: 60, 620 | }, 621 | { 622 | Nome: "Pulldown com Triângulo", 623 | Series: 4, 624 | Repeticoes: "10-12", 625 | Descanso: 60, 626 | }, 627 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 628 | }, 629 | { 630 | Titulo: "Treino de Ombros para Iniciantes", 631 | Descricao: "Treino básico para iniciantes fortalecerem os ombros.", 632 | GrupoMuscular: "Ombros", 633 | Nivel: "Iniciante", 634 | Exercicios: [ 635 | { 636 | Nome: "Desenvolvimento com Halteres", 637 | Series: 3, 638 | Repeticoes: "10-12", 639 | Descanso: 60, 640 | }, 641 | { 642 | Nome: "Elevação Lateral com Halteres", 643 | Series: 3, 644 | Repeticoes: "12-15", 645 | Descanso: 60, 646 | }, 647 | { 648 | Nome: "Elevação Frontal com Halteres", 649 | Series: 3, 650 | Repeticoes: "12-15", 651 | Descanso: 60, 652 | }, 653 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 654 | }, 655 | { 656 | Titulo: "Treino de Ombros para Intermediários", 657 | Descricao: "Treino focado em ganho de força e volume muscular para ombros.", 658 | GrupoMuscular: "Ombros", 659 | Nivel: "Intermediário", 660 | Exercicios: [ 661 | { 662 | Nome: "Desenvolvimento com Barra", 663 | Series: 4, 664 | Repeticoes: "8-10", 665 | Descanso: 90, 666 | }, 667 | { 668 | Nome: "Elevação Lateral com Halteres", 669 | Series: 4, 670 | Repeticoes: "10-12", 671 | Descanso: 60, 672 | }, 673 | { 674 | Nome: "Encolhimento com Halteres", 675 | Series: 4, 676 | Repeticoes: "10-12", 677 | Descanso: 60, 678 | }, 679 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 680 | }, 681 | { 682 | Titulo: "Treino de Ombros para Avançados", 683 | Descricao: "Treino avançado de ombros para máxima hipertrofia e força.", 684 | GrupoMuscular: "Ombros", 685 | Nivel: "Avançado", 686 | Exercicios: [ 687 | { 688 | Nome: "Desenvolvimento com Barra", 689 | Series: 5, 690 | Repeticoes: "6-8", 691 | Descanso: 120, 692 | }, 693 | { 694 | Nome: "Elevação Lateral com Halteres", 695 | Series: 5, 696 | Repeticoes: "8-10", 697 | Descanso: 60, 698 | }, 699 | { 700 | Nome: "Elevação Frontal com Halteres", 701 | Series: 4, 702 | Repeticoes: "10-12", 703 | Descanso: 60, 704 | }, 705 | { 706 | Nome: "Encolhimento com Halteres", 707 | Series: 4, 708 | Repeticoes: "10-12", 709 | Descanso: 60, 710 | }, 711 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 712 | }, 713 | { 714 | Titulo: "Treino de Tríceps para Iniciantes", 715 | Descricao: "Treino básico para iniciantes fortalecerem os tríceps.", 716 | GrupoMuscular: "Tríceps", 717 | Nivel: "Iniciante", 718 | Exercicios: [ 719 | { 720 | Nome: "Tríceps Testa com Barra", 721 | Series: 3, 722 | Repeticoes: "10-12", 723 | Descanso: 60, 724 | }, 725 | { Nome: "Tríceps Pulley", Series: 3, Repeticoes: "10-12", Descanso: 60 }, 726 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 727 | }, 728 | { 729 | Titulo: "Treino de Tríceps para Intermediários", 730 | Descricao: 731 | "Treino focado em ganho de força e volume muscular para tríceps.", 732 | GrupoMuscular: "Tríceps", 733 | Nivel: "Intermediário", 734 | Exercicios: [ 735 | { 736 | Nome: "Tríceps Testa com Barra", 737 | Series: 4, 738 | Repeticoes: "8-10", 739 | Descanso: 90, 740 | }, 741 | { Nome: "Tríceps Pulley", Series: 4, Repeticoes: "10-12", Descanso: 60 }, 742 | { 743 | Nome: "Tríceps Francês com Halteres", 744 | Series: 3, 745 | Repeticoes: "10-12", 746 | Descanso: 60, 747 | }, 748 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 749 | }, 750 | { 751 | Titulo: "Treino de Tríceps para Avançados", 752 | Descricao: "Treino intenso para maximizar a hipertrofia dos tríceps.", 753 | GrupoMuscular: "Tríceps", 754 | Nivel: "Avançado", 755 | Exercicios: [ 756 | { 757 | Nome: "Tríceps Testa com Barra", 758 | Series: 5, 759 | Repeticoes: "6-8", 760 | Descanso: 120, 761 | }, 762 | { Nome: "Tríceps Pulley", Series: 5, Repeticoes: "8-10", Descanso: 60 }, 763 | { 764 | Nome: "Tríceps Francês com Halteres", 765 | Series: 4, 766 | Repeticoes: "8-10", 767 | Descanso: 60, 768 | }, 769 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 770 | }, 771 | { 772 | Titulo: "Treino de Bíceps para Iniciantes", 773 | Descricao: "Treino básico para iniciantes fortalecerem os bíceps.", 774 | GrupoMuscular: "Bíceps", 775 | Nivel: "Iniciante", 776 | Exercicios: [ 777 | { 778 | Nome: "Rosca Direta com Barra", 779 | Series: 3, 780 | Repeticoes: "10-12", 781 | Descanso: 60, 782 | }, 783 | { 784 | Nome: "Rosca Alternada com Halteres", 785 | Series: 3, 786 | Repeticoes: "10-12", 787 | Descanso: 60, 788 | }, 789 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 790 | }, 791 | { 792 | Titulo: "Treino de Bíceps para Intermediários", 793 | Descricao: "Treino focado em ganho de força e volume muscular para bíceps.", 794 | GrupoMuscular: "Bíceps", 795 | Nivel: "Intermediário", 796 | Exercicios: [ 797 | { 798 | Nome: "Rosca Direta com Barra", 799 | Series: 4, 800 | Repeticoes: "8-10", 801 | Descanso: 90, 802 | }, 803 | { 804 | Nome: "Rosca Alternada com Halteres", 805 | Series: 4, 806 | Repeticoes: "10-12", 807 | Descanso: 60, 808 | }, 809 | { 810 | Nome: "Rosca Concentrada", 811 | Series: 3, 812 | Repeticoes: "10-12", 813 | Descanso: 60, 814 | }, 815 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 816 | }, 817 | { 818 | Titulo: "Treino de Bíceps para Avançados", 819 | Descricao: "Treino intenso para maximizar a hipertrofia dos bíceps.", 820 | GrupoMuscular: "Bíceps", 821 | Nivel: "Avançado", 822 | Exercicios: [ 823 | { 824 | Nome: "Rosca Direta com Barra", 825 | Series: 5, 826 | Repeticoes: "6-8", 827 | Descanso: 120, 828 | }, 829 | { 830 | Nome: "Rosca Alternada com Halteres", 831 | Series: 5, 832 | Repeticoes: "8-10", 833 | Descanso: 60, 834 | }, 835 | { 836 | Nome: "Rosca Concentrada", 837 | Series: 4, 838 | Repeticoes: "8-10", 839 | Descanso: 60, 840 | }, 841 | ].map((ex) => ({ ...ex, ...exercicios.find((e) => e.Nome === ex.Nome) })), 842 | }, 843 | ]; 844 | 845 | let dietas = [ 846 | { 847 | Titulo: "Dieta para Vegetarianos", 848 | Descricao: 849 | "Dieta balanceada para vegetarianos, rica em proteínas vegetais.", 850 | Objetivo: "Manutenção", 851 | Refeicoes: [ 852 | { 853 | Nome: "Almoço", 854 | Alimentos: [ 855 | "Lentilha", 856 | "Arroz integral", 857 | "Salada verde", 858 | "Tofu grelhado", 859 | "Brócolis", 860 | ], 861 | Calorias: 500, 862 | Macros: { 863 | carboidratos: 60, 864 | proteinas: 25, 865 | gorduras: 15, 866 | }, 867 | }, 868 | { 869 | Nome: "Jantar", 870 | Alimentos: [ 871 | "Quibe de quinoa", 872 | "Legumes salteados", 873 | "Suco de laranja", 874 | "Abacate", 875 | "Arroz de couve-flor", 876 | ], 877 | Calorias: 450, 878 | Macros: { 879 | carboidratos: 50, 880 | proteinas: 20, 881 | gorduras: 20, 882 | }, 883 | }, 884 | { 885 | Nome: "Café da Manhã", 886 | Alimentos: [ 887 | "Iogurte natural", 888 | "Granola", 889 | "Frutas vermelhas", 890 | "Sementes de chia", 891 | "Mel", 892 | ], 893 | Calorias: 350, 894 | Macros: { 895 | carboidratos: 50, 896 | proteinas: 15, 897 | gorduras: 10, 898 | }, 899 | }, 900 | { 901 | Nome: "Lanche da Tarde", 902 | Alimentos: [ 903 | "Hummus", 904 | "Palitos de cenoura", 905 | "Torradas integrais", 906 | "Frutas secas", 907 | "Castanhas", 908 | ], 909 | Calorias: 300, 910 | Macros: { 911 | carboidratos: 40, 912 | proteinas: 10, 913 | gorduras: 15, 914 | }, 915 | }, 916 | { 917 | Nome: "Ceia", 918 | Alimentos: [ 919 | "Chá de ervas", 920 | "Biscoitos integrais", 921 | "Fruta fresca", 922 | "Queijo vegano", 923 | "Amêndoas", 924 | ], 925 | Calorias: 250, 926 | Macros: { 927 | carboidratos: 30, 928 | proteinas: 5, 929 | gorduras: 12, 930 | }, 931 | }, 932 | ], 933 | }, 934 | { 935 | Titulo: "Dieta para Ganho de Massa Muscular", 936 | Descricao: 937 | "Dieta rica em proteínas e carboidratos para auxiliar no crescimento muscular.", 938 | Objetivo: "Ganho de Massa", 939 | Refeicoes: [ 940 | { 941 | Nome: "Pré-treino", 942 | Alimentos: [ 943 | "Banana", 944 | "Aveia", 945 | "Proteína em pó", 946 | "Manteiga de amendoim", 947 | "Leite desnatado", 948 | ], 949 | Calorias: 300, 950 | Macros: { 951 | carboidratos: 50, 952 | proteinas: 20, 953 | gorduras: 8, 954 | }, 955 | }, 956 | { 957 | Nome: "Pós-treino", 958 | Alimentos: [ 959 | "Shake de proteína com frutas", 960 | "Aveia", 961 | "Iogurte grego", 962 | "Mel", 963 | "Sementes de linhaça", 964 | ], 965 | Calorias: 250, 966 | Macros: { 967 | carboidratos: 30, 968 | proteinas: 25, 969 | gorduras: 5, 970 | }, 971 | }, 972 | { 973 | Nome: "Café da Manhã", 974 | Alimentos: [ 975 | "Ovos mexidos", 976 | "Pão integral", 977 | "Abacate", 978 | "Suco de laranja", 979 | "Queijo", 980 | ], 981 | Calorias: 500, 982 | Macros: { 983 | carboidratos: 40, 984 | proteinas: 30, 985 | gorduras: 20, 986 | }, 987 | }, 988 | { 989 | Nome: "Almoço", 990 | Alimentos: [ 991 | "Frango grelhado", 992 | "Arroz branco", 993 | "Feijão", 994 | "Salada de folhas", 995 | "Batata doce", 996 | ], 997 | Calorias: 600, 998 | Macros: { 999 | carboidratos: 70, 1000 | proteinas: 40, 1001 | gorduras: 15, 1002 | }, 1003 | }, 1004 | { 1005 | Nome: "Jantar", 1006 | Alimentos: [ 1007 | "Salmão grelhado", 1008 | "Quinoa", 1009 | "Legumes assados", 1010 | "Azeite de oliva", 1011 | "Espinafre", 1012 | ], 1013 | Calorias: 550, 1014 | Macros: { 1015 | carboidratos: 45, 1016 | proteinas: 35, 1017 | gorduras: 20, 1018 | }, 1019 | }, 1020 | ], 1021 | }, 1022 | { 1023 | Titulo: "Dieta para Emagrecimento", 1024 | Descricao: "Dieta hipocalórica para auxiliar na perda de peso.", 1025 | Objetivo: "Emagrecimento", 1026 | Refeicoes: [ 1027 | { 1028 | Nome: "Café da Manhã", 1029 | Alimentos: [ 1030 | "Aveia", 1031 | "Frutas", 1032 | "Leite desnatado", 1033 | "Sementes de girassol", 1034 | "Mel", 1035 | ], 1036 | Calorias: 300, 1037 | Macros: { 1038 | carboidratos: 50, 1039 | proteinas: 10, 1040 | gorduras: 5, 1041 | }, 1042 | }, 1043 | { 1044 | Nome: "Almoço", 1045 | Alimentos: [ 1046 | "Peito de frango grelhado", 1047 | "Salada de rúcula", 1048 | "Quinoa", 1049 | "Legumes crus", 1050 | "Azeite de oliva", 1051 | ], 1052 | Calorias: 400, 1053 | Macros: { 1054 | carboidratos: 30, 1055 | proteinas: 40, 1056 | gorduras: 10, 1057 | }, 1058 | }, 1059 | { 1060 | Nome: "Lanche da Tarde", 1061 | Alimentos: [ 1062 | "Iogurte natural", 1063 | "Frutas", 1064 | "Granola", 1065 | "Sementes de chia", 1066 | "Canela", 1067 | ], 1068 | Calorias: 200, 1069 | Macros: { 1070 | carboidratos: 30, 1071 | proteinas: 10, 1072 | gorduras: 5, 1073 | }, 1074 | }, 1075 | { 1076 | Nome: "Jantar", 1077 | Alimentos: [ 1078 | "Sopa de legumes", 1079 | "Tofu grelhado", 1080 | "Salada de alface", 1081 | "Abacate", 1082 | "Limão", 1083 | ], 1084 | Calorias: 350, 1085 | Macros: { 1086 | carboidratos: 40, 1087 | proteinas: 20, 1088 | gorduras: 10, 1089 | }, 1090 | }, 1091 | { 1092 | Nome: "Ceia", 1093 | Alimentos: [ 1094 | "Chá de ervas", 1095 | "Biscoitos integrais", 1096 | "Fruta fresca", 1097 | "Iogurte grego", 1098 | "Amêndoas", 1099 | ], 1100 | Calorias: 150, 1101 | Macros: { 1102 | carboidratos: 20, 1103 | proteinas: 5, 1104 | gorduras: 5, 1105 | }, 1106 | }, 1107 | ], 1108 | }, 1109 | ]; 1110 | --------------------------------------------------------------------------------