Enunciado del proyecto - Xertorx/APP_SADM GitHub Wiki

En Bogotá existe una gran cantidad de mascotas que necesitan encontrar un hogar. Fundaciones, refugios y personas que ya no pueden cuidar a su mascota buscan constantemente adoptantes responsables, pero terminan usando grupos de Facebook y WhatsApp, donde la información se pierde, los perfiles no están verificados y no hay un proceso serio para elegir a la persona adecuada. Para solucionar este problema se quiere construir un sistema que sirva como punto de encuentro entre quienes quieren dar en adopción a un perro o gato y quienes quieren adoptar.

El sistema debe manejar tres tipos de usuarios: adoptantes, dadores particulares y administrador. Los dadores y las fundaciones necesitan registrar a cada mascota con su nombre, especie, raza, edad, tamaño, sexo, temperamento, historial de salud, ubicación y una o varias fotos. La idea es que puedan adicionar mascotas en cualquier momento, modificar sus datos, marcarlas como adoptadas e incluso borrarlas si la mascota ya no está disponible o si se registró por error. Las fundaciones además deben poder gestionar varias mascotas al mismo tiempo y contar con una verificación que las distinga de los dadores particulares.

Cuando un adoptante encuentra una mascota que le interesa, debe poder postularse a ella e iniciar un proceso de selección de cuatro etapas configurado por el dador: un formulario con preguntas sobre el hogar del candidato, una revisión de documentos, una entrevista y una visita domiciliaria. Para cada etapa, el dador necesita almacenar las preguntas, los documentos solicitados y el puntaje que otorga esa etapa. La idea es que el dador pueda editar la información de las etapas en cualquier momento antes de recibir postulaciones, e incluso eliminar una etapa si decide no aplicarla.

Cada postulación debe guardar el adoptante que se postuló, la fecha, el puntaje que va acumulando y la etapa en la que se encuentra. Al terminar las cuatro etapas, el sistema debe ordenar a los candidatos de mayor a menor puntaje. El adoptante con el puntaje más alto es quien recibe la mascota, y si esa persona se retracta, el sistema debe pasar automáticamente al siguiente en el ranking.

Una vez formalizada la adopción, la mascota queda vinculada al adoptante y comienza un seguimiento durante seis meses. En este seguimiento, el adoptante debe registrar periódicamente reportes que contienen la fecha, fotos actualizadas, una descripción del estado de la mascota y las respuestas a un cuestionario de bienestar. El dador o la fundación pueden consultar estos reportes en cualquier momento.

Con toda esta información, el sistema debe permitir hacer las siguientes búsquedas:

  1. Buscar mascotas utilizando una parte del nombre.
  2. Buscar mascotas por especie, raza, tamaño o temperamento.
  3. Buscar mascotas cercanas a una ubicación.
  4. Buscar postulaciones de un adoptante.
  5. Buscar fundaciones o refugios utilizando una parte del nombre.