API REST do aplicativo Trainify para gerenciar treinos, exercícios, sessões, métricas e evolução do usuário.
📃 Sobre • 🛠️ Tecnologias • ✨ Funcionalidades • 🚀 Como rodar • 📖 Documentação • 🧪 Testes
A Trainify API é o backend do aplicativo Trainify, responsável por fornecer uma camada REST para cadastro e acompanhamento de treinos. A aplicação permite gerenciar exercícios, criar e finalizar sessões de treino, registrar pesos, acompanhar métricas e consumir dados de progresso com uma estrutura organizada em módulos.
O projeto foi construído com Fastify, TypeScript, Prisma ORM e PostgreSQL, com foco em performance, tipagem forte e documentação interativa via Swagger.
- 🟢 Node.js — Ambiente de execução JavaScript server-side.
- ⚡ Fastify — Framework web rápido e eficiente.
- 🔷 TypeScript — Tipagem estática e maior segurança no desenvolvimento.
- 🗃️ Prisma ORM — ORM moderno e type-safe para integração com bancos relacionais.
- 🐘 PostgreSQL — Banco de dados relacional robusto.
- 🐳 Docker — Containerização do banco de dados local.
- 📖 Swagger — Documentação interativa da API.
- 🧪 Vitest — Testes automatizados.
- 🧩 Zod — Validação de entradas e contratos de dados.
- 🔍 Biome — Linting e formatação de código.
- 🏋️ Cadastro e gestão de exercícios
- 🗓️ Criação de treinos e planos de treino
- ⏱️ Início, pausa e finalização de sessões de treino
- 📝 Registro de logs de exercícios
- ⚖️ Acompanhamento de peso e metas de peso
- 📊 Geração de métricas e progresso do usuário
- 🏆 Módulo de gamificação e evolução do perfil
- 🔐 Autenticação via JWT
- 🛡️ Validação de dados com Zod
- 📖 Documentação interativa da API com Swagger
- 🧪 Testes automatizados com Vitest
-
Clone o repositório:
git clone https://github.com/seu-usuario/trainify-api.git
-
Acesse a pasta do projeto:
cd trainify-api -
Instale as dependências:
npm install
-
Crie o arquivo de variáveis de ambiente:
cp .env.example .env
Exemplo de conteúdo:
NODE_ENV=dev PORT=3333 JWT_SECRET=seu_jwt_secret DATABASE_URL="postgresql://docker:docker@localhost:5432/trainify?schema=public"
Suba o container do PostgreSQL com Docker:
docker compose up -dExecute as migrations do Prisma:
npm run migrateOpcionalmente, rode os seeds para popular o banco:
npm run seedInicie o servidor em modo de desenvolvimento:
npm run devA API ficará disponível em http://localhost:3333.
Com o servidor rodando, acesse a documentação interativa do Swagger em:
Também existe um endpoint de health check disponível em:
Os testes são executados com Vitest e cobrem os principais fluxos da aplicação.
# Executa todos os testes
npm run test
# Executa os testes em modo watch
npm run test:watch
# Gera relatório de cobertura
npm run test:coveragesrc/
modules/
exercise/
gamification/
metric/
session/
user/
weight/
workout/
lib/
env/Contribuições são bem-vindas. Caso queira colaborar, abra uma issue ou envie um pull request com as melhorias propostas.
Se curtiu o projeto, deixe uma ⭐ aqui no GitHub — isso ajuda muito!
Feito com ♥ por João Otávio Schonarth