App Frontend do FitLocus
O aplicativo móvel do FitLocus é desenvolvido com React Native e Capacitor, oferecendo uma experiência nativa para usuários iOS e Android. O app é o principal ponto de interação para alunos e personal trainers no ecossistema FitLocus.Tecnologias Utilizadas
- Framework: React Native
- Adaptador Nativo: Capacitor
- Gerenciamento de Estado: React Context API
- Roteamento: React Navigation
- Requisições HTTP: Axios
- Estilização: Styled Components
- Formulários: React Hook Form
- Validação: Yup
- Autenticação: JWT + AsyncStorage
- Animações: React Native Reanimated
Estrutura do Projeto
Fluxos Principais
Autenticação
O aplicativo implementa um sistema de autenticação completo:- Login: Autenticação com email/senha ou Google
- Registro: Criação de nova conta com validação de dados
- Recuperação de Senha: Fluxo para redefinição de senha
- Persistência de Sessão: Armazenamento de token JWT em AsyncStorage
- Proteção de Rotas: Redirecionamento para login quando não autenticado
Exercícios
Gerenciamento de exercícios físicos:- Listagem: Visualização de exercícios disponíveis
- Detalhes: Informações detalhadas sobre cada exercício
- Execução: Interface para execução de exercícios com contagem de séries
- Histórico: Registro de execuções anteriores
- Recordes: Acompanhamento de recordes pessoais
Treinos
Gerenciamento de sessões de treino:- Listagem: Visualização de treinos disponíveis
- Detalhes: Informações sobre exercícios incluídos no treino
- Execução: Interface para realização do treino com progresso
- Histórico: Registro de treinos realizados
- Planos: Visualização de planos de treino semanais
Perfil
Gerenciamento de perfil de usuário:- Informações Pessoais: Visualização e edição de dados do usuário
- Métricas: Acompanhamento de métricas como hidratação, passos e sono
- Assinatura: Gerenciamento de plano de assinatura
- Preferências: Configurações do aplicativo
Componentes de UI
O aplicativo utiliza uma biblioteca de componentes personalizada que segue as diretrizes de design do FitLocus:- Botões: Primário, secundário, terciário e ícone
- Inputs: Texto, número, seleção, data e hora
- Cards: Exercício, treino, métrica e progresso
- Modais: Confirmação, alerta e formulário
- Navegação: Barra inferior, cabeçalho e menu lateral
Integração com API
A comunicação com o backend é realizada através de serviços que utilizam Axios:Gerenciamento de Estado
O aplicativo utiliza React Context API para gerenciamento de estado global:Navegação
A navegação é implementada com React Navigation, com diferentes navegadores para diferentes estados de autenticação:Design System
O aplicativo segue um design system consistente com as seguintes características:- Cores: Paleta baseada em #202020 (fundo), #B4ED00 (acento) e #F9F9F9 (texto)
- Tipografia: Hanken Grotesk como fonte principal e SUPERINE para títulos
- Espaçamento: Sistema de grid com base em múltiplos de 4px
- Bordas: Cantos arredondados com raio de 8px
- Sombras: Sombras sutis para elementos elevados
Testes
O aplicativo inclui diferentes níveis de testes:- Testes Unitários: Jest para funções e hooks
- Testes de Componentes: React Testing Library
- Testes E2E: Detox para testes de integração