Giter VIP home page Giter VIP logo

chacodevsteam_proyectointegradorcuartosemestre's Introduction

CHACO DEVS TEAM - PROYECTO INTEGRADOR

Integrantes

:godmode:Balbuena, Fernando Nicolas

:godmode:Espinola, Renzo Oscar

:godmode:Giménez Ríos, Tatiana T.

:godmode:Gutiérrez, Juana Natalia

:godmode:Gutiérrez, Alejo Hernán

:godmode:Gutiérrez, Juan Carlos

:godmode:Gutiérrez, René Agustín

:godmode:Iván, Matías

:godmode:Rossi, Ludmila

:godmode:Valdez, Carlos Federico

:godmode:Valladares, Juan Ignacio

BACKEND

image

Infraestructura de Microservicios con Spring Boot 3 , Java 17 y Docker

Este repositorio contiene una infraestructura de microservicios desarrollada con Spring Boot 3 y Java 17, que se divide en dos dominios principales: Infraestructura y Negocio. Aquí encontrarás información sobre cada uno de estos componentes y cómo se relacionan entre sí.

Infraestructura

La infraestructura de microservicios se encarga de proporcionar las herramientas necesarias para que los microservicios de negocio funcionen de manera eficiente y escalable. En este repositorio, hemos implementado los siguientes componentes de infraestructura:

Spring Admin

Spring Admin es una herramienta que proporciona un panel de administración para monitorear y gestionar los microservicios de manera centralizada. Puedes acceder al panel de administración de Spring Admin a través de la URL http://localhost:8762 una vez que los microservicios estén en ejecución.

6

a.Accede al panel de administración de Spring Admin para monitorear y gestionar los microservicios.

image

image

Eureka Discovery

Eureka Discovery es un servicio de registro y descubrimiento que permite que los microservicios se registren automáticamente y se descubran entre sí. Esto facilita la comunicación entre los microservicios sin necesidad de conocer las ubicaciones exactas de los demás. Se accede través de la URL http://localhost:8761

9

Spring Config (Repositorio remoto)

Spring Config es un sistema de gestión de configuración que centraliza la configuración de todos los microservicios. Utilizamos un repositorio remoto para almacenar la configuración de los microservicios y garantizar la coherencia y la fácil administración de la configuración. Se accede través de la URL http://localhost:8888 User: admin Password: qwerty Development: Nos muestra las configuraciones para un ambiente de desarrollo

URL: Development

10

Production: Nos muestra las configuraciones para un ambiente de de produccion

URL: Production

image

Negocio

El dominio de Negocio se compone de varios microservicios que gestionan diferentes aspectos de la aplicación. Aquí, se describen los principales microservicios de Negocio:

Utilizaremos la interfaz SWAGGER para visibilizar y realizar las pruebas sobre los endpoints

CUSTOMER

El microservicio CUSTOMER se encarga de la gestión de clientes y ofrece las siguientes funcionalidades:

image

image

PRODUCT

El microservicio PRODUCT se encarga de la gestión de productos y ofrece las siguientes funcionalidades:

  • CRUD (Crear, Leer, Actualizar y Eliminar) para gestionar los datos de los productos.
  • Métodos para controlar el stock de productos y gestionar su disponibilidad. Se accede través de la URL http://localhost:8083/swagger-ui/index.html#/

image

TRANSACTIONS

El microservicio TRANSACTIONS se encarga de gestionar las transacciones de compra de productos y vincular datos de clientes (CUSTOMER) con los productos comprados (PRODUCT). Sus funcionalidades incluyen:

image

Persistencia de los datos

Mediante la configuracion seteada previamente en el docker-compose.yml podemos optar en dos modos de persistencia de datos dependiendo de la rigurosidad de las pruebas:

H2 (Development)

H2 es una base de datos relacional ligera, rápida y versátil, adecuada para una variedad de aplicaciones:

  • Portabilidad: H2 puede funcionar en diferentes plataformas y sistemas operativos, lo que facilita su implementación en una variedad de entornos.

  • Rendimiento: Es conocida por su rendimiento rápido y eficiente, lo que la convierte en una opción popular para aplicaciones que requieren consultas rápidas y procesamiento de datos.

  • Modo Embebido: Puede integrarse fácilmente en aplicaciones Java como una biblioteca, lo que significa que puede ejecutarse en el mismo proceso que la aplicación, sin necesidad de un servidor de base de datos separado.

  • Compatibilidad con Estándares SQL: H2 es compatible con los estándares SQL ANSI, lo que facilita la migración de otras bases de datos relacionales a H2.

  • Características Avanzadas: A pesar de su tamaño compacto, H2 ofrece muchas características avanzadas como compatibilidad con procedimientos almacenados, disparadores, encriptación y replicación.

  • Consola Web: H2 incluye una consola web fácil de usar que permite administrar y visualizar datos de manera gráfica.

    <dependencies>
           <dependency>
     		 <groupId>com.h2database</groupId>
     	         <artifactId>h2</artifactId>
               </dependency>
     </dependencies>
    

MySQL (Productivo)

