/find-a-pet-api-challenge

Resolução de um desafio referente ao módulo API Node.js com SOLID da formação Node.js da Rocketseat.

Primary LanguageTypeScriptMIT LicenseMIT

A API Find a Pet é uma aplicação back-end desenvolvida como resolução de um desafio referente ao módulo API Node.js com SOLID da formação Node.js da Rocketseat.

License


📁 Sobre o projeto

A aplicação desenvolvida consiste em uma API para adoção de animais e foi aplicada boas práticas de código limpo, padrão de arquitetura e de projeto bem como conceitos do SOLID e testes. Foi de grande importância o desenvolvimento desta aplicação, pois pude colocar em prática todos os conceitos aprendidos no módulo estudado. Encontrei algumas dificuldades durante o desenvolvimento, mas realizei consultas e desta forma chegando a resolução do problema.


📝 Regras da aplicação

  • Deve ser possível se cadastrar como uma ORG
  • Deve ser possível realizar login como uma ORG
  • Deve ser possível cadastrar um pet
  • Deve ser possível listar todos os pets disponíveis para adoção em uma cidade
  • Deve ser possível filtrar pets por suas características
  • Deve ser possível visualizar detalhes de um pet para adoção

📝 Regras de negócio

  • Para listar os pets, obrigatoriamente precisamos informar a cidade
  • Uma ORG precisa ter um endereço e um número de WhatsApp
  • Um pet deve estar ligado a uma ORG
  • O usuário que quer adotar, entrará em contato com a ORG via WhatsApp
  • Todos os filtros, além da cidade, são opcionais
  • Para uma ORG acessar a aplicação como admin, ela precisa estar logada

Requisitos

  • Node.js versão 20 ou superior;
  • Docker.

💻 Tecnologias

  • Fastify
  • Fastify JWT
  • Prisma
  • PostgreSQL
  • Zod
  • Docker
  • JavaScript
  • Typescript
  • Dotenv
  • Dayjs
  • Fakerjs
  • Vitest

💡 Utilização

  1. Clone o projeto:
$ git clone https://github.com/JaasielAntunes/find-a-pet-api-challenge.git
  1. Acesse a pasta do projeto:
$ cd find-a-pet-api-challenge
  1. Instale as dependências:
$ npm install
  1. Execute:
$ docker compose up -d
$ npm run migrate:run
  1. Inicie o servidor:
$ npm run dev

💻 Rotas HTTP

POST /orgs/pets

Cadastrar um Pet

Corpo da requisição

{
  "name": "Bino",
  "about": "Bino é um gatinho brincalhão e dorme muito também.",
  "age": "1",
  "type": "Gato",
  "breed": "Siamês",
  "org_id": "7c4d766e-f2a3-46b2-ae04-6bb34eaaf6d8"
}

POST /orgs

Cadastrar uma ORG

Corpo da requisição

{
  "name": "Pet Lover´s",
  "author_name": "Jhon",
  "email": "teste@gmail.com",
  "password": "1234567",
  "whatsapp": "+15555555555",
  "city": "Salvador",
  "state": "Bahia",
  "street": "rua teste",
  "cep": "10001",
  "latitude": -27.2092052,
  "longitude": -40.6401091
}

GET /orgs/find-all

Retorna todas as ORGs cadastradas.

POST /orgs/authenticate

Autenticação de uma ORG cadastrada.

GET /orgs/nearby

Busca de uma ORG próxima informando latitude e longitude como parâmetros.

GET /orgs/pets

Listagem de Pets disponíveis em uma cidade informando a cidade (city) como parâmetro.

GET /orgs/pets/:petId

Busca de um Pet pelo ID.


✅ Sugestão

  • Utilize o Postman ou Insomnia para testar as requisições.

Feito com ❤️ por Jaasiel Antunes - Entre em contato!

Jaasiel Antunes