Skip to content

Projeto sendo desenvolvido para a disciplina de projeto integrador.

License

Notifications You must be signed in to change notification settings

PedroHenriqueDevBR/adocao-animal-web

Repository files navigation

🐶 Adoção de animais 🐱

Este projeto está sendo desenvolvido para a disciplina de projeto integrador, ministrada no Instituto Federal do Piauí (Campus Central).

Developer GitHub top language Front-emd Back-end

📝 Visão Geral

Aplicação desenvovida para ser um facilitador na adoção de animais.

💬 Descrição

Trata-se do desenvolvimento de uma aplicação para facilitar a comunicação entre quem possui um animal para adoção com quem deseja adotar.

Essa aplicação possui o intuito de ser de simples de utilização pelas pessoas para que o processo de adoção de um animal seja o mais simples possível. Há algumas regras que devem ser seguidas para que alguém possa publicar um animal ou para que alguém possa adotar um animal.

Regras para quem deseja publicar um animal para adoção:

  • Primeiramente a pessoa deve estar logada, caso contrário deve-se criar um perfil;
  • A pessoa precisa fornecer os dados de contato; Não pode ter dois ou mais bloqueios de publicações;
  • Tem a obrigação de escolher o melhor destino (solicitante da adoção) para o animal.

Regras para quem deseja adotar um animal:

  • Primeiramente a pessoa deve estar logada, caso contrário deve-se criar um perfil;
  • A pessoa precisa fornecer os dados de contato;
  • Precisa fazer o pedido de adoção ao dono do animal.

O sistema deve possuir alguma forma de controle de publicações onde haverá os usuários moderadores e os administradores, cada um desses terão poderes diferentes dentro do sistema.

Poderes do moderador:

  • Pode modificar descrições de postagens de outras pessoas;
  • Pode bloquear uma postagem (Nesse caso o moderador deverá explicar o motivo e se for falsa comunicação o moderador perderá o poder);
  • O moderador pode desbloquear postagens de outras pessoas.

Poderes do administrador: O administrador possui todos os poderes do moderador, o mais seguro é haver apenas um administrador, que será o responsável por todos os moderadores, o único poder que o administrador tem a mais do que o moderador é a capacidade de tirar o poder de moderador.

"Os bloqueios são essenciais para o sistema para garantir que ninguém irá utilizar a plataforma para publicações fora de contexto, portanto, se dois bloqueios forem aplicados em um perfil o mesmo será bloqueado."


🚀 Tecnologias utilizadas


  • TypeScript - Linguagem de programação utilizada no desenvolvimento Front-end.
  • Angular - Framework utilizado no desenvolvimento da aplicação fton-end.
  • Python - Linguagem de programação utilizada no desenvolvimento Back-end.
  • Django - Framework utilizado no desenvolvimento da REST API.
  • DRF - Toolkit utilizado junto do Django para facilitar a criação da REST API.

💡 Modelagem da aplicação

Esta seção irá mostrar como a aplicação foi modelada para que pudesse atender todas as necessidades propostas da descrição do desafio.

A modelagem foi criada antes de iniciar o desenvolvimento da aplicação, com o objetivo de guiar o desenvolvimento e evitar erros que pudessem atrapalhar o andamento do desenvolvimento.

Modelagem do banco de dados

Pŕototipo da aplicação

⚠️ Pré-requisitos

O desenvolvimento dessa aplicação utiliza como base as seguintes tecnologias e versões apresentadas abaixo.

  1. Node: 14.17.6
  2. Angular CLI: 12.2.5
  3. Python 3.6 ou superior
  4. Django 3.2.6 ou superior
  5. git version 2.17.1

ℹ️ Instalação

# Baixe o repositório do projeto
git clone https://github.com/PedroHenriqueDevBR/aplicacao-para-adocao-de-animais.git
cd aplicacao-para-adocao-de-animais/

# ================== Django ===================== #
# Instale as dependencias do Django
cd backend/animal_adoption/

# Crie um ambiente virtual para instalar os pacotes do pip de forma isolada
pip3 install virtualenv
python3 -m virtualenv venv

# Ative o ambiente virtual
source venv/bin/activate

# Instale as dependências do projeto backend
pip install -r requirements.txt

# Aplique as migrações no banco de dados
python manage.py makemigrations
python manage.py migrate

# Rode o projeto localmente
python manage.py runserver

# =================== Angular ==================== #
# Instale as dependências do Angular
cd ../../frontend/animal-adoption-frontend/

# Instale as dependências do projeto frontend
npm install

# Rode a aplicação Angular (Frontend)
npm run start

✔️ Funcionalidades

  • Sprint 01 (Contas e localizações)
    • Registro de usuário;
    • Login de usuário;
    • Adicionar o imagem ao perfil no usuário logado;
    • Remover imagem do perfil logado
    • Atualizar dados do perfil logado;
    • Criar estado;
    • Editar estado;
    • Remover estado;
    • Criar cidade e vincular a um estado;
    • Editar cidade;
    • Remover cidade;
    • Adicionar poder de moderador a um determinado perfil (admin only);
    • Remover poder de moderador a um determinado perfil (admin only);
    • Bloquear um determinado perfil (admin only).
  • Sprint 02 (Animal e metadados)
    • Registrar animal;
    • Editar dados do animal;
    • remover animal;
    • Adicionar imagem do animal;
    • Adicionar vacina ao cartão de vacina do animal;
    • Apresentar histórico de vacinação do animal;
    • Apresentar todos os animais disponíveis para adoção da cidade do usuário logado;
    • Apresentar os meus animais;
    • Apresentar os animais da minha localdiade no mapa
    • Selecionar um animal e mostrar a localização dele
    • Filtrar animais
  • Sprint 03 (Adoção e controle de moderadores)
    • Solicitar adoção de um animal;
    • Apresentar todos os pedidos de adoção;
    • Confirmar ou negar pedido de adoção;
    • Buscar animal de acordo com o código;
    • Animal bloqueado pelo dono
    • Aninal bloqueado por moderador
    • Animal desbloqueado pelo dono (se não houver bloqueio de moderador registrado)
    • Animal desbloqueado por moderador

✔️ Futuro

  • Apresentar todos os animais de um dono específico
  • registrar patrocinador
  • Listar patrocinadores na home page
  • Criar uma página para gerenciamento de anúncios (para patrocinadores)