Skip to content

soker90/arroyo-erp-client

Folders and files

NameName
Last commit message
Last commit date
Dec 16, 2024
Nov 6, 2024
Nov 7, 2024
Aug 16, 2020
May 2, 2020
Oct 21, 2022
Oct 21, 2022
Jan 22, 2022
Sep 4, 2024
Aug 7, 2020
Nov 6, 2024
Sep 4, 2024
May 2, 2020
May 9, 2024
Jan 16, 2024
Oct 26, 2022
May 19, 2020
Aug 30, 2020
Jan 22, 2025
Jan 22, 2025
Jan 16, 2024
Jul 8, 2024
Oct 30, 2022
Sep 3, 2024

Repository files navigation

ARROYO CLIENT

codecov Quality Gate Status Docker Image Version (tag)

Descripción

Parte frontal del proyecto de ERP Arroyo, un backoffice para la gestión administrativa y contable de pequeñas empresas.

Es un proyecto desarrollado en React. (v18). Debe servirse como SPA redirigiendo las peticiones a index.html para que el router de react react-router-dom (v6) se haga cargo de la gestión de las URLS.

Forman parte de este proyecto

Changelog

Testing

Para realizar la ejecución de tests:

pnpm test

Puesta en marcha

Config - Variables de entorno

Se declaran en los archivos .env del proyecto y en las properties, y van precedidas por el flag VITE_:

  • VITE_ROUTER_BASE_PATH
  • VITE_API_HOST

Instalar dependencias

pnpm install

Ejecución

*NOTA: Necesita tener backend levantado en local

pnpm start

Con mocks:

pnpm dev

Se sirve en http://localhost:5173

Ejemplos

Cómo crear una nueva ruta

  • Crear una nueva carpeta en src/pages con la siguiente estructura
└───pages
│   │
│   └───Route
│        └───components
│             └───Route.js
|             └───Route.test.js
│             └───Route.styles.js
│        └───hooks
│             └───index.js
│             └───useData.js
~~ │        └───containers ~~
~~ │             └───RouteContainer.js ~~ 
│        └───modals
│             └───RouteModal
~~ │                   └───RouteModalContainer.js ~~ 
│                   └───RouteModal.js
│                   └───RouteModal.styles.js
│                   └───index.js
~~ │        └───modules ~~ 
~~ │             └───actions ~~ 
~~ │                   └───index.js ~~ 
~~ │                   └───action1.js ~~ 
~~ │             └───types.js ~~ 
~~ │             └───index.js ~~ 
│        │   index.js

Componente

Componente funcional standar de React, con memo:

import PropTypes from 'prop-types'

const ComponentName = () =>
      <div>
        Hello World!!
      </div>;

ComponentName.propTypes = {
}

ComponentName.displayName = 'ComponentName' // Solo en funciones anónimas
export default ComponentName

Modals

Los modales utilizados son loa de Material UI, y su uso es muy simple, tienen las props show y close, la primera es un booleano que indica si debe mostrarse el modal y la segunda la función que se ejecuta para cerrar el modal.

Hay algunos wrappers creado para realizar modales más rápido en components/Modals

RouteModal.jsx

return (
<ModalGrid
    title={`TITLE`}
    action={_handleClick} // actions for more buttons
    {...rest}
  >
// Any JSX, like children
</ModalGeneric>
);

Hooks

Los hooks permiten usar estado y otras características de React sin escribir una clase. En el código nuevo se usan custom hooks que hacen uso de swr para realizar las peticiones GET que antes se realizaban en actions de redux.

import { useEffect } from 'react'
import useSWR from 'swr'
import { API_DATA } from 'constants/paths'
import { useNotifications } from 'hooks'

export const useData = () => {
  const { data, error } = useSWR(API_DATA)
  const { showError } = useNotifications()

  useEffect(() => {
    if (error) {
      showError(error.message)
    }
  }, [error, data])

  return { data || [], isLoading: !data }
}

Notificaciones

Para enviar notificaciones al usuario existe un custom hook.

import { useEffect } from 'react'
import { useNotifications } from 'hooks'

export const useData = () => {
  const { showError, showSuccess } = useNotifications()
  
  sendError('Mi mensaje') // Envía un mensaje de error al usuario
  showSuccess('Mi mensaje') // Envía un mensaje satisfactorio al usuario
  
}

Styles

Migrando componentes MUI a tailwind con radix-ui