MySQL es un sistema de gestión de bases de datos relacional (RDBMS por sus siglas en inglés) de código abierto y gratuito. Es uno de los sistemas de bases de datos más populares en el mundo y es ampliamente utilizado en aplicaciones web y empresariales.

  • Base de Datos Relacional: MySQL es un sistema de base de datos relacional, lo que significa que organiza los datos en tablas relacionadas entre sí. Cada tabla consta de filas y columnas, y se pueden establecer relaciones entre diferentes tablas utilizando claves primarias y foráneas.

  • Lenguaje SQL: MySQL utiliza Structured Query Language (SQL) para gestionar y manipular datos. SQL es un lenguaje estándar utilizado para crear, leer, actualizar y eliminar datos en bases de datos relacionales.

  • Multiusuario y Multihilo: MySQL es capaz de manejar múltiples usuarios concurrentes y múltiples conexiones al mismo tiempo. También es multihilo, lo que significa que puede realizar múltiples operaciones en paralelo para mejorar el rendimiento.

  • Escalabilidad: MySQL es altamente escalable, lo que significa que puede manejar grandes volúmenes de datos y un alto número de usuarios simultáneos. Es adecuado tanto para aplicaciones pequeñas como para grandes sistemas empresariales.

  • Portabilidad: MySQL es compatible con varias plataformas, incluyendo Windows, Linux, macOS y otras. Esto significa que una base de datos MySQL creada en un sistema operativo se puede transferir y utilizar en otro sistema operativo sin problemas.

  • Almacenamiento de Datos Seguro: MySQL proporciona funciones de seguridad robustas para proteger los datos, incluyendo la autenticación de usuarios, la autorización basada en roles y la encriptación de datos para mantener la confidencialidad.

  • Comunidad Activa: MySQL tiene una comunidad de usuarios y desarrolladores muy activa. Esto significa que hay una gran cantidad de recursos, documentación y soporte disponibles en línea.

  • Motor de Almacenamiento: MySQL permite utilizar diferentes motores de almacenamiento para sus tablas, como InnoDB (el motor de almacenamiento por defecto con soporte de transacciones ACID) y MyISAM (un motor de almacenamiento más antiguo, pero rápido para aplicaciones que no requieren transacciones complejas).

      <dependency>
          <groupId>com.mysql</groupId>
          <artifactId>mysql-connector-j</artifactId>
       <scope>runtime</scope>
     </dependency>
    

MySQL Workbench (Productivo)

Al inicializarse los microservicios se generara automaticamente la BD (Springboot) y las tablas correspondientes para cada microservicio de negocio image

n 1

image

MySQL Workbench https://localhost:3001 (Productivo)

Tambien se cuenta con la posibildad de ingresar al aplicativo de MySQL Workbench mediante la siguiente URL: https://localhost:3001 (NOTA: prestar atencion al https posee la s al final)

  1. Ingresar a la url https://localhost:3001

    a. En caso de advertencia de seguridad realizar los siguientes pasos:

    1. Clickear en Configuracion avanzada

    2. Acceder a locahost

    image

  2. Si accedemos por primera vez al entorno de MySQL Workbench, debemos realizar la configuracion de la conexion con la BD a. Clickeamos en el + MySQL Connections y configuramos de la siguiente manera:

    1. Connection name: patitaspetshop connection
    2. hostname: host.docker.internal
    3. port: 3306
    4. username: root
    5. password: admin

n 2

image

image

Instrucciones de Uso

Para utilizar esta infraestructura de microservicios, sigue estos pasos:

  1. Clona este repositorio a tu máquina local.
  • Es requerido tener previamente instaldo DOCKER y JAVA 17

  • Validar que en la estructura del proyecto este seteado SDK JAVA 17

    image

  1. Debemos crear las imagenes de docker mediante maven

    a. Se debe correr el comando de mvn clean install a todos los microservicios comenzando por los de infraestructura y luego los de negocio.

    b. Tambien mediante las tareas de maven que nos proporciona Intellij IDEA, CLEAN -> COMPILE -> INSTALL

    n3

    c. Esto ira generando las imagenes de docker, se debe realizar solo una vez por cada microservicio.

  2. Inicia los componentes de infraestructura y negocio (Spring Admin, Eureka Discovery, Spring Config, customer, product ,transaction) utilizando Docker Compose en modo daemon (background) con el siguiente comando:

Comandos docker de utilidad:

Una vez realizado el proceso de maven en los 6 microservicios, se debera abrir una terminal en la path donde se encuentra el docker-compose, "..\Chaco Devs Team-Proyecto Integrador\ChacoDevsTeam_ProyectoIntegradorCuartoSemestre\ECOMMERCE PatitasPetshop\patitaspetshopparent>" y ejecutar el siguiente comando

1- Iniciar los contenedores dockerizados:

docker-compose up -d

Donde se iran iniciando cada microservicio en el orden determinado para que primero se levanten los de infraestructura y por ultimo los de negocio.

Cuando veamos en el log de consola que se registraron en Eureka los mcs de negocio, esto nos indicara que ya estan operativos para su uso.

image

bd-transactions | 2023-11-04T04:47:41.783Z INFO 1 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_BUSINESSDOMAIN-TRANSACTION/f9b7cd47c6eb:businessdomain-transaction:8082 - registration status: 204

