Registre o físico. Grave o esforço. Mostre o progresso.
Aplicativo mobile de registro de progresso físico com marcador de treino incorporado nas fotos.
- 📸 Registro fotográfico — Câmera frontal/traseira ou importação da galeria
- 🏋️ Mapa muscular anatômico — Bonequinho interativo com frente e costas, 13 grupos musculares
- 🏷️ Stamp de treino — Marcador visual queimado na foto com zonas ativadas, stats e data
- 🎨 Marcador personalizável — 4 posições, 3 tamanhos, 4 temas (Dark/Light/Minimal/Clear)
- 📊 6 modalidades — Musculação, Corrida, Bike, Natação, Descanso e Outro
- 🗂️ Histórico local — Lista cronológica de todos os registros com detalhes completos
- 📤 Compartilhamento — Foto com marcador pronta para Instagram, WhatsApp e outras redes
- 🔒 100% offline — Nenhum dado enviado para servidores, tudo salvo localmente
| Tecnologia | Uso |
|---|---|
| React Native 0.83 | Framework mobile |
| Expo 55 | Plataforma de desenvolvimento |
| React Navigation | Navegação entre telas |
| Zustand | Estado global |
| expo-sqlite | Banco de dados local |
| react-native-svg | Bonequinho muscular anatômico |
| react-native-view-shot | Composição do marcador na foto |
| expo-camera | Captura de foto |
| EAS Build | Build e distribuição |
- Node.js 18+
- Java 17 (o projeto não é compatível com Java 21+)
- Expo Go no celular ou emulador Android
# Clone o repositório
git clone https://github.com/seu-usuario/gainshot.git
cd gainshot
# Instale as dependências
npm install# Expo Go (desenvolvimento rápido)
npx expo start
# Build nativo Android (necessário para salvar na galeria)
npx expo run:android# APK para distribuição direta
eas build --platform android --profile preview
# Build de produção para Play Store
eas build --platform android --profile production├── src/
│ ├── components/
│ │ ├── MuscleFigureFront.tsx # Bonequinho SVG anatômico — frente
│ │ ├── MuscleFigureBack.tsx # Bonequinho SVG anatômico — costas
│ │ ├── Stamp.tsx # Marcador de treino
│ │ └── RecordCard.tsx # Card do histórico
│ ├── screens/
│ │ ├── HomeScreen.tsx # Histórico + navegação
│ │ ├── CameraScreen.tsx # Captura de foto
│ │ ├── WorkoutSelectScreen.tsx # Seleção de modalidade
│ │ ├── WorkoutDetailsScreen.tsx# Mapa muscular + stats
│ │ ├── PreviewScreen.tsx # Preview e personalização do marcador
│ │ ├── RecordDetailScreen.tsx # Detalhe de um registro
│ │ └── StampSettingsScreen.tsx # Configurações globais do marcador
│ ├── store/
│ │ └── index.ts # Zustand store
│ ├── db/
│ │ └── database.ts # SQLite
│ ├── types/
│ │ └── index.ts # Tipos TypeScript
│ ├── utils/
│ │ └── theme.ts # Cores e constantes
│ └── navigation/
│ └── AppNavigator.tsx # React Navigation
├── assets/ # Ícones e splash
└── App.tsx
| Token | Cor | Hex |
|---|---|---|
| Accent | Laranja | #D85A30 |
| Accent Dark | Laranja escuro | #993C1D |
| Background | Preto profundo | #111111 |
| Surface | Cinza escuro | #1A1A1A |
| Elevated | Cinza médio | #222222 |
| Border | Cinza sutil | #2A2A2A |
| Text Primary | Branco suave | #EEEEEE |
| Text Secondary | Cinza | #888888 |
Home (histórico)
└── Câmera
└── Seleção de treino
└── Detalhes do treino (mapa muscular + stats)
└── Preview + personalizar marcador
└── Salvar e compartilhar
Distribuído sob a licença MIT. Veja LICENSE para mais informações.



