Este é o README para a aplicação de adoção de animais de estimação. Através desta aplicação, você pode cadastrar, listar, atualizar e excluir animais de estimação disponíveis para adoção. Além disso, também é possível se cadastrar como uma organização (ORG) e visualizar detalhes dos animais para adoção.
- Cadastro de Animais de Estimação
- Listagem de Todos os Animais Cadastrados
- Atualização dos Dados de um Animal
- Exclusão de um Animal
- Listagem de Animais Disponíveis para Adoção por Cidade
- Filtragem de Animais por Características
- Visualização Detalhada de um Animal para Adoção
- Cadastro de Organizações (ORG)
- Login para Organizações (ORG)
- Listagem de Animais Cadastrados por uma Organização (ORG)
- Listagem de Animais Adotados por uma Organização (ORG)
- Ao listar os animais, é obrigatório informar a cidade
- Uma organização (ORG) precisa fornecer um endereço e um número de WhatsApp
- Um animal deve estar associado a uma organização (ORG)
- Usuários interessados em adotar um animal entrarão em contato com a organização (ORG) via WhatsApp
- Todos os filtros, exceto a cidade, são opcionais
- Para que uma organização (ORG) acesse a aplicação como administrador, ela precisa estar logada
- Apenas administradores podem cadastrar, atualizar e excluir animais
- Os dados de um animal só podem ser atualizados pelo administrador que o cadastrou
Este projeto utiliza as seguintes tecnologias e ferramentas:
- Linguagem: TypeScript
- Banco de Dados: Prisma
- Framework Web: Fastify
- Gerenciamento de Imagens: Cloudinary
- Testes: Vitest
- Validação de Dados: Zod
Para configurar e utilizar este projeto, siga os seguintes passos:
- Clone este repositório
- Instale as dependências com
npm install
- Crie um arquivo
.env
na raiz do projeto e preencha as variáveis de ambiente de acordo com o arquivo.env.example
- Execute as migrations com
npm run migrate:dev
- Execute o projeto com
npm run dev
Para executar os testes, utilize o comando npm run test
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter mais informações.