id-eureka | 2023-11-04T04:47:42.331Z INFO 1 --- [nio-8761-exec-3] c.n.e.registry.AbstractInstanceRegistry : Registered instance BUSINESSDOMAIN-TRANSACTION/f9b7cd47c6eb:businessdomain-transaction:8082 with status UP (replication=true)

2- En caso de realizar alguna modificacion de codigo o propiedades a algun microservicio se debera ejecutar el comando:

docker-compose up -d --force-recreate

3- Si necesita detener los contenedores: docker-compose stop

4- Si necesita eliminar los volumenes: docker-compose rm (Tener cuidado con el siguiente comando al eliminar un volumen puede perder la base de postgresql)

Recuerda configurar adecuadamente las propiedades de cada microservicio en el docker-compose para garantizar su correcto funcionamiento (Development/Production), tan solo cambiando un valor a una variable :

-Dspring.profiles.active=production

-Dspring.profiles.active=development

Como cada microservicio es independiente tenemos la chance de estar trabajando algunos en modo productivo o en modo desarrollo.

En este caso el microservicio de transacciones estara en un ambiente productivo, implica el uso de la configuracion de base de datos de MySQL

image

En este caso el microservicio de clientes estara en un ambiente de desarrollo, implica el uso de la configuracion de base de datos en memoria H2

image

FRONTEND

roadmap

Tecnologías Utilizadas

Este proyecto utiliza la biblioteca React para construir una aplicación web relacionada con la venta de productos para mascotas. La aplicación cuenta con diferentes componentes que se encargan de funciones específicas, como la identificación de usuarios, la selección y visualización de productos, el proceso de entrega, y el registro de nuevos usuarios. Este código representa una aplicación que se comunica con un servidor a través de solicitudes HTTP utilizando Axios.

Inicialización del proyecto:

-Ubicarse en la carpeta ChacoDevsTeam_ProyectoIntegradorCuartoSemestre/ECOMMERCE PatitasPetshop/patitaspetshopfrontend/src y luego ejecutar la terminal.En ella el primer comando a utlizar será npm install,con el lograremos instalar/actualizar todas las dependencias necesarias. -Luego utilzizaremos el comando npm start,se utiliza para iniciar el servidor de desarrollo. Cuando ejecutas este comando en la terminal, se inicia un servidor local que sirve tu aplicación React y proporciona una URL a la que puedes acceder desde tu navegador. Este servidor de desarrollo facilita la visualización y prueba de tu aplicación durante el desarrollo.

Consideraciones adicionales

  • Asegúrate de tener todas las dependencias instaladas antes de ejecutar la aplicación.
  • Para loguarse y poder cargar prodcutos se debe usar el usuario:admin@admin y contraseña: admin
  • Algunas imagenes para cargar son: ALIMENTOS PARA PERROS

https://d3ugyf2ht6aenh.cloudfront.net/stores/001/426/797/products/dogchow-perros-adultos-controldepeso-21kg1-3e4f17791dec93c69e16099485931801-640-0.png

https://d2kmqq5rew4hrh.cloudfront.net/1741-medium_default/vital-can-complete-ad-raza-med-y-gde-20kg.jpg

https://nutrican.com.ar/wp-content/uploads/2022/09/SIEGER-PUPPY-SMALL.png

🐱ALIMENTOS PARA GATOS

https://www.canrock.com.ar/8310-thickbox_default/cat-chow-gatitos.jpg

https://petshopmardelplata.com.ar/wp-content/uploads/2022/08/7613039947739_1.png

https://mascolandiapets.com/productos/producto-75267831/C7MOSKVe1Smny9JleLR3.png

🐶ACCESORIOS PARA PERRO

https://www.petco.com.mx/medias/?context=bWFzdGVyfGltYWdlc3wzMjIyMjR8aW1hZ2UvZ2lmfGltYWdlcy9oNWQvaDkzLzg5NDAzNjIxNzAzOTguZ2lmfGM2MTFhNTZmYjI2YmYyNmEwYjZlODQ2ZDE5MDc2MTA0ZWI0ODU0MTUyYjAxMzM0YzQzOTI4MjY4YzFmNzYwNWM

https://static-shop.vivapets.com/media/catalog/product/cache/e12a3504b2f0ed30df071ad930a3248d/2/8/2800000726-1.png

🐱ACCESORIOS PARA GATO

https://www.animal-factor.com/wp-content/uploads/2018/03/COLLAR-GATO-DIJE-ROSADO-1980x1980.png

https://mundoanimalsantafe.com.ar/wp-content/uploads/2022/01/pro-plan-kitten.png

Carpeta Components

Documentación del Código

1. Componente Card (Card.js):

  • Descripción: Este componente representa la estructura visual de una tarjeta de producto.
  • image
  • Props:
    • nombre: Nombre del producto.
    • precio: Precio del producto.
    • imagen: URL de la imagen del producto.
  • Estructura:
    • Contenedor principal con la clase .product-card.
    • Contenedor de título con la clase .card-title-cont.
    • Etiqueta h4 para el nombre del producto.
    • Etiqueta img para la imagen del producto.
    • Etiqueta p para mostrar el precio.

