Skip to content

joschonarth/trainify-api

Repository files navigation

🚀 Trainify API

API REST do aplicativo Trainify para gerenciar treinos, exercícios, sessões, métricas e evolução do usuário.

Node.js TypeScript Fastify Prisma Vitest


📃 Sobre • 🛠️ Tecnologias • ✨ Funcionalidades • 🚀 Como rodar • 📖 Documentação • 🧪 Testes


📃 Sobre

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.


🛠️ Tecnologias

  • 🟢 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.

✨ Funcionalidades

  • 🏋️ 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

🚀 Como rodar

📋 Pré-requisitos

🔧 Instalação

  1. Clone o repositório:

    git clone https://github.com/seu-usuario/trainify-api.git
  2. Acesse a pasta do projeto:

    cd trainify-api
  3. Instale as dependências:

    npm install
  4. 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"

🐳 Banco de dados

Suba o container do PostgreSQL com Docker:

docker compose up -d

Execute as migrations do Prisma:

npm run migrate

Opcionalmente, rode os seeds para popular o banco:

npm run seed

▶️ Execução

Inicie o servidor em modo de desenvolvimento:

npm run dev

A API ficará disponível em http://localhost:3333.


📖 Documentação da API

Com o servidor rodando, acesse a documentação interativa do Swagger em:

Também existe um endpoint de health check disponível em:


🧪 Testes

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:coverage

📁 Estrutura do projeto

src/
  modules/
    exercise/
    gamification/
    metric/
    session/
    user/
    weight/
    workout/
  lib/
  env/

⭐ Contribuição

Contribuições são bem-vindas. Caso queira colaborar, abra uma issue ou envie um pull request com as melhorias propostas.


⭐ Apoie este Projeto

Se curtiu o projeto, deixe uma ⭐ aqui no GitHub — isso ajuda muito!


Feito com ♥ por João Otávio Schonarth

GitHub LinkedIn Gmail

About

💪 RESTful API built with Node.js and Fastify to manage user data, workouts, and gamification for the Trainify app.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors