Treinar sem pensar. Evoluir com clareza.
Evolv e um app de treino com foco em registro rapido, PR automatico e progresso visivel. A arquitetura agora segue o documento do produto: web primeiro, mobile preparado, backend Supabase e monorepo compartilhado.
apps/
web/ Next.js App Router
src/app/ rotas, layout e APIs
src/features/dashboard/ experiencia principal modularizada
mobile/ Expo / React Native
motion/ Remotion para animacoes de produto
packages/
types/ contratos de dominio
services/ Supabase, mock data e regras de progresso
hooks/ estado local-first com Zustand
ui/ componentes compartilhados
docs/
lgpd-compliance.md
repo-structure.md
supabase/
migrations/ fonte de verdade do banco e RLS- Web: Next.js, React, Tailwind CSS e Geist.
- Mobile: Expo, React Native e NativeWind preparado.
- Backend: Supabase Auth, DB, Realtime e RLS.
- Estado: Zustand com persistencia local.
- Sincronizacao: React Query preparado no web.
- Login com Supabase Auth e modulos para aluno, professor e admin.
- Admin autoriza professores; professores aceitam alunos.
- Historico de pagamentos na tela de planos.
- Home com treino do dia, streak, volume e plano.
- Tela de treino com registro de serie rapido.
- Avisos de treino com horario escolhido pelo aluno e alertas de estagnacao.
- Biblioteca de exercicios no modulo de professor com link de video embutido na ficha.
- Historico com volume, PR automatico e grafico simples.
- Gestao inicial de aluno, professor e vinculo.
- Planos mensal, trimestral, semestral e anual com checkout InfinitePay.
npm install
npm run devMobile:
npm run mobile:start
npm run mobile:iosMotion:
npm run motion:dev
npm run motion:render:launch
npm run motion:render:set
npm run motion:render:pr
npm run motion:render:checkout- Crie um projeto no Supabase.
- Aplique as migrations em
supabase/migrations. - Copie
.env.examplepara.env.locale, para o app web local, paraapps/web/.env.local. - Preencha
NEXT_PUBLIC_SUPABASE_URLeNEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYouNEXT_PUBLIC_SUPABASE_ANON_KEY. - Para rodar
npm run seed:admin, preenchaSUPABASE_SERVICE_ROLE_KEYsomente em.env.local.
Configure no projeto Vercel as mesmas variaveis usadas pelo web:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYouNEXT_PUBLIC_SUPABASE_ANON_KEYNEXT_PUBLIC_APP_URLcom a URL publica do deployAPP_URLcom a mesma URL publica do deployNEXT_PUBLIC_PRIVACY_CONTACT_EMAILINFINITEPAY_HANDLE, se o checkout real estiver ativoINFINITEPAY_WEBHOOK_URL, se houver webhook dedicadoINFINITEPAY_LINKS_URL, se precisar sobrescrever o endpoint padrao da InfinitePay
Nao publique SUPABASE_SERVICE_ROLE_KEY com prefixo NEXT_PUBLIC_. Use essa chave apenas em rotinas server-side/admin.
- Preencha
INFINITEPAY_HANDLEcom a InfiniteTag sem$. - Ajuste
NEXT_PUBLIC_APP_URLpara a URL publica do app em producao. - Opcionalmente, preencha
INFINITEPAY_WEBHOOK_URL.
Sem INFINITEPAY_HANDLE, a tela de planos gera apenas o payload de teste do checkout.
O principio central da interface e salvar local primeiro e sincronizar depois. O treino nao pode depender de loading para registrar uma serie.
- Aviso publico em
/privacidade. - Consentimento destacado para observacoes de saude.
- Central de privacidade no app para exportacao local, limpeza do dispositivo e pedidos do titular.
- Migration
20260502024925_add_lgpd_privacy_controls.sqlcria consentimentos e pedidos LGPD com RLS.
Configure NEXT_PUBLIC_PRIVACY_CONTACT_EMAIL com o canal do encarregado antes de publicar.