2. Componente Cards (Cards.js):

  • Descripción: Este componente representa una colección de tarjetas de productos.

  • image

  • Props:

    • allProducts: Array de objetos que contiene información sobre todos los productos.
  • Estructura:

    • Mapea el array de productos y utiliza el componente Card para cada uno.
    • Cada tarjeta está envuelta en un enlace (Link) que redirige a la página de detalle del producto.

3. Componente Carrito (Carrito.js):

-image

  • Descripción: Gestiona el carrito de compras, opciones de pago y realiza la compra.
  • Funcionalidades:
    • Muestra los productos en el carrito.
    • Permite seleccionar el método de pago.
    • Envia la orden de compra al servidor.
  • Estructura:
    • Utiliza el contexto del carrito y Redux para obtener y gestionar la información del carrito.
    • Permite al usuario seleccionar entre Mercado Pago, Tarjeta de Crédito/Débito o Efectivo.
    • Al confirmar la compra, redirige al usuario a la página de entrega.

4. Componente Contador (Contador.js):

  • Descripción: Componente que gestiona la cantidad de productos a agregar al carrito.
  • Props:
    • initial: Cantidad inicial.
    • stock: Stock disponible.
    • onAdd: Función para agregar productos al carrito.
  • Estructura:
    • Botones para incrementar y decrementar la cantidad.
    • Muestra la cantidad actual y un botón para agregar al carrito.

5. Componente ListaCarrito (ListaCarrito.js):

image

  • Descripción: Muestra un producto en el carrito con opción para eliminarlo.
  • Props:
    • product: Objeto con información del producto.
  • Estructura:
    • Muestra la imagen, nombre, cantidad, precio unitario y subtotal del producto.
    • Botón para eliminar el producto del carrito.

6. Componente NavBar (NavBar.js):

WhatsApp Image 2023-11-13 at 20 54 25

  • Descripción: Barra de navegación con enlaces a diferentes secciones y opciones de inicio de sesión.
  • Funcionalidades:
    • Permite navegar a diversas secciones de la aplicación.
    • Muestra opciones diferentes según si el usuario está o no autenticado.

7. Componente Perfil (Perfil.js):

  • Descripción: Muestra el historial de compras del usuario.
  • Funcionalidades:
    • Obtiene el historial de compras y la información de los productos comprados.
    • Muestra la fecha, monto, medio de pago y productos de cada transacción.
  • Notas:
    • Requiere la autenticación del usuario.

8. Componente SearchBar (SearchBar.js):

  • Descripción: Barra de búsqueda que permite filtrar productos por nombre.
  • Funcionalidades:
    • Filtra productos por nombre.
    • Permite mostrar todos los productos.
  • Notas:
    • Utiliza Redux para gestionar el estado de los productos filtrados.

9. Componente Usuario (Usuario.js):

  • Descripción: Muestra opciones de navegación dependiendo del estado de inicio de sesión y el rol del usuario.
  • Funcionalidades:
    • Redirige a la página de administración si el usuario es un administrador.
    • Redirige a la página de perfil si el usuario está autenticado.

10. Estilos y Recursos:

  • Archivos CSS proporcionan estilos para diferentes componentes.
  • Utiliza imágenes para el logo, carrito y botón de búsqueda.

Notas Generales:

  • Se hace uso de enrutamiento (react-router-dom) para la navegación entre páginas.
  • La comunicación con el servidor se realiza mediante solicitudes HTTP, utilizando Axios.
  • Algunos componentes dependen del contexto (useCarritoContexto) para acceder a información global.

Carpeta Redux:

1. Acciones:

  1. getProducts Descripción: -Realiza una solicitud al servidor para obtener la lista de productos. -Actualiza el estado global con la información de los productos.

Uso: -Invocado al cargar la aplicación o al necesitar una actualización de productos. -Se dispara mediante la función dispatch de Redux.

  1. postUser Descripción: -Realiza una solicitud al servidor para registrar un nuevo cliente.

Uso: -Se utiliza cuando se completa un formulario de registro de usuario. -Avisa al usuario sobre el éxito o fracaso de la operación.

  1. postProducto Descripción: -Realiza una solicitud al servidor para agregar un nuevo producto.

Uso: -Se utiliza al completar un formulario para agregar un nuevo producto. -Proporciona una alerta indicando el resultado de la operación.

  1. postPago Descripción: -Realiza una solicitud al servidor para registrar una nueva transacción de pago.

Uso: -Se utiliza después de que un usuario confirma la compra. -Muestra en la consola la información del pago y un mensaje de éxito.

  1. alimentoByNombre Descripción: -Realiza una búsqueda por nombre de producto en el servidor.

-Actualiza el estado global con los productos que coinciden con la búsqueda. Uso: Se llama cuando el usuario realiza una búsqueda en la barra de búsqueda. Proporciona una alerta si no se encuentran productos.

2. Reducer

Descripción: -El reducer maneja las actualizaciones del estado global de la aplicación. -Contiene un estado inicial con la lista de todos los productos, el carrito de compras y la consulta de búsqueda. -Se encarga de procesar las acciones y actualizar el estado en consecuencia. Acciones Manejadas: -GET_PRODUCTS: Actualiza la lista de todos los productos en el estado global.

