Skip to content

Servicio de Gestión Veterinaria realizado con React y ExpressJS

Notifications You must be signed in to change notification settings

bryandelgado99/Polivet-App

Repository files navigation

Aplicación de Gestión Veterinaria - POLIVET 🐶😺

POLIVET es un sistema encargado de automatizar la gestión de una veterinaria y sus principales actores (veterinarios, pacientes y tratamientos). Este proyecto consta de dos componentes:

  • Backend

       API RESTful desarrollada en Node.js y Express.js con conexión a MongoDB, Atlas o local, según la necesidad.

  • Frontend

       Diseño y presentación de la interfaz de usuario usando React como biblioteca JavaScript para esta tarea.

Tecnologías Usadas

  • Backend

Se usó ReactJS, esta es una biblioteca JavaScript que permite construir interfaces de usuario a partir de piezas individuales llamadas componentes.

  • Frontend

Node.js como motor de ejecución multiplataforma basado en JavaScript, diseñado para crear aplicaciones web escalables y que utiliza un modelo asíncrono y controlado por eventos para manejar múltiples conexiones al mismo tiempo.

Express.js es un framework para Node.js usado para el desarrollo del backend de aplicaciones web, es decir, ayuda a construir API RESTful, basadas en JavaScript.

  • Base de Datos

MongoDB, local y Atlas, fue la base de datos elegida para el proyecto, esta es del tipo NoSQL (almacena datos en documentos JSON), es altamente escalable y adecuada para grandes volúmenes de datos.

Conoces nuestra API | Documentación

La API de PoliVet posee un amplio catálogo de documentación, en el cual, se detalla cada uno de los funcionamientos de los diferentes apartados de la API, su composición y resultados. Puedes acceder a esta misma mediante el siguiente enlace: Documentación PoliVet APIRestful

Instalación Local

  1. Clona el repositorio
  git clone https://github.com/bryandelgado99/Polivet-App.git
  1. Navega a la carpeta a la que desees acceder
  cd backend 

   o

  cd frontend
  1. Configura las variables de entorno

  2. Instala las dependencias del proyecto

  npm install
  1. Inicia el servidor
  npm run dev

Important

Los puntos del 3 al 5 deben realizarse para cada componente de este proyecto, es decir, para el backend y el frontend.

Ejecución Local

Despliegue

POLIVET debe desplegarse por componentes, para este caso se uso:

Important

No te olvides de definir las variables de entorno necesarias para el correcto funcionamiento de cada componente.

Para facilitar el despliegue del frontend en Netlify, primero se corrió el comando npm run build para generar la carpeta dist que contiene todo lo que este componente necesita.

Variables de entorno

Para ejecutar este proyecto, necesitas añadir las siguientes variables de entorno a tu archivo .env

Este archivo se debe ubicar en la raíz de la carpeta que corresponda al componente requerido.

/backend/.env y /frontend/.env

Variables para backend

Base de datos

  • MONGODB_URI = tu URL de MongoDB local o Atlas

Nodemailer

  • URL_FRONTEND = http://localhost:5173/

  • URL_BACKEND = http://localhost:3000/api/

SMTP de Gmail

  • HOST_MAILTRAP = smtp.gmail.com

  • PORT_MAILTRAP = 465

  • USER_MAILTRAP = tu correo electrónico de Gmail

  • PASS_MAILTRAP = tu contraseña

Note

Actualmente el proyecto usa el SMTP de Gmail, sin embargo, también es posible utilizar Mailtrap o el SMTP de Hotmail. Para este último, se debe añadir la siguiente variable:

  • EMAIL_SERVICE = hotmail

JSON Web Tokens

  • JWT_SECRET

Variables para frontend

Vite

  • VITE_BACKEND_URL = http://localhost:3000/api

Referencia API

Veterinario

  • Registrar un veterinario
  POST /api/registro

Body

