Skip to content

Latest commit

 

History

History
194 lines (141 loc) · 6.43 KB

File metadata and controls

194 lines (141 loc) · 6.43 KB

Centro Pokémon

Prévia do Pokemon Center

Aplicação desenvolvida em Node.js para auxiliar o gerenciamento de pokémons em um Centro Pokémon.
Este projeto integra o desafio técnico do processo seletivo para Desenvolvedor Júnior da SIMINT.


Tecnologias

NodeJS NestJS Jest Swagger

React Next JS TypeScript

TailwindCSS DaisyUI HTML5 CSS3

Postgres JWT

Documentação da API

A API da aplicação Pokémon Center foi documentada por utilizando Swagger e inclui alguns exemplos de dados e de respostas para cada requisição.

Ao executar o projeto localmente, pode-se acompanhar a documentação por meio deste endereço: http://localhost:3001/api.

Pré-requisitos

  • Node.js v20 ou superior
  • PostgreSQL instalado e rodando
  • Banco de dados pokemon_center criado no PostgreSQL
CREATE DATABASE pokemon_center;

Instalação

  1. Clone este repositório:
git clone https://github.com/sammid37/PokemonCenter.git
cd pokemon-center
  1. Instale as dependências do backend:
cd backend
npm install
  1. Crie o arquivo backend/.env com as seguintes variáveis:
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=<seu_username>
DB_PASSWORD=<seu_password>
DB_NAME=pokemon_center

JWT_SECRET=<seu_jwt_secret>
JWT_EXPIRES_IN=7d

Altere a porta do banco se necessário.

  1. Inicie o backend:
# cd backend
npm run start:dev

A API estará disponível em http://localhost:3001. As tabelas serão criadas automaticamente pelo TypeORM.

  1. Em outro terminal, instale as dependências do frontend:
cd frontend
npm install
  1. Crie o arquivo frontend/.env.local com as seguintes variáveis:
NEXT_PUBLIC_API_URL=http://localhost:3001

Altere a porta se necessário.

  1. Inicie o frontend:
# cd frontend
npm run dev
  1. Acesse http://localhost:3000 no navegador.

Você pode se cadastrar como:

  • 🎒 Treinador — cadastra e gerencia seus próprios pokémons e solicita cuidados no Centro Pokémon
  • 🏥 Enfermeira Joy — visualiza todos os pokémons cadastrados e aprova ou recusa as solicitações de cuidado dos treinadores

Testes unitários

O backend conta com testes unitários implementados com Jest e ts-jest, cobrindo as camadas de service e controller da aplicação.

Arquivos com cobertura de testes

Arquivo Camada
src/auth/auth.controller.spec.ts Controller
src/auth/auth.service.spec.ts Service
src/pokemons/pokemons.controller.spec.ts Controller
src/pokemons/pokemons.service.spec.ts Service
src/pokemon-actions/pokemon-actions.controller.spec.ts Controller
src/pokemon-actions/pokemon-actions.service.spec.ts Service
src/users/users.service.spec.ts Service
Coverage

PokéCenter Backend Tests Coverage

Comandos

Execute os comandos a seguir dentro do diretório backend/:

# Rodar todos os testes
npm run test

# Rodar os testes em modo watch — re-executa ao salvar arquivos
npm run test:watch

# Rodar os testes e exibir o relatório de cobertura
npm run test:cov

# Rodar os testes e salvar o relatório de cobertura em uma pasta personalizada
npm test -- --coverage --coverageDirectory='my-coverage-report'

Deploy

Banco de Dados: Neon Backend: Render Frontend: Vercel

Visite: https://pokemon-center-green.vercel.app/

Sobre o projeto

Prévia Trainador Prévia Enfermeira Joy
Prévia Treinador Prévia Enfermeira

As funcionalidades a seguir foram implementadas conforme especificado no desafio técnico:

Autenticação

  • Cadastro de usuários com e-mail e senha
  • Login com geração de token JWT
  • Proteção de rotas — apenas usuários autenticados podem acessar o sistema

Gerenciamento de Pokémons (CRUD)

  • Cadastro de pokémons com os campos obrigatórios: nome, tipo, nível, HP e número da Pokédex

Listagem de pokémons

  • Edição de pokémons: apenas o treinador que cadastrou pode editar
  • Exclusão de pokémons: apenas o treinador que cadastrou pode excluir

Frontend

  • Interface desenvolvida com React, Next.js e TypeScript
  • Página de login e registro de treinadores
  • Dashboard com listagem de pokémons em cards
  • Formulário para adicionar e editar pokémons
  • Modal de confirmação para exclusão

Backend

  • API RESTful desenvolvida com NestJS e TypeScript
  • Banco de dados PostgreSQL com TypeORM
  • Endpoints protegidos por autenticação JWT

Extras

  • Consumo da PokéAPI para melhorar a experiência de buscar por pokémons e obter o número oficial da pokédex, demais dados de cadastro ficam por conta do usuário;
  • Solicitar cuidados para seus pokémons (ação aprovada ou recusada por uma enfermeira Joy)
  • Implementação de testes unitários no backend da aplicação + GitHub Actions