3. Store

Descripción: -La tienda (store) de Redux contiene el estado global de la aplicación. -Utiliza el middleware redux-thunk para permitir acciones asíncronas. -Se crea utilizando createStore de Redux y se proporciona el reducer.

Carpeta Views:

1. Accesorios

image

Descripción:

El componente Accesorios es una parte de la interfaz de usuario de una aplicación web construida con React. Este componente se encarga de mostrar y filtrar una lista de productos considerados como "accesorios". Además, proporciona funcionalidades para filtrar los productos por precio y nombre.

Estructura del Código:

  1. Importaciones:

    • React: Biblioteca principal de React.
    • useEffect y useState: Hooks de React para manejar efectos secundarios y el estado del componente.
    • useSelector y useDispatch: Hooks de React Redux para acceder al estado global y despachar acciones.
    • getProducts: Acción importada desde el archivo de acciones para obtener la lista de productos.
    • Accesorios.css: Archivo de estilos específico para el componente.
    • Cards: Componente de tarjetas utilizado para mostrar los productos.
  2. Estado Local:

    • precioMin, precioMax, nombre: Estados locales para manejar los filtros de precio y nombre.
  3. Efectos y Acciones:

    • useEffect: Se utiliza para llamar a la acción getProducts al cargar el componente, obteniendo así la lista de productos.
    • dispatch: Se utiliza para despachar la acción getProducts.
  4. Filtrado de Productos:

    • Se filtran los productos según su tipo (ACCESORIO) y dentro de un rango de precio especificado.
    • La función de filtro también tiene en cuenta el nombre del producto para realizar búsquedas.
  5. Manejo de Cambios en Filtros:

    • handleFilterChange: Función para manejar cambios en los filtros de precio y nombre.
  6. Restablecimiento de Filtros:

    • resetFilters: Función para restablecer los filtros a sus valores iniciales.
  7. Renderización de la Interfaz:

    • Se presenta una sección de filtros con campos para precio mínimo, precio máximo y búsqueda por nombre.
    • Botón para restablecer los filtros.
    • Se muestra un mensaje si no hay productos disponibles, de lo contrario, se utilizan las tarjetas del componente Cards para mostrar los productos filtrados.

2. Admin

image

Descripción:

El componente Admin representa el panel de administración de la aplicación. Proporciona opciones de navegación y un botón para cerrar sesión.

Estructura del Código:

  1. Importaciones:

    • React: Biblioteca principal de React.
    • Link y useHistory: Utilizados para la navegación entre páginas.
    • Admin.css: Archivo de estilos específico para el componente.
  2. Funcionalidades:

    • handleLogout: Función que realiza tareas de cierre de sesión al hacer clic en el botón "Cerrar Sesión".
  3. Interfaz de Usuario:

    • Encabezado indicando "Panel de Administración".
    • Lista de opciones de navegación: "Ver Transacciones", "Gestionar Productos", "Ver todos los productos".
    • Botón "Cerrar Sesión" para salir del panel de administración.

3. Detail

-image

Descripción:

El componente Detail se encarga de mostrar los detalles de un producto seleccionado. Permite al usuario agregar el producto al carrito de compras.

Estructura del Código:

  1. Importaciones:

    • React: Biblioteca principal de React.
    • useEffect, useState: Hooks de React para manejar efectos secundarios y el estado del componente.
    • axios: Biblioteca para realizar solicitudes HTTP.
    • useParams: Hook de React Router para acceder a los parámetros de la URL.
    • Contador: Componente utilizado para gestionar la cantidad de productos a agregar al carrito.
    • Link: Componente utilizado para la navegación entre páginas.
    • useCarritoContexto: Hook personalizado para acceder al contexto del carrito.
  2. Estado Local:

    • producto: Estado local para almacenar los detalles del producto seleccionado.
    • goCart: Estado local para gestionar la navegación al carrito.
  3. Efectos y Funciones:

    • useEffect: Se utiliza para obtener los detalles del producto seleccionado al cargar el componente.
    • onAdd: Función que se ejecuta al agregar productos al carrito, actualizando el estado goCart.
  4. Interfaz de Usuario:

    • Se muestran detalles como el nombre, precio e imagen del producto.
    • Se presenta un componente Contador para seleccionar la cantidad de productos a agregar al carrito.
    • Dependiendo del estado goCart, se muestra un enlace para finalizar la compra o el contador para agregar al carrito.

4. Control

image

Descripción:

El componente Control se encarga de registrar nuevos productos en la aplicación. Proporciona un formulario para ingresar los detalles del producto.

Estructura del Código:

  1. Importaciones:

    • React: Biblioteca principal de React.
    • postProducto: Acción importada desde el archivo de acciones para agregar un nuevo producto.
    • useDispatch y useHistory: Hooks de React Redux para despachar acciones y para la navegación entre páginas.
  2. Estado Local:

    • newProduct: Estado local para almacenar los detalles del nuevo producto.
    • productos: Estado local para almacenar la lista actual de productos.
  3. Efectos y Funciones:

    • useEffect: Se utiliza para cargar la lista de productos al montar el componente.
    • handleChange: Función para manejar cambios en los campos del formulario.
    • handleSubmit: Función para enviar la solicitud de registro del nuevo producto.
    • handleGoBack: Función para volver atrás en la navegación.
  4. Interfaz de Usuario:

    • Formulario con campos para ingresar el código, nombre, precio, tipo, especie, stock e imagen del nuevo producto.
    • Botones para registrar el producto y volver atrás.

