Mikes es una aplicación de escritorio basada en Electron que actúa como cliente para una API remota (configurada mediante variables de entorno). Provee:
- Inicio de sesión para empleados.
- Selección de cliente y nómina.
- Gestión de empleados (alta, baja, edición).
- Gestión de usuarios por nómina, con paginación, búsqueda, exportación y manejo de productos por usuario.
La UI está construida con HTML/CSS/JS estáticos en public/ y la entrada de la app es main.js.
IMPORTANTE: Las credenciales y las URL de la API se leen desde .env mediante preload.js y se exponen de forma segura a la ventana (vía contextBridge) bajo window.ENV.
main.js- Entry point de Electron. Crea la ventana y cargapublic/index.html.preload.js- Lee.env(local) y exponeAPI_URLyAPI_KEYawindow.ENV.package.json- Scripts y configuración deelectron-builderpara empaquetado.public/- Archivos estáticos de la aplicación (HTML, CSS, JS). Contiene:index.html,index.js- Pantalla de login.home/- Selección de cliente y navegación.home/manage/- Gestión de empleados.home/nomina/- Gestión de nóminas y pestañasusers/,quantity/, etc.
assets/- Iconos y recursos estáticos.
- Entradas:
.envcon al menosAPI_URLyAPI_KEY, interacción del usuario a través de la UI. - Salidas: llamadas HTTP a la API remota, actualizaciones de
localStorage, navegación entre páginas. - Modos de error: si la API responde con error, la UI muestra mensajes flash; si no hay conexión, verás "Error de conexión".
- Node.js (recomendado 18+).
- npm (v6+).
- Entorno con acceso a la API configurada en
.env.
La app carga .env en preload.js. Crea un archivo .env en la raíz del proyecto con al menos:
API_URL=http://tu-api:3000
API_KEY=tu_api_key_aqui
NO subas .env a git ni a repositorios públicos. Si compartes el proyecto, elimina o enmascara las claves.
- Instala dependencias (si faltan):
npm install- Ejecuta la aplicación en modo desarrollo:
npm startEsto abrirá la ventana de Electron y cargará public/index.html.
Nota: package.json incluye devDependencies y dependencies. Algunas dependencias están duplicadas en devDependencies/devdependencies (probablemente por un typo), esto no impide la ejecución si instalas correctamente.
El proyecto usa electron-builder. Para generar el instalador:
- Asegúrate de tener las dependencias instaladas.
- Ejecuta:
npm run buildEsto usará la sección build en package.json para crear un instalador NSIS en la carpeta dist/ (por defecto). Revisa productName, appId e íconos en build/.
Advertencia: package.json actualmente lista .env dentro de files para empaquetar el archivo en el binario. Esto puede exponer claves si son incluidas en .env. Recomendación: eliminar .env de build.files y manejar la configuración con variables de entorno externas o un archivo de configuración no incluido por defecto.
- Al iniciar,
main.jscrea una ventana y cargapublic/index.html. preload.jsinyectawindow.ENVconAPI_URLyAPI_KEYdesde.env.- El usuario hace login en
index.html.index.jsllama a POST${API_URL}/loginconX-API-Key. - En caso de éxito, se guarda
employeeenlocalStoragey se navega ahome/home.html. - Desde
homeel usuario selecciona cliente y nómina. Muchas páginas usan fetch a la API conX-API-Keyy maneja datos conlocalStorage.
Rutas principales del UI:
- Login:
public/index.html(+index.js) - Home / Lista Clientes:
public/home/home.html(+home.js) - Gestión empleados:
public/home/manage/manage.html(+manage.js) - Nóminas:
public/home/nomina/nomina.html(+nomina.js) - Usuarios por nómina:
public/home/nomina/users/users.html(+users.js)
- Nunca incluyas
.envcon claves en el repositorio. Considera usar variables de entorno del sistema para builds CI. - Evita exponer secretos innecesarios en
preload.js. Actualmentepreload.jsexponeAPI_KEYawindow.ENV. Si la API key es sensible, considera exponer soloAPI_URLy mover la firma de peticiones al proceso principal con canales seguros (ipcMain/ipcRenderer) y validación. - Revisa CORS y autenticación en el backend. La app confía en
X-API-Keyen cada petición.