{
  "nombre":"Juan",
  "apellido":"Perez",
  "direccion":"San Carlos",
  "telefono":"0999999999",
  "email":"juanP@hotmail.com",
  "password":"1234"
}
  • Iniciar Sesión
  POST /api/login

Body

{
  "email":"juanP@hotmail.com",
  "password":"1234"
}
  • Listar veterinarios
  GET /api/veterinarios
  • Confirmar Token
  GET /api/confirmar/:token
  • Recuperar contraseña
  POST /api/recuperar-password

Body

{
  "email":"juanP@hotmail.com",
}
  • Comprobar token para recuperar contraseña
  GET /api/recuperar-password/:token
  • Nueva contraseña
  POST /api/nuevo-password/:token

Body

{
  "password":"5678",
  "confirmpassword":"5678"
}

Important

Las rutas a continuación, correspondientes a Veterinario, se deben autenticar mediante un Bearer Token

  • Perfil del veterinario
  GET /api/perfil
  • Actualizar contraseña
  PUT /api/veterinario/actualizarpassword

Body

{
  "passwordactual":"5678",
  "passwordnuevo":"hola"
}
  • Detalle del veterinario
  GET /api/veterinario/:id
  • Actualizar perfil del veterinario
  PUT /api/veterinario/:id

Body

{
  "nombre":"nombre-actualizado",
  "apellido":"apellido-actualizado",
  "telefono":"022222222"
}

Paciente

  • Iniciar Sesión
  POST /api/paciente/login

Body

{
  "email":"juan@gmail.com",
  "password":"9124htxqam7"
}

Important

Las rutas a continuación, correspondientes a Paciente, se deben autenticar mediante un Bearer Token

  • Registro
  POST /api/paciente/registro

Body

{
  "nombre":"Fide",
  "propietario":"Juan",
  "email":"juan@gmail.com",
  "celular":"0999999999",
  "convencional":"022222222",
  "ingreso":"03-21-2024",
  "sintomas":"Corte de pelo y desparasitación",
  "veterinario":"652d36f304c0962cf422d335"
}

Note

El formato para fechas es mes-día-año.

  • Listar pacientes
  GET /api/pacientes
  • Perfil del paciente
  GET /api/paciente/perfil
  • Detalle del paciente
  GET /api/paciente/:id
  • Actualizar perfil del paciente
  PUT /api/paciente/actualizar/:id

Body

{
  "nombre":"Fidedigno",
  "propietario":"Juan Perez",
  "email":"juan@gmail.com",
  "sintomas":"Corte de pelo, desparasitación y limpieza de orejas"
}
  • Eliminar paciente
  DELETE /api/paciente/eliminar/:id

Body

{
  "salida":"03-22-2024" 
}

Tratamiento

Important

Todas las rutas correspondientes a Tratamiento se deben autenticar mediante un Bearer Token

  • Registro o creación del tratamiento
  POST /api/tratamiento/registro

Body

{
  "nombre":"Limpieza",
  "descripcion":"Limpieza de orejas",
  "prioridad":"Alta",
  "paciente":"652efd300b16c9fca733d669"
}
  • Detalle del tratamiento
  GET /api/tratamiento/:id
  • Actualizar tratamiento
  PUT /api/tratamiento/:id

Body

{
  "nombre": "Tratamiento de limpieza",
  "prioridad":"Media"
}
  • Eliminar tratamiento
  DELETE /api/tratamiento/:id
  • Cambiar el estado del tratamiento
  POST /api/tratamiento/estado/:id

Licencia

Proyecto licenciado bajo MIT License

Autores

Información Adicional

Documentación de la API: API - veterinaria

Video del funcionamiento de la aplicación: POLIVET

Capturas de pantalla

Interfaz de Usuario

  • Landing Page

Image text

  • Inicio de Sesión

Image text

  • Registro

Image text

  • Recuperación de Contraseña

Image text

  • Confirmación de Correo Electrónico

Image text

  • Página no Encontrada

Image text

  • Dashboard o Panel Central de Información

Image text