5. Entrega

image

Descripción:

Este componente maneja la selección de opciones de entrega, como el retiro en la sucursal más cercana o la entrega a domicilio. También permite ingresar la dirección de entrega en caso de elegir la opción de entrega a domicilio.

Uso:

Se utiliza para recopilar la información necesaria para la entrega de productos.

6. Form

image

Descripción:

Este componente se encarga del formulario de registro de nuevos usuarios. Incluye validaciones en tiempo real para asegurar que se ingresen datos válidos.

Uso:

Se utiliza para que los usuarios puedan registrarse en la plataforma.

7. FullProductos

Descripción:

Este componente muestra una lista completa de productos disponibles. Permite añadir productos al carrito de compras.

Uso:

Se utiliza para visualizar y seleccionar productos.

8. Gatos

image

Descripción:

Este componente filtra y muestra productos específicos para gatos según criterios como precio, tipo, y marca.

Uso:

Se utiliza para mostrar una selección específica de productos para gatos.

9. Home

image

Descripción:

Este componente representa la página de inicio con un carrusel de imágenes, enlaces a categorías de productos y ofertas especiales.

Uso:

Se utiliza como la página principal de la aplicación.

10. Identificacion

Descripción:

Este componente recopila la información esencial del usuario para la finalización de la compra.

Uso:

Se utiliza para identificar al usuario antes de completar la compra.

11. Login

image

Descripción:

Este componente permite a los usuarios iniciar sesión, verifica la existencia del correo electrónico y redirige a la página de inicio o al perfil del usuario.

Uso:

Se utiliza para que los usuarios puedan acceder a sus cuentas.

12. Pagos

image

Descripción:

El componente Pagos es responsable de gestionar las opciones de pago y realizar la confirmación de la compra.

Estado:

  • opcionPago: Almacena la opción de pago seleccionada por el usuario.
  • datosTarjeta: Almacena los datos de la tarjeta cuando se elige el pago con tarjeta.
  • mensaje: Almacena mensajes de éxito o error.

Funciones Principales:

  • handleOptionChange: Maneja el cambio en la opción de pago.
  • handlePagar: Realiza la lógica de pago y muestra mensajes de confirmación o error.

Estructura del Renderizado:

  • Muestra formularios condicionales dependiendo de la opción de pago seleccionada.

13. Perros

Descripción:

El componente Perros muestra productos relacionados con perros, con opciones de filtrado por precio, tipo y marca.

Estado:

  • precioMin, precioMax: Define el rango de precios a filtrar.
  • tipo: Almacena el tipo de producto seleccionado para filtrar.
  • marca: Almacena la marca seleccionada para filtrar.

Funciones Principales:

  • handleFilterChange: Maneja los cambios en los filtros.
  • resetFilters: Restablece los filtros a sus valores iniciales.

Estructura del Renderizado:

  • Muestra productos filtrados o un mensaje si no hay productos disponibles.

14. Transacciones:

image

Descripción:

El componente Transacciones muestra información sobre las transacciones realizadas, incluyendo detalles del cliente y productos.

Estado:

  • transacciones: Almacena la lista de transacciones.
  • clienteInfo: Almacena información del cliente para cada transacción.
  • productoInfo: Almacena información del producto para cada transacción.

Funciones Principales:

  • listarTransacciones: Obtiene y actualiza la lista de transacciones.
  • obtenerInformacionProducto: Obtiene información del producto por su ID.
  • obtenerInformacionCliente: Obtiene información del cliente por su ID.
  • volverAAdmin: Redirige a la página de administración.

Estructura del Renderizado:

  • Muestra detalles de cada transacción, cliente y productos asociados.

chacodevsteam_proyectointegradorcuartosemestre's People

Contributors

renzo-espinola avatar nicobalbuena avatar ludmilailenrss avatar juanvalladaresv2 avatar federico65744 avatar patiky avatar alejohgz avatar ventc avatar diosjuanvero2015 avatar naty33 avatar tatianagimenezrios avatar

Stargazers

Ariel Betancud avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chacodevsteam_proyectointegradorcuartosemestre's Issues

1.3.3-BACKEND NEGOCIO-Creacion de Microservicio Transaction (Transacciones)

Se requiere desarrollar el mcs de transacciones, el cual heredara las dependencias del dominio de negocio y debera implementar las siguientes dependencias:

             <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-webflux</artifactId>
	</dependency>
	<dependency>
		<groupId>org.yaml</groupId>
		<artifactId>snakeyaml</artifactId>
		<version>2.0</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>

La entidad debera estar conformada con los siguientes atributos:

Transaction
id
referencia
idCliente
fechaTransaccion
monto
descripcion
estado;
canal;
List producttransactions;

Producttransaction . ( Una transaccion puede tener asociados varios productos) Por eso debe ser una relacion de 1 a muchos

 id;
 idProducto;
 cantidadProducto; 
 Transaction transaction;

