[PITCH] FitLogr: projeto de aplicativo web para registro de treinos de musculação
O FitLogr é um aplicativo web em que usuários cadastrados podem registrar seus treinos na academia e acompanhar seu histórico e sua evolução na atividade física.
Desenvolvi este projeto full-stack após enfrentar problemas técnicos com o aplicativo mobile gratuito que usava para anotar meus treinos. Ou seja, os bugs me faziam perder tempo e minha concentração entre os exercícios na academia.
Além disso, criar o FitLogr foi uma oportunidade de estudar e rever tecnologias que já estudei, mas que sofreram alterações nos últimos anos. E também desenvolver mais um projeto ligado à utilização no mundo real.
O FitLogr possui duas partes. O front end utiliza React com framework Next.js, além do Tailwind CSS para o design das telas. Já o back end consiste em uma API RESTful desenvolvida utilizando Java e Spring Boot, com os frameworks Spring Security, Spring Data e Spring HATEOAS, e banco de dados MariaDB.
Por conta do manifest.json
, o web app pode ser instalado em smartphones ao adicioná-lo à tela inicial do dispositivo pelo navegador, e daí ser utilizado como se fosse um aplicativo convencional.
Ambas as partes do FitLogr rodam em contêineres no Google Cloud Run. A API se comunica com o banco de dados MariaDB localizada em uma máquina virtual do Compute Engine.
Tanto os códigos-fonte da API e do front end do FitLogr estão disponíveis no meu GitHub. Demonstração neste link.
Features do FitLogr
- Design simples e sem distrações. O foco é no exercício, e não no celular.
- Login via GitHub ou utilizando login e senha (a autenticação de usuário de demonstração utiliza este método).
- Autenticação e autorização via JWT
- Possibilidade de continuar o treino de onde parou após navegar por outras telas do FitLogr ou fechar a aplicação.
- Visualização das cargas e repetições de exercício em treinos anteriores.
- Cálculo e visualização do One Repetition Max (1RM) de um exercício no treino atual e nos últimos treinos, utilizando a fórmula de Brzycki.
- Lista de exercícios disponíveis controlada por administradores para consistência de dados.
- Três categorias de usuários: administrador, membro e demonstração.
- Uso de políticas CORS na API para bloquear solicitações fora do ambiente usado pelo front end.
No meu blog conto um pouco mais sobre alguns dos desafios que enfrentei no desenvolvimento desse projeto.