Gerar treino e dieta com IA e compartilhar evolução em comunidade fitness
Translation pending
AI summary · README
HealthTypeScript · CSSGitHub @devasafeOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Rede social fitness com coach de treino e dieta por IA. Une, num só app, o acompanhamento personalizado (treino + nutrição gerados por IA) e uma comunidade onde as pessoas compartilham a evolução — fechando um ciclo de retenção. Documento de decisões e escopo: veja o plano do MVP em C:\Users\00asa\.claude\plans\ (fora do repo). Requisitos: Node 20+ e um MongoDB (local ou Atlas). Fatia 2 (Onboarding com IA — requer Bearer token): Fatia 3 (Geração de plano — requer Bearer token): Fatia 4 (Rede social — requer Bearer token):Read the full README ↗
Rede social fitness com coach de treino e dieta por IA. Une, num só app, o acompanhamento personalizado (treino + nutrição gerados por IA) e uma comunidade onde as pessoas compartilham a evolução — fechando um ciclo de retenção.
Documento de decisões e escopo: veja o plano do MVP em
C:\Users\00asa\.claude\plans\(fora do repo).
FitSocial/
├─ api/ Backend — Node.js + Express + MongoDB + TypeScript
└─ app-android/ App — React Native (Expo). iOS em Swift virá em fase futura.
api/)Requisitos: Node 20+ e um MongoDB (local ou Atlas).
cd api
cp .env.example .env # ajuste JWT_SECRET, MONGODB_URI, ANTHROPIC_API_KEY
npm install
npm run dev # sobe em http://localhost:4000
npm test # testes de integração (Mongo em memória)
Endpoints da Fatia 1 (Auth):
| Método | Rota | Descrição |
|---|---|---|
| GET | /health | Healthcheck |
| POST | /auth/register | Cadastro (retorna token + usuário) |
| POST | /auth/login | Login (retorna token + usuário) |
| GET | /auth/me | Usuário autenticado (Bearer token) |
Fatia 2 (Onboarding com IA — requer Bearer token):
| Método | Rota | Descrição |
|---|---|---|
| GET | /onboarding/greeting | Mensagem inicial do coach |
| POST | /onboarding/message | Um turno da conversa; ao concluir, salva a ficha |
Fatia 3 (Geração de plano — requer Bearer token):
| Método | Rota | Descrição |
|---|---|---|
| POST | /plans/generate | Gera treino+dieta a partir da ficha (nova versão) |
| POST | /plans/import | Importa o plano pessoal (texto → IA estrutura) |
| GET | /plans/current | Retorna o plano mais recente |
Fatia 4 (Rede social — requer Bearer token):
| Método | Rota | Descrição |
|---|---|---|
| POST | /social/posts | Cria post (texto + imageUrl opc.) |
| GET | /social/feed | Feed (quem você segue + você) |
| POST | /social/posts/:id/like | Curtir |
| DELETE | /social/posts/:id/like | Descurtir |
| POST | /social/users/:id/follow | Seguir |
| DELETE | /social/users/:id/follow | Deixar de seguir |
| GET | /social/users/:id | Perfil + contagens + posts |
Fatia 5 (Freemium):
| Método | Rota | Descrição |
|---|---|---|
| POST | /plans/generate | Grátis gera 1x; regenerar exige premium (402) |
| POST | /billing/webhook | Webhook do RevenueCat (atualiza tier) |
| POST | /billing/dev-upgrade | Upgrade de DEV (alterna free/premium; off em prod) |
Assinatura real: integração via RevenueCat + Google Play Billing (o
dev-upgrade é só para demonstração). Configure o RevenueCat usando o _id do
usuário como app_user_id e aponte o webhook para /billing/webhook
(opcionalmente proteja com REVENUECAT_WEBHOOK_AUTH).
A IA fica isolada atrás da interface AIProvider (src/services/ai/). Hoje usa
Google Gemini (grátis) via REST. Trocar de LLM = nova implementação da
interface + apontar o factory em src/services/ai/index.ts. Configure
GEMINI_API_KEY no .env (grátis em https://aistudio.google.com/apikey).
Teste as integrações reais com: npm run try:gemini (onboarding) e
npm run try:plan (geração de plano).
Vídeos de exercício (opcional): Configure YOUTUBE_API_KEY no .env para carregar
miniaturas reais dos vídeos de execução e tocar dentro do app. Sem a chave, o app mostra
um botão de fallback que abre a busca no YouTube em navegador externo. Obtenha a chave em
https://console.cloud.google.com/apis/library/youtube.googleapis.com (Google Cloud Console → "YouTube Data API v3").
app-android/)cd app-android
npm install
npm run android # requer emulador Android ou o app Expo Go
Por padrão o app aponta para http://10.0.2.2:4000 (host no emulador Android).
Para dispositivo físico, defina EXPO_PUBLIC_API_URL com o IP da sua máquina.
Endpoints v2.2–v2.4 (Bearer token):
| Método | Rota | Descrição |
|---|---|---|
| GET | /gamification/users/:id | Badges de um usuário |
| GET | /gamification/leaderboard | Ranking entre seguidos (7 dias) |
| POST | /uploads | Upload de imagem (multipart) |
| POST | /social/posts/:id/comments | Comentar em um post |
| GET | /social/posts/:id/comments | Listar comentários |
| GET | /coach/messages | Histórico do chat com o coach |
| POST | /coach/messages | Conversa com o coach (pode reajustar o plano) |
| Método | Rota | Descrição |
|---|---|---|
| POST | /checkins | Registra treino feito (carga/reps; post opcional) |
| GET | /checkins/stats | Streak, treinos na semana e total |
| GET | /checkins | Histórico recente de treinos |
| GET | /checkins/progress | Evolução de carga por exercício (para o gráfico) |
| POST | /plans/adjust | Reajuste do plano pela IA com base na adesão (premium) |
502 amigável; falha de rede no app vira mensagem clara.