Este debera implementar las capas de Controlador interfaces y servicios.
Los endpoints necesarios en el controller deben ser los siguientes:

1)/transaction/listarTransacciones
2)
/transaction/transaccionesCliente/{id}
3)/transaction/modificarTransaccion/{id}
4)
/transaction/nuevaTransaccion
5)_/transaction/borrarTransaccion/{id}

Aplicar la siguiente configuracion en el bootstrap.yml:

springdoc:
  swagger-ui:
    path: /swagger/index.html
    enabled: true
eureka:
  client:
    serviceUrl:
      defaultZone: ${EUREKA_SERVER:http://localhost:8761/eureka}
  instance:
    hostname: localhost
    prefer-ip-address: 'true'
spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: infraestructuradomain-configserver
      failFast: true
      #name of base properties config file, before profile
      name: config-client
      #profile: development
      label: master
      username: admin
      password: qwerty
      retry:
        max-attempts: 1
        max-interval: 1000
  application:
    name: businessdomain-transaction
server:
  port: '8082'
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    env:
      show-values: always
    configprops:
      show-values: always

Realizar las pruebas de los diferentes endpoints en el entorno SWAGGER : http://localhost:8082/swagger-ui/index.htm

1.1-BACKEND-Creacion estructura de microservicios

Se requiere crear una estructura de microservicios. la cual tenga herencia de dependencias, este dividida en dos partes:
1).Infraestructura: Este proyecto contendra su propio con solo inyeccion de dependencias acordes a lo que demanda la estructura de infraestructura.
2).Negocios: Este proyecto contendra su propio con solo inyeccion de dependencias acordes a lo que demanda la estructura de negocio.

1.4.2-BACKEND INFRAESTRUCTURA-Creacion de Microservicio Eureka Discovery

Se requiere crear el MCS de eureka discovery, el cual se utilizara para registrar los MCS que utilizarermos tanto para el dominio de negocio e infraestructura.
Este MCS debera heredar las configuraciones del POM padre infraestructura y poseer las siguientes dependencias:

           <dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		<version>3.1.4</version>
	  </dependency>

1.4.1-BACKEND INFRAESTRUCTURA-Creacion de Microservicio Admin Server

Se requiere desarrollar el MCS De admin server, este servira para poder controlar en tiempo real el estado de todos los MCS con metricas, configuraciones, y variables que se hayan implemetado en la configuracion de DOCKER.
Este MCS heredara las configuraciones y dependencias del POM padre (Infraestructura) y ademas debera inyectar las siguientes dependencias:

             <dependency>
		<groupId>de.codecentric</groupId>
		<artifactId>spring-boot-admin-starter-server</artifactId>
		<version>${spring-boot-admin.version}</version>
	</dependency>
	<dependency>
		<groupId>de.codecentric</groupId>
		<artifactId>spring-boot-admin-starter-client</artifactId>
		<version>${spring-boot-admin.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-security</artifactId>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>4.0.1</version>
		<scope>compile</scope>

1.3.2-BACKEND NEGOCIO-Creacion de Microservicio Product (Producto)

Se requiere desarrollar el mcs de producto, el cual heredara las dependencias del dominio de negocio y debera implementar las siguientes dependencias:

             <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-webflux</artifactId>
	</dependency>
	<dependency>
		<groupId>org.yaml</groupId>
		<artifactId>snakeyaml</artifactId>
		<version>2.0</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>

La entidad debera estar conformada con los siguientes atributos:

id
nombre
celular
apellido
direccionEnvio
email

Este debera implementar las capas de Controlador interfaces y servicios.
Los endpoints necesarios en el controller deben ser los siguientes:

1)/product/listarProductos
2)
/product/obtenerProducto/{id}
3)/product/modificarProducto/{id}
4)
/product/nuevoProducto
5)/product/borrarProducto/{id}
6)
/product/actualizarStockProducto
7)/product/obtenerProducto/tipo/{tipo}
8)
/product/obtenerProducto/nombre/{nombre}
9)/product/obtenerProducto/especie/{especie}
10)
/product/obtenerProducto/anyProductByName/{nombre}
11)_/product/obtenerStockProducto/{id}

Aplicar la siguiente configuracion en el bootstrap.yml:

springdoc:
  swagger-ui:
    path: /swagger/index.html
    enabled: true
