Motor inteligente para geração e gestão de treinos personalizados. Uma API de alta performance que combina Type Safety, Integração com IA e Arquitetura Modular.
A Trainify API é o coração do ecossistema Trainify. Diferente de soluções convencionais, nossa API vai além do CRUD tradicional ao integrar inteligência artificial generativa para criar planos de treino verdadeiramente personalizados.
- Geração Inteligente: Utiliza Google AI (Gemini) para criar planos adaptados ao perfil de cada usuário
- Performance Extrema: Construída com Fastify, um dos frameworks Node.js mais rápidos
- Type-Safety: TypeScript e Zod garantem consistência de tipos do banco à resposta da API
- Arquitetura Modular: Cada domínio encapsulado em seu próprio módulo
A API conta com documentação interativa Swagger disponível em /docs, gerada automaticamente a partir dos schemas Zod para garantir sincronia com a implementação.
| Categoria | Tecnologias |
|---|---|
| Core | Node.js 24, Fastify 5, TypeScript 5 |
| Banco de Dados | PostgreSQL (Neon), Drizzle ORM |
| Autenticação | Better Auth, Zod |
| Integrações | AI SDK, Google AI (Gemini) |
| Qualidade | Biome, Husky |
- Node.js 24.x (ou 22.x com suporte a
--env-file) - pnpm (recomendado)
- Conta no Neon (PostgreSQL serverless)
- Chave da API Google AI
git clone https://github.com/willianOliveira-dev/trainify-api.git
cd trainify-api
pnpm install
cp .env.example .envConfigure as variáveis no arquivo .env:
DATABASE_URL=sua_url_do_neon
BETTER_AUTH_SECRET=seu_secret
BETTER_AUTH_URL=http://localhost:3333
GOOGLE_GENERATIVE_AI_API_KEY=sua_chave_apipnpm drizzle:migrate # Gerar e aplicar migrações
pnpm drizzle:studio # Interface gráfica do banco
pnpm drizzle:seed # Popular com dados de exemplopnpm dev # Modo desenvolvimento
pnpm build # Build para produção
pnpm start # Modo produção- Auth: Gerenciamento de identidade com Better Auth
- Workout Plans: CRUD e lógica de planos de treino
- Workout Sessions: Acompanhamento de treinos em tempo real
- IA: Integração com Google AI para geração inteligente
- Stats: Agregação de métricas e desempenho
| Comando | Descrição |
|---|---|
pnpm dev |
Inicia servidor em desenvolvimento |
pnpm build |
Compila para produção |
pnpm start |
Inicia servidor em produção |
pnpm drizzle:migrate |
Aplica migrações |
pnpm drizzle:studio |
Abre interface do banco |
pnpm lint |
Verifica problemas de código |
pnpm format |
Formata código automaticamente |
A API foi projetada para funcionar com o Trainify Frontend, um aplicativo Next.js que adiciona vídeos do YouTube para demonstração dos exercícios.
| Método | Rota | Descrição |
|---|---|---|
| POST | /api/auth/* |
Autenticação |
| GET | /api/workout-plans |
Lista planos do usuário |
| POST | /api/ia/generate-workout |
Gera treino com IA |
| POST | /api/workout-sessions |
Inicia nova sessão |
src/
├── modules/ # Módulos funcionais
│ ├── auth/ # Autenticação
│ ├── ia/ # Integração com IA
│ ├── stats/ # Métricas
│ ├── workout-plans/ # Planos de treino
│ └── workout-sessions/ # Sessões ativas
├── db/ # Configuração do banco
├── lib/ # Utilitários
└── server.ts # Entry point
Este projeto foi desenvolvido exclusivamente para fins educacionais e como parte de portfólio pessoal.
- Direitos Autorais: A integração com a API do YouTube é utilizada apenas para busca de vídeos públicos. O Trainify não hospeda, reivindica autoria ou possui direitos sobre os vídeos exibidos.
- Natureza do Projeto: Este não é um produto comercial. Os planos gerados por IA são demonstrações e não substituem orientação profissional qualificada.
- Uso do Código: Sinta-se à vontade para explorar e usar como referência para seus próprios estudos.
