getTokenData('etiketarToken', 'role') pero la aplicación guarda el token bajo 'frigappToken' en todas partes. El rol siempre será null, rompiendo el filtrado del menú y cualquier control de acceso basado en roles.useEffect(()=>{...}, []) idénticos que leen etiketarToken y llaman a setAgency. El segundo es un duplicado inútil — elimínalo.redirect() no navega en React Router v6redirect se importa de react-router-dom pero solo funciona dentro de loaders/actions del data-router. Llamarlo en una función normal no hace nada — después del login la URL permanece en /login. Usa el hook useNavigate().getTokenData lanza error cuando no hay tokenjwtDecode(localStorage.getItem(token)) — si la clave no existe, getItem devuelve null y jwtDecode(null) lanza una excepción. UserButton y AdminLayout llaman esto al montar sin validación, causando un crash en sesiones nuevas.getAllClientInvoiceData y varias funciones retornan undefined en errorcatch(err) { console.log(err) } sin return. Los consumidores reciben undefined en lugar de un objeto de error, por lo que res.success lanza un TypeError. Usa return err o return { success: false, message: err.message }.constants.jsgetAgencyBySubdomain() se usa en admin.js → setNewPassword pero está en utils/token.js, no en api/constants.js donde se llama como CONS.getAgencyBySubdomain(). Esto lanzará CONS.getAgencyBySubdomain is not a function.<form> tiene onSubmit llamando a sendData() y el botón también tiene onClick={sendData}. Presionar Enter o hacer clic dispara dos veces la función, enviando dos requests simultáneos.else if valida campos vacíos. Un email vacío falla el regex y muestra "formato inválido" en lugar de "campos vacíos". Invierte el orden.updateProductData tiene el null check invertido(comImg === null) ? formData.append('file', comImg) : formData.append('file', comImg.file, comImg.file.name) — cuando comImg es null, se añade null al form. Las ramas están invertidas.deleteUsersData usa URL incorrectaDELETE ${CONS.admin}/${id} pero otras funciones usan ${CONS.admin}/users/${id}. Probablemente el endpoint correcto es /api/admin/users/${id}.Avatar y ScrollAreaAvatar y ScrollArea se importan de @mantine/core pero no se usan. Elimínalos.getAgencyData es un stub sin implementaciónundefined. Implementa o elimina la función.constants.jshttps://frigapp-back.azurewebsites.net/api está hardcodeada. Usa import.meta.env.VITE_API_URL.Calculator, Products, Support solo renderizan <h1>. Falta implementación.