Git Product home page Git Product logo

find-a-friend-api's Introduction

Find a Friend - API

Projeto Node.js com Fastify e Zod, para praticar a Clean Architecture, utilizando os 5 princípios SOLID, na implementação dos casos de uso, repositórios e controllers da aplicação. Também seguindo o TDD na criação de toda a aplicação, iniciando pelos testes unitários, para percorrer os ciclos RED>GREEN>REFACTOR até finalizar a implementação de todos os casos de uso, repositórios de testes, e controllers da aplicação.

User Stories

Nesse desafio desenvolveremos uma API para a adoção de animais, a FindAFriend API, utilizando SOLID e testes.

Regras da aplicação

  • 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
  • Deve ser possível se cadastrar como uma ORG
  • Deve ser possível realizar login como uma ORG

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

--

Como rodar o projeto

Clone o repositório

gh repo clone https://github.com/rcmonteiro/find-a-friend-api.git

Instale as dependências

pnpm i

Suba as imagens da aplicação

docker-compose build
docker-compose up -d

Configure as variáveis de ambiente

cp .env.sample .env
cp .env.sample .env.docker

Edite o arquivo .env.docker para apontar o postgress para o host definido em nosso docker-compose:

DATABASE_URL="postgresql://docker:docker@localhost:5432/find-a-friend-pg?schema=public"

Estamos com dois arquivos de variáveis de ambiente, um para rodar localmente, assim podemos rodar os testes apontando para o banco de dados em localhost, mas no docker, precisamos apontar pelo container_name, que é como funciona o ambiente de redes nas imagens do docker.

Configure o prisma

pnpm prisma generate
pnpm prisma migrate dev

Rode a aplicação

pnpm start:dev

Teste as rotas

Rodar os testes unitários e e2e

pnpm run test:coverage

alt text

CI/CD

O projeto também conta com um workflow do GIT para sempre rodar os testes unitários para todo push em qualquer branch, e rodar a atualização com tag dinâmica da aplicação no Docker Hub, para todo pull request na branch master.

Testando um push, os testes são executados no Github alt text

find-a-friend-api's People

Contributors

rcmonteiro avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.