eureka:
  client:
    serviceUrl:
      defaultZone: ${EUREKA_SERVER:http://localhost:8761/eureka}
  instance:
    hostname: localhost
    prefer-ip-address: 'true'
spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: infraestructuradomain-configserver
      failFast: true
      #name of base properties config file, before profile
      name: config-client
      #profile: development
      label: master
      username: admin
      password: qwerty
      retry:
        max-attempts: 1
        max-interval: 1000
  application:
    name: businessdomain-product
server:
  port: '8083'
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    env:
      show-values: always
    configprops:
      show-values: always

Realizar las pruebas de los diferentes endpoints en el entorno SWAGGER : http://localhost:8083/swagger-ui/index.htm

1.3.1-BACKEND NEGOCIO-Creacion de Microservicio Customer (Clientes)

Se requiere desarrollar el mcs de customer, el cual heredara las dependencias del dominio de negocio y debera implementar las siguientes dependencias:

             <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-webflux</artifactId>
	</dependency>
	<dependency>
		<groupId>org.yaml</groupId>
		<artifactId>snakeyaml</artifactId>
		<version>2.0</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>

La entidad debera estar conformada con los siguientes atributos:

id
nombre
celular
apellido
direccionEnvio
email

Este debera implementar las capas de Controlador interfaces y servicios.
Los endpoints necesarios en el controller deben ser los siguientes:

1)/customer/listarClientes
2)
/customer/buscarId/{id}
3)/customer/buscarNombre/{nombre}
4)
/customer/buscarApellido/{apellido}
5)/customer/buscarEmail/{email}
6)
/customer/modificar/{id}
7)/customer/nuevoCliente
8)
/customer/borrar/{id}

Aplicar la siguiente configuracion en el bootstrap.yml:

springdoc:
  swagger-ui:
    path: /swagger/index.html
    enabled: true
eureka:
  client:
    serviceUrl:
      defaultZone: ${EUREKA_SERVER:http://localhost:8761/eureka}
  instance:
    hostname: localhost
    prefer-ip-address: 'true'
spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: infraestructuradomain-configserver
      failFast: true
      #name of base properties config file, before profile
      name: config-client
      #profile: development
      label: master
      username: admin
      password: qwerty
      retry:
        max-attempts: 1
        max-interval: 1000
  application:
    name: businessdomain-costumer
server:
  port: '8081'
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    env:
      show-values: always
    configprops:
      show-values: always

Realizar las pruebas de los diferentes endpoints en el entorno SWAGGER : http://localhost:8081/swagger-ui/index.htm

1.2-BACKEND-Creacion dominios (Infraestructura-Negocios)

Se requiere configurar tanto los proyectos de infraestructura y negocios con las dependencias necesarias para su optimo funcionamiento.
Dependencias POM
Ambos proyectos heredaran del POM del proyecto principal:

      < parent >

	<groupId>com.utntecnicatura</groupId>

	<artifactId>patitaspetshopparent</artifactId>

	<version>0.0.1-SNAPSHOT</version>

	<relativePath>../pom.xml</relativePath>

     < /parent >

1).Infraestructura:

 a).<groupId>org.springframework.cloud</groupId>
    <artifactId> spring-cloud-dependencies</artifactId>


2).Negocios:

a).  <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>

b)- <groupId>org.springdoc</groupId>
       <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>

c)-  <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-bootstrap</artifactId>


d)-  <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>


e)-  <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-to-slf4j</artifactId>


f)-   <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-config</artifactId>

g)-  <groupId>org.springframework.cloud</groupId>
       <artifactId>artifact:spring-cloud-starter-config</artifactId>

h)-	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-hateoas</artifactId>

i)-	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>

j)-	<groupId>org.postgresql</groupId>
	<artifactId>postgresql</artifactId>
		
k)-	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>

l)-	<groupId>javax.validation</groupId>
	<artifactId>validation-api</artifactId>

m)-	<groupId>io.springfox</groupId>
	<artifactId>springfox-boot-starter</artifactId>

n)-	<groupId>org.springdoc</groupId>
	<artifactId>springdoc-openapi-ui</artifactId>

o)-	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>

p)-	<groupId>org.mapstruct</groupId>
	<artifactId>mapstruct-jdk8</artifactId>

q)-	<groupId>org.mockito</groupId>
	<artifactId>mockito-core</artifactId>
	
r)-	<groupId>com.github.javafaker</groupId>
	<artifactId>javafaker</artifactId>
		




Clase CSS

Se requiere crear el archivo Styles.css junto con los estilos que se utilizarán para el front end

1.4.3-BACKEND INFRAESTRUCTURA-Creacion de Microservicio Config Server

Se requiere crear el MCS de configuracion, este servira para administrar mediante un repositorio externo los perfiles de configuracion, esto nos permitira poder cambiar entre los perfiles production y development a los MCS mediante el DOCKER-COMPOSE.

Perfil Development: Este perfil nos levantara una base de datos de TEST la cual esta alojada en memoria para realizar pruebas.
se debe crear con el siguiente nombre y contenido:

nombre: config-client-development.properties

contenido:

user.role=Developer
user.alias=patitaspetshop
spring.jpa.show-sql=true
spring.datasource.url=jdbc:h2:mem:product
spring.datasource.username=sa
spring.datasource.password=qwerty
spring.datasource.driver-class-name=org.h2.Driver

Perfil Production: Este perfil nos levantara una base de datos PostgreSQL la cual se almacenara en un volumen de docker.
se debe crear con el siguiente nombre y contenido:

nombre: config-client-production.properties

contenido:

user.role=sysadmin
user.alias=patitaspetshop
spring.datasource.url=jdbc:mysql://host.docker.internal:3306/springboot?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1
spring.jpa.properties.hibernate.default_schema=public
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
spring.jpa.show-sql=true

Depedencias: debera heredar del POM padre infraestructura, y ademas inyectar las siguientes dependencias:

            <dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-config-server</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-security</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>4.0.1</version>
		<scope>compile</scope>

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.