Giter Site home page Giter Site logo

somsolet-engineering-ui's Introduction

Docs

Arquitectura

La arquitectura del proyecto se separa entre las carpetas containers y components.

La idea es que los containers contengan las rutas/páginas de la aplicación y que contengan la mayor parte de lógica de estas como por ejemplo dispatches, manejadores de eventos, pequeñas transformaciones, etc.

Por otras partes la carpeta de components es contener todos aquellos componentes que se encargan de renderizar la información, sin ningún tipo de lógica.

Redux

Este proyecto contiene redux para manejar el estado global de la aplicación. Está separado en la carpeta actions, reducers y el fichero store.js.

El archivo store.js contiene todos los reducers de la aplicación donde se almacena todo. En este caso existe un estado global para la parte de autentificación y otra con los datos de las campañas.

En la carpeta actions guardamos los métodos que disparan eventos mediante el hook dispatch, estos pueden ser llamadas al api o cambios que queramos guardar dentro de nuestro estado global de la aplicación.

En el caso de llamadas al api, los request devuelven un payload que será interceptado en el fichero interceptors/config.js donde se alimentará el estado de la llamada mediante _SUCCESS o _FAIL para detectar si la llamada realizada ha sido un éxito o un fallo. Esta estrategia permite poder manejar el estado de cada llamada añadiendo lógicas asíncronas de forma sencilla.

La forma que tenemos de conectar los actions y los reducers es mediante la clave type que definimos en action y que coincide en el reducer.

Una vez tenemos definidos los actions y el reducer que maneja el estado, utilizamos el hook useSelector() para consultar el campo que queremos dentro de nuestro container.

Es posible que nos surja la duda de si realizar la consulta desde los componentes o desde los containers, en este caso yo prefiero hacer toda esa lógica en los containers y pasar los datos hacia los hijos para intentar tener la mayor lógica posible en los contendores.

Transformaciones de llamadas

En algunos casos, para intentar que los datos lleguen al contendor de la forma más sencilla posible se pueden utilizar funciones o métodos de transformación para que, antes de guardarlos en el estado de la aplicación, tengan una estructura más sencilla de leer.

Es el caso que tenemos en el fichero reducers/campaigns.js donde el método transformProjectsToTable recibe la llamada del api y lo formatea para que tenga la estructura que demanda la tabla del detalle de campaña.

En un caso ideal, el api debería de devolver la mejor estructura posible para el frontend, pero como digo es un caso bastante común que necesitemos un formato que nos facilite el renderizado.

Si bien esta transformación la podríamos hacer en los contenedores creo que esta estrategia nos puede ayudar a que los contenedores queden lo más limpios posibles.

Estilos

Los estilos de la aplicación estan realizados con el styled-components de forma global existe un tema definido en la carpeta theme y que se puede usar dentro de cualquier componente estilado, pudiendo añadir lógicas de javascript dentro de cada uno de ellos mediante props.

A nivel de arquitectura los estilos se mantienen dentro del mismo archivo, sería posible separarlos aunque prefiero que todo esté en el mismo fichero para que el mantenimiento sea más sencillo.

Si un archivo se hace demasiado grande y crece en líneas lo ideal sería hacer una separación para intentar que no crezcan demasiado.

Traducciones

Las traducciones se hacen de la misma forma que hacemos en los otros proyectos. En ese caso que querido mantener la misma metodolgía

Instalar proyecto

Para instalar el proyecto podemos hacerlo mediante npm install o yarn install

Iniciar proyecto

Para iniciar el proyecto podemos hacerlo mediante npm start o yarn start

somsolet-engineering-ui's People

Contributors

elchiconube avatar maritesomenergia avatar dukenuken09 avatar

Watchers

David García Garzón avatar  avatar James Cloos avatar javikalsan avatar Agustí Fita Borrell avatar Roger avatar Dani Estanyol avatar Daniel Quilez avatar Francesc avatar Juan Pedro Sánchez avatar Diego Quintana avatar  avatar

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.