Estructura del proyecto

Polivet-App
├─ backend
│  ├─ .env.example
│  ├─ package-lock.json
│  ├─ package.json
│  └─ src
│     ├─ config
│     │  └─ nodemailer.js
│     ├─ controllers
│     │  ├─ paciente_controller.js
│     │  ├─ tratamiento_controller.js
│     │  └─ veterinario_controller.js
│     ├─ database.js
│     ├─ helpers
│     │  └─ crearJWT.js
│     ├─ index.js
│     ├─ middlewares
│     │  ├─ autenticacion.js
│     │  └─ validacionVeterinario.js
│     ├─ models
│     │  ├─ Paciente.js
│     │  ├─ Tratamiento.js
│     │  └─ Veterinario.js
│     ├─ routers
│     │  ├─ paciente_routes.js
│     │  ├─ tratameinto_routes.js
│     │  └─ veterinario_routes.js
│     └─ server.js
├─ frontend
│  ├─ .env
│  ├─ index.html
│  ├─ package-lock.json
│  ├─ package.json
│  ├─ postcss.config.cjs
│  ├─ public
│  │  └─ images
│  │     ├─ catforgot.jpg
│  │     ├─ doglogin.jpg
│  │     └─ dogregister.jpg
│  ├─ README.md
│  ├─ src
│  │  ├─ App.css
│  │  ├─ App.jsx
│  │  ├─ assets
│  │  │  ├─ code.png
│  │  │  ├─ consulting.png
│  │  │  ├─ dark.png
│  │  │  ├─ design.png
│  │  │  ├─ dog-hand.webp
│  │  │  ├─ doglost.jpg
│  │  │  ├─ facebook.png
│  │  │  ├─ fondos
│  │  │  │  ├─ captura-1.png
│  │  │  │  ├─ captura-2.png
│  │  │  │  ├─ captura-3.png
│  │  │  │  ├─ captura-4.png
│  │  │  │  ├─ captura-5.png
│  │  │  │  ├─ captura-6.png
│  │  │  │  └─ captura-7.png
│  │  │  ├─ github.png
│  │  │  ├─ linkedin.png
│  │  │  ├─ rocket.webp
│  │  │  ├─ twitter.png
│  │  │  ├─ web1.png
│  │  │  ├─ web2.png
│  │  │  ├─ web3.png
│  │  │  ├─ web4.png
│  │  │  ├─ web5.png
│  │  │  ├─ web6.png
│  │  │  └─ youtube.png
│  │  ├─ componets
│  │  │  ├─ Alertas
│  │  │  │  └─ Mensaje.jsx
│  │  │  ├─ Formulario.jsx
│  │  │  ├─ Perfil
│  │  │  │  ├─ CardPerfil.jsx
│  │  │  │  └─ FormularioPerfil.jsx
│  │  │  └─ Tabla.jsx
│  │  ├─ context
│  │  │  └─ AuthProvider.jsx
│  │  ├─ index.css
│  │  ├─ layout
│  │  │  ├─ Auth.jsx
│  │  │  └─ Dashboard.jsx
│  │  ├─ main.jsx
│  │  ├─ paginas
│  │  │  ├─ Actualizar.jsx
│  │  │  ├─ Confirmar.jsx
│  │  │  ├─ Crear.jsx
│  │  │  ├─ Forgot.jsx
│  │  │  ├─ LandinPage.jsx
│  │  │  ├─ Listar.jsx
│  │  │  ├─ Login.jsx
│  │  │  ├─ NotFound.jsx
│  │  │  ├─ Perfil.jsx
│  │  │  ├─ Register.jsx
│  │  │  ├─ Restablecer.jsx
│  │  │  └─ Visualizar.jsx
│  │  └─ routes
│  │     └─ PrivateRoutes.jsx
│  ├─ tailwind.config.cjs
│  └─ vite.config.js
└─ README.md

About

Servicio de Gestión Veterinaria realizado con React y ExpressJS

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages