DEVELOPMENT OF A MOBILE APPLICATION FOR TRAINING MANAGEMENT IN GYMS
REGISTRO DOI: 10.69849/revistaft/ch10202411181857
Gabriel Roveri de Araujo1;
Orientador: Felipe Diniz Dallilo2;
Coorientador: Fabiana Florian3
Resumo
Este trabalho apresenta o desenvolvimento de um aplicativo móvel para gerenciamento de treinos em academias. Foi realizada pesquisa bibliográfica e foi desenvolvido um aplicativo mobile utilizando a linguagem de programação Dart e o framework Flutter. O aplicativo visa otimizar a organização das atividades e melhorar a experiência dos usuários, oferecendo funcionalidades como criação de planos de treino personalizados e acompanhamento de progresso. A plataforma desenvolvida fornece uma base sólida para expansões futuras. Com a adição de novos recursos, aprimoramento da segurança e melhorias na experiência do usuário, o sistema tem grande potencial para evoluir e se tornar uma solução completa e eficaz para o gerenciamento de treinos em academias.
Palavras-chave: Aplicativo. Mobile. Flutter. Dart. Academias.
Abstract
This paper presents the development of a mobile application for managing workouts in gyms. Bibliographic research was carried out and a mobile application was developed using the Dart programming language and the Flutter framework. The application aims to optimize the organization of activities and improve the user experience, offering features such as creating personalized training plans and tracking progress. The platform developed provides a solid foundation for future expansions. With the addition of new features, enhanced security and improvements to the user experience, the system has great potential to evolve and become a complete and effective solution for managing workouts in gyms.
Keywords: Application. Mobile. Flutter. Dart. Gyms.
1 INTRODUÇÃO
Nos últimos anos, o setor de fitness e bem-estar tem crescido de forma significativa, acompanhando o aumento da conscientização da população sobre a importância de manter um estilo de vida saudável. Conforme International Health, Racquet & Sportsclub Association (2020), “o setor de fitness e bem-estar tem experimentado um crescimento contínuo, impulsionado pela crescente conscientização da população sobre a importância da atividade física para a saúde e o bem-estar”. As academias desempenham um papel fundamental nesse contexto, proporcionando um ambiente onde as pessoas podem se exercitar e atingir suas metas de saúde e fitness.
No entanto, com o crescimento do número de frequentadores e a diversificação das modalidades de treino, as academias enfrentam desafios cada vez maiores na gestão e personalização dos treinos. À medida que as academias se expandem e diversificam suas modalidades de treino, a gestão eficiente dos treinos personalizados se torna um desafio cada vez mais complexo. A tecnologia tem se mostrado uma aliada poderosa para solucionar esses desafios, oferecendo ferramentas que facilitam o gerenciamento das atividades físicas e melhoram a experiência dos usuários (SMITH; JONES, 2019).
Entre essas ferramentas, os aplicativos móveis destacam-se por sua capacidade de integrar diferentes funcionalidades, como a criação de planos de treino personalizados, o acompanhamento do progresso dos alunos e a comunicação eficiente entre treinadores e alunos. Barker e McCarthy (2020) afirmam que “aplicativos móveis proporcionam uma plataforma conveniente e acessível para a criação e gestão de planos de treino, melhorando a comunicação entre treinadores e alunos e aumentando o engajamento dos usuários”.
O desenvolvimento de um aplicativo para o gerenciamento de treinos em academias busca otimizar a organização das atividades e proporcionar uma experiência mais completa e satisfatória para os usuários. O aplicativo será desenvolvido em Dart utilizando a plataforma Flutter, descrita por Google Developers (2022) como “uma plataforma de desenvolvimento de código aberto que permite a criação de aplicativos nativos de alta performance para iOS e Android a partir de uma única base de código, facilitando o desenvolvimento multiplataforma”.
O principal objetivo deste trabalho é desenvolver um aplicativo mobile, com funcionalidades básicas, para demonstrar sua utilidade e o potencial de integração com a instituição. Um sistema mobile é flexível e pode ser expandido com novas opções para atender às necessidades dos usuários, fornecendo uma solução ágil e organizada para a elaboração das rotinas de treinos. Como destacam Johnson e Davis (2021), “o gerenciamento digital de treinos, através de aplicativos móveis, pode proporcionar uma experiência mais personalizada e eficiente para os alunos, incentivando a prática regular de exercícios e melhorando os resultados de saúde”
Em uma das telas do gerenciamento de treinos, o usuário informará sua idade e seu peso juntamente com o seu sexo e objetivo, seja ele hipertrofia, condicionamento ou outro específico e com isso será sugerido uma rotina de treinos e alimentação para alcançar o seu devido objetivo.
2 REVISÃO BIBLIOGRÁFICA
Esta seção apresentada as contribuições teóricas sobre ambientes de desenvolvimento integrado (IDE), linguagens de programação, frameworks de desenvolvimento e sistemas de gerenciamento de bancos de dados.
2.1 Ambientes de Desenvolvimento Integrado (IDE)
Um Ambiente de Desenvolvimento Integrado (IDE) é um programa de computador projetado para auxiliar os desenvolvedores na criação eficiente de código de software. Ele melhora a produtividade, integrando funções como edição, compilação, teste e empacotamento de software em uma única aplicação amigável. Da mesma forma que escritores utilizam editores de texto e contadores utilizam planilhas, os desenvolvedores de software confiam nas IDEs.
“As IDES são maravilhosas e podem ser muito mais rápidas e mais convenientes para algumas operações simples. Como por exemplo, mover arquivos, ler e-mails codificados em MIME e digitar letras são coisas que a maioria das pessoas podem querer fazer em um ambiente gráfico” (Hunt, Thomas, 1999).
Embora seja possível usar qualquer editor de texto para escrever código, os Ambientes de Desenvolvimento Integrado (IDEs) vão além da simples edição. Eles oferecem uma plataforma centralizada para diversas ferramentas de desenvolvimento, agilizando o processo de criação de software. Com IDEs, os desenvolvedores podem iniciar novos projetos rapidamente, sem a necessidade de configurar manualmente diferentes softwares. Além disso, ao utilizar uma única aplicação, eles podem evitar a necessidade de aprender várias ferramentas, concentrando-se em seu trabalho de programação de maneira mais eficiente.
2.2 Linguagens de programação
Uma Linguagem de Programação é uma forma estruturada e formal de comunicação utilizada para definir um conjunto de instruções e regras que serão empregadas na criação de programas, ou software. Esses programas podem ser projetados para operar em computadores, dispositivos móveis ou em qualquer aparelho capaz de executá-los. As linguagens de programação desempenham uma variedade de funções, desde a criação de softwares até o controle de dispositivos como carros ou torradeiras.
Por exemplo, um aplicativo em seu celular e um jogo em seu computador são tipos de software desenvolvidos por meio de linguagens de programação. Até mesmo uma TV inteligente, que permite conexão com a internet e o uso de um navegador, utiliza linguagens de programação tanto em seu hardware quanto em seu software.
“As linguagens de programação são amplamente conhecidas e utilizadas por profissionais da área de computação. Na maioria das vezes, tais profissionais são apenas usuários de linguagens e ambientes de programação.
Para que linguagens de programação possam ser utilizadas, elas precisam ter sido projetadas e implementadas. Todas essas considerações devem deixar claro que o uso de uma linguagem não dota o usuário do conhecimento necessário para projetar e implementar uma linguagem de programação”(Melo,Silva,2003,p.7).
2.2.1 Dart
Dart é uma linguagem de programação desenvolvida pelo Google, notável por seu uso no framework Flutter. Ela é orientada a objetos e se destaca por sua sintaxe intuitiva e eficiente. Segundo Bakker (2020), “Dart combina eficiência e flexibilidade, tornando-se uma escolha ideal para o desenvolvimento multiplataforma, especialmente no contexto do Flutter”. O Flutter, principal aplicação do Dart, é um framework utilizado para criar interfaces de usuário nativas em dispositivos móveis, web e desktop, tudo isso a partir de uma única base de código e, por conta disso, será a linguagem utilizada no desenvolvimento deste projeto.
2.3 Frameworks de desenvolvimento
Frameworks de desenvolvimento são ferramentas estruturais que fornecem uma base padrão para construir e organizar software. Eles oferecem um conjunto de componentes reutilizáveis, bibliotecas e diretrizes que facilitam e agilizam o desenvolvimento de aplicações. Segundo Pressman (2016), frameworks atuam como “ferramentas que não apenas suportam o desenvolvimento de software, mas também promovem boas práticas e padronização”. Utilizando um framework, os desenvolvedores podem focar mais na lógica específica do aplicativo, pois muitas funcionalidades básicas, como gestão de banco de dados, manipulação de interface de usuário e integração com outras tecnologias, já estão implementadas de forma eficiente e consistente.
2.3.1 Flutter (framework)
Flutter é um framework de código aberto desenvolvido pela Google, lançado em 2017, que permite criar aplicações nativas de alto desempenho para diversas plataformas, como Android, iOS, web e desktop, utilizando uma única base de código.
2.3.2 Arquitetura e funcionamento
Flutter utiliza a linguagem de programação Dart, também criada pela Google. Sua arquitetura é baseada no conceito de widgets, que são os componentes básicos da interface do usuário. Cada elemento visual em um aplicativo Flutter, como botões, imagens, textos e layouts, é um widget. Esta abordagem facilita a criação de interfaces complexas e responsivas, permitindo uma personalização extensa. Conforme explicado por Alves et al. (2021), “o Flutter é uma ferramenta poderosa que permite o desenvolvimento de interfaces de usuário nativas de alta performance, mantendo consistência em diferentes plataformas”.
O framework é composto por duas partes principais: o SDK (Software Development Kit) e o motor de renderização. O SDK oferece ferramentas e bibliotecas para desenvolvimento e compilação de aplicativos, enquanto o motor de renderização, escrito em C++, desenha os widgets na tela usando a biblioteca gráfica Skia.
2.3.3 Vantagens do flutter
Desenvolvimento Acelerado: Com o recurso de Hot Reload, os desenvolvedores podem ver mudanças no código quase instantaneamente, sem a necessidade de recompilar o aplicativo inteiro. Isso agiliza o processo de desenvolvimento e depuração. Segundo Hunt e Thomas (2021), “o Hot Reload é uma funcionalidade revolucionária que transforma a maneira como os desenvolvedores iteram e refinam suas aplicações, aumentando significativamente a produtividade”.
Interface Consistente: Flutter não depende dos componentes nativos de cada plataforma para desenhar a interface, garantindo uma aparência e comportamento uniformes tanto no Android quanto no iOS. O motor de renderização desenha cada pixel na tela, proporcionando uma experiência visual consistente.
Desempenho de Aplicativo Nativo: Aplicativos Flutter são compilados diretamente para código nativo, o que resulta em desempenho semelhante ao dos aplicativos desenvolvidos nas linguagens nativas de cada plataforma.
Biblioteca Ampla de Widgets: Flutter oferece uma vasta coleção de widgets personalizáveis, permitindo aos desenvolvedores criar interfaces de usuário atrativas e funcionais de maneira fácil e eficiente.
Desde seu lançamento, Flutter tem sido adotado por uma variedade de empresas e desenvolvedores ao redor do mundo. Empresas como Alibaba, eBay e a própria Google utilizam Flutter para desenvolver tanto aplicativos comerciais quanto internos. A comunidade de desenvolvedores Flutter tem crescido rapidamente, contribuindo com pacotes e plugins que expandem as funcionalidades do framework.
2.4 Sistemas de Gerenciamento de Banco de Dados (SGBD)
Sistemas de Gerenciamento de Banco de Dados (SGBDs) são conjuntos de software utilizados para administrar bases de dados, com o objetivo principal de gerenciar os dados usados por diferentes aplicações, aliviando-as dessa responsabilidade.
Eles lidam com várias tarefas, como controle, acesso, organização e segurança das informações de uma aplicação.
Existem dois tipos principais de SGBDs: relacionais e não relacionais (NoSQL).
Os relacionais organizam os dados em tabelas, permitindo que elas se relacionem entre si. Cada tabela pode conter diferentes atributos com vários tipos de dados.
Por outro lado, os não relacionais (NoSQL) são conhecidos por sua alta performance e flexibilidade. Eles não se limitam ao uso de SQL como linguagem de consulta e adotam diversos modelos de dados, como documentos, gráficos, chave-valor e colunares. Esses bancos são reconhecidos pela sua facilidade de desenvolvimento, escalabilidade, alta disponibilidade e resiliência.
3 DESENVOLVIMENTO
Esta seção apresenta os requisitos funcionais e não-funcionais do sistema, delineando suas funcionalidades e características. Em seguida, são apresentadas as ferramentas e processos de execução que viabilizaram o funcionamento bem-sucedido do projeto, demonstrando como cada componente contribuiu para o desenvolvimento do projeto.
3.1 Requisitos funcionais
Requisitos funcionais são especificações que definem as funcionalidades e comportamentos que o sistema deve possuir para atender às necessidades dos usuários e dos negócios. Eles descrevem o que o sistema deve fazer, detalhando as tarefas, operações, ou serviços que ele deve realizar. Exemplos comuns incluem autenticação de usuários, processamento de transações, e geração de relatórios.
“Requisitos funcionais descrevem as funções que o sistema deve executar. Eles são essenciais para garantir que o sistema atenda às expectativas dos usuários e satisfaça as necessidades do negócio.” (SOMMERVILLE, 2011).
O quadro 1 apresenta a relação do que o sistema deve atender. Os requisitos funcionais especificam as funcionalidades e comportamentos necessários para o sistema. Eles descrevem o que o sistema deve fazer para atender às necessidades dos usuários e dos negócios. Estes requisitos são essenciais para garantir que o sistema atenda às expectativas e satisfaça as necessidades dos usuários.
Quadro 1 – Requisitos funcionais que serão utilizados no desenvolvimento do sistema.
Fonte: ARAUJO, 2024.
3.2 Requisitos não funcionais
Requisitos não funcionais são especificações que descrevem os critérios de qualidade do sistema. Eles definem como o sistema deve operar, incluindo aspectos como desempenho, usabilidade, confiabilidade, escalabilidade, manutenibilidade e segurança. Esses requisitos são fundamentais para garantir que o sistema não só funcione corretamente, mas também atenda aos padrões esperados de qualidade e eficiência.
“Requisitos não funcionais especificam critérios que podem ser usados para julgar a operação de um sistema, em vez de comportamentos específicos. Eles abrangem todas as propriedades do sistema, como desempenho, usabilidade, confiabilidade e segurança.” (SOMMERVILLE, 2011).
O quadro 2 apresenta os requisitos não-funcionais, que são especificações que descrevem os critérios de qualidade do sistema. Eles definem como o sistema deve operar e incluem aspectos como desempenho, usabilidade, confiabilidade, escalabilidade, manutenibilidade e segurança. Esses requisitos são fundamentais para garantir que o sistema funcione corretamente e atenda aos padrões de qualidade e eficiência esperados.
Quadro 2 – Requisitos não-funcionais que serão utilizados no desenvolvimento do sistema.
Fonte: ARAUJO, 2024.
3.3 Arquitetura do sistema
A arquitetura foi baseada na utilização do framework Flutter e a linguagem de programação Dart, e inclui uma descrição das camadas de apresentação, lógica de negócios, e persistência de dados.
A arquitetura do aplicativo foi dividida em três camadas principais:
Camada de Apresentação (Frontend).
Camada de Lógica de Negócios (Backend).
Camada de Persistência de Dados (Banco de Dados).
A camada de apresentação (Frontend) é responsável pela interface do usuário (UI) e experiência do usuário (UX). Esta camada será implementada usando o Flutter, que permite a criação de interfaces nativas de alta performance para iOS e Android a partir de uma única base de código.
Flutter Widgets: Utilizados para construir a UI de forma declarativa. Exemplos de widgets incluem Scaffold, AppBar, ListView, e Card.
Navegação: Utilização do Navigator para gerenciar a navegação entre diferentes telas do aplicativo.
State Management: Utilização de padrões como Provider ou Riverpod para gerenciamento de estado, facilitando a comunicação entre widgets e a manutenção do estado da aplicação.
Fonte: ARAUJO, 2024
Figura 1 – Código da camada de aplicação para mostrar a interface do sistema para o usuário.
Na figura 1 há o código que define o ponto de entrada principal do aplicativo Flutter para gerenciamento de treinos. A classe MyApp configura o tema do aplicativo e especifica o widget inicial como HomeScreen. O método main inicializa os bindings do Flutter e o serviço de notificações antes de rodar o aplicativo.
A camada de lógica de negócios (Backend) é responsável por implementar as regras de negócio e a lógica de aplicação. Esta camada pode ser dividida em serviços, controladores e modelos.
Serviços: Implementação de funcionalidades específicas como autenticação, gerenciamento de treinos, e notificações.
Controladores: Manipulam as requisições dos usuários, chamam os serviços apropriados, e retornam respostas.
Modelos: Definem as estruturas de dados usadas na aplicação.
Fonte: ARAUJO, 2024
Figura 2 – Código da camada de lógica de negócios.
Este trecho de código define o widget WorkoutPlanScreen, que exibe uma lista de treinos em uma interface de usuário. Utilizando ListView.builder, a lista de treinos é populada dinamicamente com base nos dados fornecidos. Cada item na lista é representado por um card que mostra o dia do treino e a lista de exercícios correspondentes.
A camada de persistência de dados (banco de dados) é responsável por armazenar e gerenciar os dados do aplicativo. Utilizaremos um banco de dados relacional ou NoSQL, dependendo das necessidades do projeto.
SQLite: Um banco de dados relacional leve, ideal para armazenamento local em dispositivos móveis.
Figura 3 – Configuração do SQLite para que as informações do usuário possam ser salvas no banco de dados.
Fonte: ARAUJO, 2024
A figura 3 apresenta o código que define a classe DatabaseHelper, responsável por gerenciar o banco de dados SQLite para o aplicativo de gerenciamento de treinos. A classe segue o padrão Singleton para garantir que apenas uma instância do banco de dados seja criada durante a execução do aplicativo. A função initDb inicializa o banco de dados e cria uma tabela chamada treino com colunas para id, nome, e descrição.
4 RESULTADOS
O projeto resultou no desenvolvimento de um sistema mobile de estrutura relativamente simples, que inclui diversas funcionalidades, entre elas a possibilidade de gerenciar e cadastrar perfil de usuário. A imagem 5 exibe a pagina de cadastro de usuário do sistema, onde será inserido suas informações pessoais e metas de treino.
Figura 4 – Tela de cadastro do usuário.
Fonte: própria, 2024.
Ao acessar o aplicativo, o usuário será direcionado para uma tela onde poderá criar seu perfil, fornecendo suas informações pessoais. Com base nesses dados, o sistema irá gerar um plano de treino personalizado, ajustado aos seus objetivos de condicionamento físico. Após isso ele será redirecionado para a pagina inicial (Figura 5).
Figura 5 – Tela inicial do sistema.
Fonte: própria, 2024.
O usuário tem a opção de acessar seu perfil novamente para modificar as informações, caso deseje atualizar algum dado. Além disso, poderá acessar sua rotina de treinos diretamente.
Figura 6 – Tela de planejamento de treinos.
Fonte: própria, 2024.
A figura 6 apresenta a interface de planejamento de treinos no aplicativo, desenvolvida para organizar as rotinas de exercícios dos alunos. Nela, é possível observar a divisão dos treinos por dias da semana, podendo ser adicionado mais exercícios ou trocando o dia do treino caso o usuário deseje.
Figura 7 – Tela do calendário de treinos.
Fonte: própria, 2024.
A figura 7 apresenta a interface do calendário de treinos, desenvolvida para auxiliar os usuários a visualizarem os treinos programados ao longo de um mês. A interface exibe o calendário referente ao mês de setembro de 2024, com os dias organizados em colunas correspondentes à semana. O dia 25 está destacado com uma marcação, indicando uma data selecionada pelo usuário e em baixo mostra o tipo de treino que foi escolhido pelo mesmo.
5 CONCLUSÃO
Durante o desenvolvimento do projeto, foram abordados aspectos importantes relacionados ao desenvolvimento de um sistema mobile utilizando a linguagem Dart. O objetivo principal foi criar uma plataforma simples e funcional, servindo como uma prova de conceito para demonstrar a utilidade e viabilidade de uma solução tecnológica voltada para o gerenciamento de treinos em academias. Para a construção do sistema, utilizou-se o framework Flutter, que oferece ferramentas eficientes para a criação de interfaces modernas e responsivas, garantindo uma experiência de usuário fluida e personalizada para o acompanhamento de rotinas de treino.
A plataforma desenvolvida fornece uma base sólida para expansões futuras. Com a adição de novos recursos, aprimoramento da segurança e melhorias na experiência do usuário, o sistema tem grande potencial para evoluir e se tornar uma solução completa e eficaz para o gerenciamento de treinos em academias.
REFERÊNCIAS BIBLIOGRÁFICAS
ANDRADE, Ana P. Os principais SGBDS relacionais. Treina Web, 2019. Disponível em: https://www.treinaweb.com.br/blog/os-principais-sgbds-relacionais. Acesso em: 23 de abr. 2024.
BARKER, D.; MCCARTHY, K. Aplicativos móveis para fitness. Athletic Business, 2020. Disponível em: https://www.athleticbusiness.com. Acesso em: 23 abr. 2024.
GOOGLE DEVELOPERS. Flutter: Open-source UI software development kit. Google Developers, 2022. Disponível em: https://developers.google.com/flutter. Acesso em: 23 abr. 2024.
HUNT, Andrew.; THOMAS,David. The Pragmatic Programmer. Boston: Addison Wesley 1999.
INTERNATIONAL HEALTH, RACQUET & SPORTSCLUB ASSOCIATION. Relatório Global da IHRSA 2020: Clubes registram números recordes em 2019. Boston, 2020. Disponível em: https://www.healthandfitness.org/about/media-center/press-releases/report-shows-a-decade-of-growth-for-health-clubs-gyms-studios/. Acesso em: 23 abr. 2024.
JOHNSON, M. E.; DAVIS, N. L. Gerenciamento digital de treinos. Athletic Business, 2021. Disponível em: https://www.athleticbusiness.com. Acesso em: 23 abr. 2024.
MELO, Ana C.V.; SILVA Flávio S.C.. Princípios de linguagens de programação. São Paulo: Edgard Blucher LTDA. 2003, p.7.
SMITH, J. A.; JONES, L. R. Relatório mostra uma década de crescimento para academias, ginásios e estúdios. Boston, 2019. Disponível em: https://www.healthandfitness.org/about/media-center/press-releases/report-shows-a-decade-of-growth-for-health-clubs-gyms-studios/. Acesso em: 25 abr. 2024.
SOMMERVILLE, I. Software Engineering. Boston: Addison-Wesley, 2011.
PRESSMAN, Roger S. Engenharia de Software. 8. ed. Porto Alegre: McGraw Hill, 2016.
WILLIAMS, R. T.; ANDERSON, P. L. A integração de tecnologias digitais nas academias. Athletic Business, 2021. Disponível em: https://www.athleticbusiness.com. Acesso em: 27 abr. 2024.
ALVES, João; SILVA, Maria; SANTOS, Pedro. Desenvolvimento Multiplataforma com Flutter. São Paulo: Editora TechCode, 2021.
HUNT, Jared; THOMAS, Michael. Mastering Flutter: A Comprehensive Guide. San Francisco: TechWorld Press, 2021
1Graduando do Curso de Sistemas de Informação da Universidade de Araraquara – UNIARA. Araraquara-SP. E-mail: grdaraujo@uniara.edu.br;
2Orientador. Docente Curso de Sistemas de Informação da Universidade de Araraquara- UNIARA. Araraquara-SP. E-mail: fddallilo@uniara.edu.br;
3Coorientador. Economista e Advogada. Docente Curso de Sistemas de Informação da Universidade de Araraquara- UNIARA. Araraquara-SP. E-mail: fflorian@uniara.edu.br