From 24503a31a58d6e1548fa1ce2596cdd8098a2d947 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Thu, 28 Apr 2022 13:13:07 +0200 Subject: [PATCH 01/11] =?UTF-8?q?Punto=2012=20documentaci=C3=B3n=20actuali?= =?UTF-8?q?zada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Añadidas nuevas API en el glosario --- docs/12_glossary.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/12_glossary.adoc b/docs/12_glossary.adoc index ea4111c..fd8ba4d 100644 --- a/docs/12_glossary.adoc +++ b/docs/12_glossary.adoc @@ -37,4 +37,6 @@ Potentially more columns in case you need translations. | _Dotenv_ | _Usada para manejar variables de entorno y nos sirve para proteger la información privada._ | _MongoDB_ | _Es un sistema de base de datos NoSQL orientado a documentos de código abierto._ | _BootStrap_ | _Es un framework front-end utilizado para desarrollar aplicaciones web._ +| _Cloudinary_ | _Api que se encarga de almacenar las imágenes de los juguetes en la nube, en una cuenta creada por nosotros a través de una api key_ +| _GeoCode_ | _Api para calcular los gastos de envío, obteniendo de ella datos de una dirección específica._ |=== From 3dd55e5b1277aa6740b3254250e178a8b0e9b322 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 11:35:55 +0200 Subject: [PATCH 02/11] =?UTF-8?q?Actualizado=20punto=205=20de=20la=20docum?= =?UTF-8?q?entaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se incluyeron imágenes y borrado de una petición que no se utilizaba en restapi --- docs/05_building_block_view.adoc | 11 ++++++----- docs/images/JugueteBloqueConstruccion.png | Bin 0 -> 5468 bytes docs/images/PedidoBloqueConstruccion.png | Bin 0 -> 5340 bytes docs/images/UsuarioBloqueConstruccion.png | Bin 0 -> 5425 bytes restapi/routes/juguete.router.ts | 12 ------------ 5 files changed, 6 insertions(+), 17 deletions(-) create mode 100644 docs/images/JugueteBloqueConstruccion.png create mode 100644 docs/images/PedidoBloqueConstruccion.png create mode 100644 docs/images/UsuarioBloqueConstruccion.png diff --git a/docs/05_building_block_view.adoc b/docs/05_building_block_view.adoc index a0699ea..ac81dc2 100644 --- a/docs/05_building_block_view.adoc +++ b/docs/05_building_block_view.adoc @@ -94,7 +94,7 @@ Juguete se encarga de administrar a los productos que forman parte de nuestro si [options="header",cols="1,2"] |=== |Interfaz|Descripción -| _Cloudinary_ | _Almacén que se encargará de guardar las imágenes de los juguetes en la nube, de tal manera que tengamos un almacén seguro._ +| _Cloudinary_ | _Almacén que se encargará de guardar las imágenes de los juguetes en la nube, de tal manera que tengamos un almacén seguro. Es un servicio que siempre está corriendo y que nos aporta usabilidad y escalabilidad._ |=== === Pedido (caja negra) @@ -128,7 +128,7 @@ according the the following black box template: ==== Bloque de construcción - Nivel 2 -Nosotros decidimos organizar nuestra REST API a través de modelos que definen las entidades tal y como serán en la base de datos, repositorios que serán los encargados de trabajar con la misma y por último los routes que se encargan de gestionar las peticiones. +Nosotros decidimos organizar nuestra REST API a través de modelos que definen las entidades tal y como serán en la base de datos y los routes que se encargan de gestionar las peticiones así como el acceso a datos. [role="arc42help"] **** @@ -142,16 +142,17 @@ Leave out normal, simple, boring or standardized parts of your system === Usuario (caja blanca) image:UsuarioBloqueConstruccion.png["Hierarchy of building blocks"] -Modelo usuario se encarga de definir la estructura que el usuario tendrá en nuestra base de datos. Este modelo es usado por RepositorioUsuario, ya que este será necesario para acciones como pueden ser añadir a un usuario. Por último, el routeUsuario que es el que se encarga de gestionar las peticiones recibidas tendrá que comunicarse con el repositorio, ya que estas peticiones requerirán acceso a datos. +Modelo usuario se encarga de definir la estructura que el usuario tendrá en nuestra base de datos. Este modelo es usado por el routeUsuario que es el que se encarga de gestionar las peticiones recibidas y del acceso a datos como puede ser encontrar, +añadir un usuario, etc. === Juguete (caja blanca) image:JugueteBloqueConstruccion.png["Hierarchy of building blocks"] -Seguimos la misma estructura que con el usuario, se define el esquema de la entidad en el ModeloJuguete, el cual es utilizado por el RepositorioJuguete que a su vez es llamado desde el routerJuguete ya que las peticiones requieren operaciones con acceso a datos (encontrar, añadir, etc). +Seguimos la misma estructura que con el usuario, se define el esquema de la entidad en el ModeloJuguete, el cual es utilizado por el routerJuguete ya que las peticiones requieren operaciones con acceso a datos (encontrar, añadir, etc). En este caso el router también hace uso de la interfaz externa Cloudinary. Esta se encargará de cuando se añade un juguete, coger su imagen y guardarla en su almacén. Clodinary nos devolverá una URL propia que será el direccionamiento de la imagen que ha almacenado y que usaremos para el juguete. === Pedido (caja blanca) image:PedidoBloqueConstruccion.png["Hierarchy of building blocks"] -Volvemos con la misma estructura, ModeloPedido define el esquema el pedido con sus atributos y restricciones que poseerá en la base de datos. Este modelo es necesario para realizar operaciones de acceso a datos, y por tanto, será requerido desde RepositorioPedido. Finalmente este es utilizado de routerPedido ya que peticiones como encontrar, añadir pedidos, etc, necesitan realizar operaciones con la base de datos. Además de a este repositorio, routerPedido hace acceso también al RepositorioJuguete y RepositorioUsuario para por ejemplo buscar los juguetes de un pedido en concreto o encontrar los pedidos de un usuario específico. +Volvemos con la misma estructura, ModeloPedido define el esquema el pedido con sus atributos y restricciones que poseerá en la base de datos. Este modelo es necesario para realizar operaciones de acceso a datos, y por tanto, será requerido desde routerPedido ya que peticiones como encontrar, añadir pedidos, etc, necesitan realizar operaciones con la base de datos. RouterPedido hace acceso también al ModeloJuguete y ModeloUsuario para por ejemplo buscar los juguetes de un pedido en concreto o encontrar los pedidos de un usuario específico. En este caso el router hace acceso tambíen a una API externa que es GeoCode, import de "node-geocoder". Esta internamente recibe una dirección y puede trabajar con distintos proveedores, en nuestro caso openstreetmap. Si su base de datos encuentra la dirección especificada devolverá una serie de datos sobre la misma, como puede ser las coordenadas. Esto nos hace posible posteriormente calcular manualmente el precio por km entre dos direcciones. diff --git a/docs/images/JugueteBloqueConstruccion.png b/docs/images/JugueteBloqueConstruccion.png new file mode 100644 index 0000000000000000000000000000000000000000..cb7d6dff60e4c94392be77ea2f71eeaecd1e98e7 GIT binary patch literal 5468 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 } }); -/** - * Petición que devuelve los juguetes de una categoría específica - */ - jugueteRouter.get("/categoria/:categoria", async (req:Request,res:Response) =>{ - let juguetes = await Juguete.find({ categoria: req.params.categoria }) - if(juguetes){ - res.json(juguetes); - } else { - res.status(500).send("Error al listar juguetes con stock"); - } -}); - jugueteRouter.post("/addStock/:nombre", async (req:Request,res:Response) => { try{ const filter = {nombre: req.params.nombre} From f746b38446c26367511405f14ffa548a6ee88b82 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 11:45:07 +0200 Subject: [PATCH 03/11] =?UTF-8?q?Actualizado=20punto=201=20de=20la=20docum?= =?UTF-8?q?entaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/01_introduction_and_goals.adoc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/01_introduction_and_goals.adoc b/docs/01_introduction_and_goals.adoc index d0d403d..8efcce3 100644 --- a/docs/01_introduction_and_goals.adoc +++ b/docs/01_introduction_and_goals.adoc @@ -10,10 +10,10 @@ El objetivo final de la aplicación es crear un sistema de venta online que resp Los requisitos más importantes son: * Los clientes deben tener la posibilidad de seleccionar y encargar productos para comprarlos. -* Se calcularán los costes de envío consultando la dirección del usuario en su POD (calculando los costes en función de la distnacia del centro de distribución a la dirección del usuario). Este cálculo se llevará a cabo una vez el cliente haya seleccionado los productos a comprar. -* Se mostrarán los costes finales de los productos a comprar por un cliente. Una vez el cliente decida comprarlos, se registrará la venta como realizada y se pasará a su envío. +* Se calcularán los costes de envío consultando la dirección del usuario en su POD (calculando los costes en función de la distnacia del centro de distribución a la dirección del usuario). Este cálculo se llevará a cabo una vez el cliente haya seleccionado los productos a comprar y para ello ha de estar registrado en la aplicación. +* Se mostrarán los costes finales de los productos a comprar por un cliente. Una vez el cliente decida comprarlos, se registrará la venta como realizada y "se pasará a su envío". * Los clientes podrán en todo momento ver sus pedidos realizados. -* El desarrollo de la aplicación será mediante React y TypeScript para el Front-end y Node.js y Express para el Back-end. +* El desarrollo de la aplicación será mediante React y TypeScript para el Front-end y Node.js y Express para el Back-end además de MongoDb para la gestión de la base de datos. * La aplicación deberá ser accesible y estar desplegada usando un sistema de integración continua. La tecnología de despliegue se especificará en el punto 4. La tienda online desarrollada se encargará de vender juguetes infantiles. @@ -26,15 +26,15 @@ La tienda online desarrollada se encargará de vender juguetes infantiles. === Objetivos de calidad -Los cinco objetivos de calidad para la arquitectura que hemos decido seguir (basandonos en nuestras capacidades y los requisitos de la aplicación) son los siguientes. Junto con ellos se muestra una breve descripción de lo que pretendemos conseguir con cada uno de ellos y la prioridad que le damos: +Los cinco objetivos de calidad para la arquitectura que hemos decido seguir (basándonos en nuestras capacidades y los requisitos de la aplicación) son los siguientes. Junto con ellos se muestra una breve descripción de lo que pretendemos conseguir con cada uno de ellos y la prioridad que le damos: [options="header",cols="1,2,2"] |=== |Prioridad|Objetivo de calidad|Descripción del objetivo | _1_ | _Usabilidad_ | _El sistema deberá ser fácil de usar y no requerir de conocimientos específicos o complejos para poder realizar compras. Se debería poder añadir a un encargo, comprar y ver pedidos realizados sin mayor complicación._ | _2_ | _Comprensibilidad_ | _El sistema deberá ser fácil de entender por los usuarios, en todo momento deben saber cómo funciona la aplicación con poco esfuerzo. Los elementos gráficos ayudarán a la Comprensibilidad._ -| _3_ | _Seguridad_ | _El sistema deberá ser seguro en cuanto a los datos personales de cada usuario y también en lo que se refiere a la navegabilidad por la aplicación._ -| _4_ | _Testabilidad_ | _El sistema deberá ser testable para poder comprobar que el funcionamiento es el correcto. También influye en otros atributos de calidad como la seguridad._ +| _3_ | _Seguridad_ | _El sistema deberá ser seguro en cuanto a los datos personales de cada usuario y también en lo que se refiere a la navegabilidad por la aplicación, gestión de imágenes de los productos, etc._ +| _4_ | _Testabilidad_ | _El sistema deberá ser testable para poder comprobar que el funcionamiento es el correcto. También influye en otros atributos de calidad como la seguridad. Se realizarán pruebas unitarias, de aceptación y de carga para asegurar este campo._ | _5_ | _Atractivo_ | _El sistema tendrá una interfaz atractiva, es decir, la interfaz ayudará en aspectos como la usabilidad o comprensibilidad y no entorpecerá el uso de la aplicación por parte de los usuarios._ |=== From a48c59bd3b90e80e21e326de5d648f6e163905c1 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 11:50:02 +0200 Subject: [PATCH 04/11] =?UTF-8?q?Actualizado=20punto=202=20de=20la=20docum?= =?UTF-8?q?entaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/02_architecture_constraints.adoc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/02_architecture_constraints.adoc b/docs/02_architecture_constraints.adoc index c262a7a..6413d16 100644 --- a/docs/02_architecture_constraints.adoc +++ b/docs/02_architecture_constraints.adoc @@ -18,13 +18,13 @@ technical constraints, organizational and political constraints and conventions (e.g. programming or versioning guidelines, documentation or naming conventions) **** -Restricciones tecnicas +Restricciones técnicas [options="header",cols="1,2"] |=== -|Restriccion|Explicacion -|Implementacion| La aplicacion estará formada por un front-end utilizando React con TypeScript y un back-end utilizando NodeJS con Express -|Seguridad| Para mantener la privacidad de los usuarios se almacenará toda su información privada en pods. -|Despliegue| La aplicacion será accesible de manera continua y utilizará un sistema de integracion continuo. +|Restricción|Explicación +|Implementación| La aplicación estará formada por un front-end utilizando React con TypeScript y un back-end utilizando NodeJS con Express +|Seguridad| Para mantener la privacidad de los usuarios se almacenará toda su información privada en PODs. +|Despliegue| La aplicación será accesible de manera continua y utilizará un sistema de integracion continuo. |=== Restricciones organizacionales @@ -32,15 +32,15 @@ Restricciones organizacionales |=== |Restriccion|Explicacion |Equipo| -Alejandro Galán Freire - Aarón García García - Mario Lada Martínez - Jorge López Peláez - Rafael Muñiz Reguera. -|Configuracion y control del repositorio| Toda la aplicacion se encuentra en un repositorio privado de github donde existe una rama develop general y cada persona del equipo trabajará desde una rama propia. -|Fecha limite| La fecha limite del proyecto es el 2 de mayo. +|Configuracion y control del repositorio| Toda la aplicación se encuentra en un repositorio privado de github donde existe una rama develop general donde se irá uniendo el trabajo de todos y cada persona del equipo trabajará desde una rama propia. Cada miembro puede tener varias ramas ya que se creará una por funcionalidad nueva a implementar. +|Fecha límite| La fecha límite del proyecto es el 4 de mayo. |=== Convenciones [options="header",cols="1,2"] |=== -|Convencion|Explicacion -|Documentacion de la arquitectura| Estructura basada en la plantilla arc42. -|Convenciones de codificacion| El proyecto utiliza las convenciones de codigo para el lenguaje de TypeScript y utilizará la guía de estilo de Node. +|Convención|Explicación +|Documentación de la arquitectura| Estructura basada en la plantilla arc42. +|Convenciones de codificación| El proyecto utiliza las convenciones de código para el lenguaje de TypeScript y utilizará la guía de estilo de Node. |Idioma| Español. |=== \ No newline at end of file From 6d3674116da053191d9fb811e57db055f1634958 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 12:11:45 +0200 Subject: [PATCH 05/11] =?UTF-8?q?Actualizado=20punto=204=20de=20la=20docum?= =?UTF-8?q?entaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/04_solution_strategy.adoc | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/docs/04_solution_strategy.adoc b/docs/04_solution_strategy.adoc index 6eb99cd..2660ac3 100644 --- a/docs/04_solution_strategy.adoc +++ b/docs/04_solution_strategy.adoc @@ -3,39 +3,32 @@ Como base, vamos a utilizar el lenguaje de programación TypeScript, impuesto en los requisitos de diseño. Es, en esencia, un superconjunto de JavaScript que añade tipado. Para realizar nuestro sistema de ventas hemos decidido utilizar la MERN stack. Esto incluye los siguientes tecnologías: -- MongoDB: Es una base de datos NoSQL que facilita el trabajo con el Back-End. Es una decisión de diseño propia -- Express js: Es un marco que se ha superpuesto a Node JS y se puede utilizar para crear el Back-End de nuestra web. Fue precisamente creado -para la creación de sitios web. -- React JS: Es un framework creado por Facebook ampliamente utlizado para crear componentes de la interfaz de usuario. Es un requisito de diseño por lo que no tenemos -nada que decidir. +- MongoDB: Es una base de datos NoSQL que facilita el trabajo con el Back-End. Es una decisión de diseño propia. +- Express js: Es un marco que se ha superpuesto a Node JS y se puede utilizar para crear el Back-End de nuestra web. Fue precisamente creado para la creación de sitios web. +- React JS: Es un framework creado por Facebook ampliamente utlizado para crear componentes de la interfaz de usuario. Es un requisito de diseño por lo que no tenemos nada que decidir. - Node JS: Es un entorno de ejecución de JavaScript que permite ejecutar JavaScript del lado del servidor y no en un navegador. .Diseño Hemos utilizado pricipalmente el Modelo Vista Controlador con el fin de generar un proyecto claramente estructurado y fácilmente ampliable. .Usabilidad -Para alcanzar la mayor usabilidad posible de nuestra web, intentaremos cumplir con todos los criterios de usabilidad que sabemos hasta el momento y la comprobaremos -en diferentes validadores de internet. Intentaremos disponer el contenido de la manera más intuitiva posible, haciendo pruebas con usuarios a medida que vamos desarollando la -aplicación para intentar sacarle el máximo partido. +Para alcanzar la mayor usabilidad posible de nuestra web, intentaremos cumplir con todos los criterios de usabilidad que sabemos hasta el momento y la comprobaremos en diferentes validadores de internet. Intentaremos disponer el contenido de la manera más intuitiva posible, haciendo pruebas con usuarios a medida que vamos desarollando la aplicación para intentar sacarle el máximo partido. .Comprensibilidad No tenemos una gran cantidad de requisitos funcionales por lo que podemos producir una solución sencilla de utilizar y comprensible .Seguridad -Garantizamos la seguridad del usuario mediante el uso de PODs, citados en los requisitos del sistema. +Garantizamos la seguridad del usuario mediante el uso de PODs, citados en los requisitos del sistema. También la aplicación será segura al introducir la información confidencial en un fichero .env el cual será privado. .Testabilidad Testabilidad, la arquitectura permitirá probar fácilmente todos los componentes principales del sistema. .Desarrollo -El sistema va a ser desarrollado completamente por el equipo (utilizando debidamente los recursos mencionados) dividiendo el trabajo en dos partes claras: Front-End y Back-End. En cualquier caso, se irán compartiendo -todos los avances y cualquier duda intentando seguir una metodología ágil. +El sistema va a ser desarrollado completamente por el equipo (utilizando debidamente los recursos mencionados) dividiendo el trabajo en dos partes claras: Front-End y Back-End. En cualquier caso, se irán compartiendo todos los avances y cualquier duda intentando seguir una metodología ágil a través de reuniones frecuentes. .Estructura -El sistema de ventas se compondrá de diversas páginas web implementadas mediante TypeScript y React principalmente. La página principal desplegará diferentes categorías de -juguetes y un conjunto de juguetes destacados. Tendremos acceso a nuestro carrito y a nuestra cuenta, con lo que también podemos ver pedidos realizados anteriormente. Una vez -entras en una categoría de juguetes se desplegarán todos aquellos que estén presentes en la base de datos. También es posible utilizar el buscador para encontrar un determinado juguete. +El sistema de ventas se compondrá de diversas páginas web implementadas mediante TypeScript y React principalmente. La página principal desplegará diferentes categorías de juguetes y un conjunto de juguetes destacados (o filtrados por categorías). Tendremos acceso a nuestro carrito y a nuestra cuenta, con lo que también podemos ver pedidos realizados anteriormente. Una vez entras en una categoría de juguetes se desplegarán todos aquellos que estén presentes en la base de datos. .Interfaz La interfaz gráfica se implementará desde el Front-End y se intentará cumplir la máxima usabilidad posible, teniendo en cuenta cualquier tipo de usuario From 85dadc2e587d93cddb0ca9db85eef94eb0c70b69 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 12:12:37 +0200 Subject: [PATCH 06/11] =?UTF-8?q?Actualizado=20punto=206=20de=20la=20docum?= =?UTF-8?q?entaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Actualizado diagrama de secuencia de comprar productos --- docs/06_runtime_view.adoc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/06_runtime_view.adoc b/docs/06_runtime_view.adoc index ff64419..f4329e5 100644 --- a/docs/06_runtime_view.adoc +++ b/docs/06_runtime_view.adoc @@ -55,12 +55,13 @@ database Pod as "Pod del usuario" #yellow Usuario -> DeDe: Abre el carrito DeDe <-- BaseDeDatos: Devuelve contenido del carrito del usuario Usuario <-- DeDe: Muestra lista de juguetes del carrito -Usuario -> DeDe: Confirma la compra de los productos +Usuario -> DeDe: Presiona botón realizar pedido DeDe -> Pod: Se solicita la dirección del usuario +Usuario -> Pod: Inicia sesión en Pod y añade su dirección en la sección "notes" del mismo DeDe <-- Pod: Devuelve la dirección del usuario -DeDe -> DeDe: Crea el pedido con el coste y dirección asociados. +DeDe -> DeDe: Muestra la dirección y se calculan gastos de envío (API GeoCode) Usuario <-- DeDe: Muestra el precio y la dirección. -Usuario -> DeDe: Confirma el pedido. +Usuario -> DeDe: Recorre pantallas de pago hasta confirmar el pedido. ---- === Añadir productos From 09389d01c9e02ab9b651363d606cd08bef850192 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 12:18:06 +0200 Subject: [PATCH 07/11] =?UTF-8?q?Actualizado=20punto=207=20de=20la=20docum?= =?UTF-8?q?entaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/07_deployment_view.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/07_deployment_view.adoc b/docs/07_deployment_view.adoc index 9c2111b..0345157 100644 --- a/docs/07_deployment_view.adoc +++ b/docs/07_deployment_view.adoc @@ -88,7 +88,7 @@ Lugar a través del cual el usuario se comunica con nuestro sitio web Elementos de almacenamiento de información privada del usuario que aumentará la seguridad del mismo en nuestra aplicación. Internamente el usuario ha de crearse una cuenta con uno de los proveedores existentes y almacenar la información que el mismo desee de manera pública o privada. ==== _Auth0_ -API que permite al usuario iniciar sesión en nuestro sitio. Nos permitirá trabajar con sus datos desde la aplicación. +API que permite al usuario iniciar sesión en nuestro sitio. Nos permitirá trabajar con sus datos desde la aplicación. Esta API además gestionará las contraseñas de los usuarios sin necesidad de tener que introducirlas en nuestra base de datos, algo que incrementará la seguridad de la aplicación. ==== _GeoCode_ API a la que le pasas una dirección y te devuelve ciertos datos. Para nuestro proyecto son de utilidad la latitud y longitud de la misma. Se utilizará la fórmula de Haversine para calcular la distancia en km (previamente diferencia de latitudes y longitudes) entre dos ubicaciones. From 4880d3f8b01fd63e470f09feec25bea2b3517499 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 12:34:11 +0200 Subject: [PATCH 08/11] =?UTF-8?q?Actualizado=20punto=208=20de=20la=20docum?= =?UTF-8?q?entaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/08_concepts.adoc | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/08_concepts.adoc b/docs/08_concepts.adoc index 1c6b1b3..8a95f3c 100644 --- a/docs/08_concepts.adoc +++ b/docs/08_concepts.adoc @@ -49,19 +49,17 @@ on this list. **** === Persistencia -Utilizaremos una base de datos de MongoDB puesto que utilizaremos la pila MERN (MongoDB, Express, React, Node). El almacenamiento de las imágenes se realizará en una carpeta adjuntada -con el proyecto. +Utilizaremos una base de datos de MongoDB puesto que utilizaremos la pila MERN (MongoDB, Express, React, Node). El almacenamiento de las imágenes se realizará a través de la API Cloudinary, almacenando estas en una nube que está constantemente corriendo y, por tanto, nos aportará usabilidad y escalabilidad. === Interfaz de Usuario La interfaz de Usuario de _DeDe_ estará codificada utilizando TypeScript y el framework React. No ha sido una decisión propia de diseño, si no que se imponía en los requisitos de alto nivel de la aplicación. -=== Manejo de Sesion -Los usuarios podrán iniciar sesión a través de su respectivo POD siguiendo los principios SOLID, con el que garantizamos su privacidad. +=== Manejo de Sesión +Los usuarios podrán iniciar sesión para realiar su compra a través de su respectivo POD siguiendo los principios SOLID, con el que garantizamos su privacidad. De esta manera obtenemos la dirección del usuario necesaria para calcular los gastos de envío de los pedidos. Por otro lado, el inicio de sesión con la aplicación en sí será a través de la API Auth0, que se encargará de gestionar a todos los usuarios que hayan iniciado sesión en nuestro sitio. Además, almacenaremos en la base de datos los email de aquellos usuarios que se hayan registrado para poder así gestionar sus pedidos. === Seguridad y privacidad -Como ya hemos mencionado anteriormente, se garantiza la privacidad y seguridad del usuario, obteniendo cualquier tipo de información a través del pod del mismo y siguiendo -los principios SOLID. +Como ya hemos mencionado anteriormente, se garantiza la privacidad y seguridad del usuario, obteniendo cualquier tipo de información a través del pod del mismo y siguiendo los principios SOLID, ya que solo se podrán acceder a los datos que el usuario de permisos. Además, las contraseñas de inicio de sesión de los usuarios no se encontrarán almacenadas en la base de datos ni visibles (en caso de que sí se podrían llevar a cabo métodos como la encriptación de las mismas). === Internacionalización La web se lanzará inicialmente en castellano, no descartamos la posibilidad de traducirla al inglés. @@ -70,7 +68,7 @@ La web se lanzará inicialmente en castellano, no descartamos la posibilidad de === Gestión de desarrollo La web se despliega una vez se pone en marcha el servidor. -image:08-Crosscutting-Concepts-Structure-EN.png["Possible topics for crosscutting concepts"] +//image:08-Crosscutting-Concepts-Structure-EN.png["Possible topics for crosscutting concepts"] === Modelo de Dominio image:modeloDominio.png["Hierarchy of building blocks"] @@ -84,6 +82,5 @@ cada uno de ellos. === Testeable El sistema dispondrá de diferentes tipos de pruebas para asegurarnos de su correcto funcionamiento. Estas serán -pruebas unitarias para probar su funcionalidad, pruebas de aceptación para hacerlo pero de manera automática y por último pruebas -de carga para ver cuantos usuarios y peticiones es capaz de soportar nuestra aplicación. +pruebas unitarias para probar su funcionalidad, pruebas de aceptación para hacerlo pero de manera automática por el navegador y por último pruebas de carga para ver cuantos usuarios y peticiones es capaz de soportar nuestra aplicación. From d127267c572647150d4ae43b4d475b79ea950a8e Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 12:37:34 +0200 Subject: [PATCH 09/11] =?UTF-8?q?Actualizado=20punto=209=20de=20la=20docum?= =?UTF-8?q?entaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/09_design_decisions.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/09_design_decisions.adoc b/docs/09_design_decisions.adoc index cd376c9..497c692 100644 --- a/docs/09_design_decisions.adoc +++ b/docs/09_design_decisions.adoc @@ -17,6 +17,7 @@ establecidas por los profesores de la asignatura. |_Auth0_| _Decisión_ | _Para hacer el registro e inicio de sesión en la aplicación. Permite hacerlo a través de Google_ |_BootStrap_| _Decisión_ | _Para añadir estilos a los elementos_ |_Dotenv_| _Decisión_ | _Para proteger la información privada de la aplicación (url base de datos, ubicación de la empresa...)_ +|_Cloudinary_|_Decisión_|_Para almacenar las imágenes que utilicemos en nuestra aplicación (juguetes, logo...) en la nube y aumentar la usabilidad y escalabilidad_ |=== [role="arc42help"] From fcd37441f3cb7e0cd1aad0f1393cdadf1bf02ee0 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 12:40:48 +0200 Subject: [PATCH 10/11] =?UTF-8?q?Actualizado=20punto=2010=20de=20la=20docu?= =?UTF-8?q?mentaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/10_quality_scenarios.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/10_quality_scenarios.adoc b/docs/10_quality_scenarios.adoc index 84c28bf..af9fe63 100644 --- a/docs/10_quality_scenarios.adoc +++ b/docs/10_quality_scenarios.adoc @@ -69,13 +69,13 @@ La prioridad de los escenarios viene dada por la importancia para el cliente y p |=== |Id|Atributo de calidad|Escenario de calidad|Prioridad (Cliente/Arquitecto) |_US1_| _Usabilidad_ | _Los usuarios deben poder usar la aplicacion sin ningun tipo de problema, haciendo que comprar un producto sea una tarea sencilla_ | _Alto/Bajo_ -|_US2_| _Usabilidad_ | _La opción de añadir al carrito un producto debe estar muy clara y fácilmente accesible_ | _Alto/Bajo_ +|_US2_| _Usabilidad_ | _La opción de añadir al carrito un producto debe estar muy clara y fácilmente accesible, así como realizar la compra_ | _Alto/Bajo_ |_COM1_| _Comprensibilidad_ | _La aplicacion debe ser lo mas intuitiva posible para el usuario, para que sea capaz de realizar cualquier funcion dentro de ella_ | _Alto/Medio_ -|_COM2_| _Comprensibilidad_ | _En caso de tener funciones distintas a las habituales de una tienda online, se deberán explicar y mostrar de manera clara_ | _Alto/Medio_ +|_COM2_| _Comprensibilidad_ | _En caso de tener funciones distintas a las habituales de una tienda online, es decir, no usar convenciones, se deberán explicar y mostrar de manera clara_ | _Alto/Medio_ |_SEG1_| _Seguridad_ | _Si en cualquier momento la aplicación no es segura (por ejemplo debido a malware) se deberá mostrar un mensaje de que no es seguro el uso del sistema o incluso incapacitar el sistema hasta que se resuelva_ | _Alto/Alto_ |_SEG2_| _Seguridad_ | _Todos los datos de los usuarios no pueden ser expuestos a terceros_ | _Alto/Alto_ |_TEST1_| _Testabilidad_ | _Si se da el caso de que se necesite añadir nuevas funcionalidades a la tienda online, se deberá poder probar antes de su despliegue_ | _Medio/Medio_ -|_TEST2_| _Testabilidad_ | _La aplicacion sera sometida a pruebas unitarias, para probar que funcione correctamente_ | _Medio/Medio_ +|_TEST2_| _Testabilidad_ | _La aplicacion sera sometida a pruebas unitarias, de aceptación y de carga, para probar que funcione correctamente_ | _Medio/Medio_ |_ATRA1_| _Atractivo_ | _Si la tienda incorpora opciones inusuales en tiendas online, se deberá usar la interfaz para que sean fácilmente usables y accesibles_ | _Medio/Bajo_ |_ATRA2_| _Atractivo_ | _La aplicacion debe llamar la atencion al usuario, implementando opciones poco habituales o por una interfaz llamativa y fácil de usar_ | _Bajo/Bajo_ |=== \ No newline at end of file From eaf8a3613c0364a23995f1bfc68a3c5bfb7010d5 Mon Sep 17 00:00:00 2001 From: AlejandroGalanFreire Date: Mon, 2 May 2022 13:04:30 +0200 Subject: [PATCH 11/11] =?UTF-8?q?Punto=2011=20de=20la=20documentaci=C3=B3n?= =?UTF-8?q?=20actualizado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/11_technical_risks.adoc | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/docs/11_technical_risks.adoc b/docs/11_technical_risks.adoc index bf94f4f..0d4043c 100644 --- a/docs/11_technical_risks.adoc +++ b/docs/11_technical_risks.adoc @@ -2,19 +2,24 @@ == Riesgos y deudas técnicas .Falta de conocimiento de React -Es la primera vez que trabajamos con este framework, por lo que no tenemos ni idea de como funciona. -Sí que es cierto que la documentación es muy buena y tiene una gran cantidad de ejemplos, por lo que podemos aprender bastante en poco tiempo. +Es la primera vez que trabajamos con este framework. Aunque hemos aprendido bastante durante la implementación del sitio web sí que es verdad que en muchas ocasiones nos hemos visto con problemas para realizar alguna funcionalidad debido a falta de conocimiento en aspectos como puede ser la sintaxis del lenguaje. +Sí que es cierto que la documentación es muy buena y tiene una gran cantidad de ejemplos, ayudándonos con el desarrollo. + +.Falta de conocimiento de Node.js +Nos pasa lo mismo que con React. Hemos tenido que ir aprendiendo el lenguaje a medida que ibamos desarrollando la aplicación. +También tiene un documentación exhaustiva al ser un framework muy utilizado en el mundo del desarrollo web. .Tiempo -Estamos limitados a una fecha para entregar el proyecto, por lo que debemos optimizar el trabajo lo máximo posible. +Estamos limitados a una fecha para entregar el proyecto, por lo que debemos optimizar el trabajo lo máximo posible, algo que hará que aparezca más deuda técnica que si tuvieramos el tiempo que quisiéramos para perfeccionar todo lo necesario. .Equipos -No tenemos mucha experiencia trabajando en equipo, y en ocasiones no es fácil coordinarse. Haremos reuniones cada poco tiempo con el fin de poner -nuestro trabajo al día y avanzar uniformemente. +No tenemos mucha experiencia trabajando en equipo, y en ocasiones no es fácil coordinarse. Haremos reuniones cada poco tiempo con el fin de poner nuestro trabajo al día y avanzar uniformemente. + +.Despliegue +Nos han surgido muchos problemas con el despliegue, no hemos sido capaces de realizarlo en la plataforma AWS y de momento estamos en progreso para hacerlo en Heroku. Es una operación de la que no teníamos conocimiento inicialmente y esto nos ha llevado a tener que investigar y solventar una gran cantidad de inconvenientes. -.Desconocimiento de SOLID -SOLID es una nueva tecnología y su documentación es muy escasa. No tiene muchos ejemplos por lo que deberemos informarnos por cuenta propia por cualquier medio posible -acerca de esa tecnología. +.Desconococimiento de PODs de SOLID +Tecnología desconocida con muy poca documentación y ejemplos. @@ -22,16 +27,19 @@ acerca de esa tecnología. |=== |Riesgo|Explicación|Solución | _Falta de conocimiento de React_ | _Es la primera vez que trabajamos con este framework, así no tenemos experiencia con él._ | _La documentación de React es muy buena y cuenta con una gran cantidad de ejemplos y facilidades, por lo que aprenderemos a desenvolvernos rápido._ +| _Falta de conocimiento de Node.js | _Es la primera vez que trabajamos con este framework, así no tenemos experiencia con él._ | _La documentación es muy buena y cuenta con una gran cantidad de ejemplos y facilidades, por lo que aprenderemos a desenvolvernos rápido._ | _Tiempo_ | _Estamos condicionados por una fecha de entrega_ | _Debemos optimizar tanto el trabajo individual como colectivo lo máximo posible_ -| Desconocimiento de SOLID | _Es una tecnología muy nueva, su documentación es muy escasa y se han reportado varios bugs_ | _Intentaremos informarnos de cualquier manera posible -sobre esta tecnología, ya que tampoco tiene muchos ejemplos_ +| Desconococimiento de PODs de SOLID | _Es una tecnología muy nueva, su documentación es muy escasa y se han reportado varios bugs_ | _Intentaremos informarnos de cualquier manera posible sobre esta tecnología, ya que tampoco tiene muchos ejemplos_ +| Despliegue | _Problemas en todas las plataformas en las que intentamos realizarlo_ | _Nos informamos a través de diversas fuentes así como con la ayuda de los profesores para realizar la misma._ |=== [options="header",cols="1,2"] |=== |Deuda técnica|Explicación -| _Errores del POD_| _Esta nueva tecnología puede ocasionar errores repentinos o algunos bugs._ -| _Errores de conexión_ | _Puede ocurrir que la conexión a la red sea muy débil y que en consecuencia la aplicación trabaje más lento_ +| _Internacionalización_| _Aspecto que ha quedado sin realizar debido a falta de tiempo. Nos habría gustado realizarlo_ +| _Errores de conexión_ | _Puede ocurrir que la conexión a la red sea muy débil y que en consecuencia la aplicación trabaje más lento_ +|_Usabilidad_|_Operaciones como pasar validadores o probar la aplicación con usuarios reales antes de la presentación no han sido realizadas también debido al tiempo_ +|Despliegue|_Todavía no hemos logrado desplegar exitosamente la aplicación_ |===