QRStock es una webapp y aplicación móvil que permite gestionar el inventario para varios lugares. Permite generar y escanear QR para notificar cuando un objeto es recogido y devuelto de un espacio y ver el estado del stock en cualquier momento.
- Gestión de usuarios
- Gestión de stock
- Rastreador de stock
- Escaneo de QR para recogida y devolución de objeto
- Generación de QR para objetos y espacios
- Soporte para varios idiomas
- Webhook para integración con Microsoft Teams
A continuación se explicará cómo poder obtener una copia del proyecto para su sistema local.
- Mínima versión de pnpm:
11.5.3 - Mínima versión de node:
24.16.0 - Mínima versión de vite:
8.1.3 - Mínima versión de ESlint:
10.6.0 - Android Studio (en caso de compilar versión para Android)
git clone https://github.com/RafiThA/QRStock.gitpnpm iPara abrir un servidor se deben especificar las variables de entorno necesarias en un fichero .env en la raiz del proyecto con las variables:
VITE_API_URL: URL del servidor backend.TOKEN_KEY: Token para usuarios.
Iniciar servidor front
pnpm devIniciar servidor back
pnpm backContruir aplicación web
pnpm buildAñadir android
pnpm exec cap add androidAsegurar que el proyecto este construido (carpeta dist creada)
pnpm buildSincronizar construcción con Android
pnpm syncAñadir iconos en apliación Android
pnpm generate-assetsAbrir proyecto en Android Studio
pnpm open-androidEjecutar simulación en dispositivo virtual (se necesita configurar en Android Studio previamente)
pnpm run-androidSe ha desarollado una integración con Teams mediante el uso de Webhooks.
Los métodos backend integran llamadas con teams cuando se realizan las siguientes operaciones:
- Usuarios
- Creación de usuario
- Modificación de usuario
- Eliminacion de usuario
- Objetos
- Creación de un objeto
- Modificación de un objeto (Recogida/Devolución)
- Eliminación de un objeto
Para activar la integración se debe declarar la variable TEAMS_WEBHOOK_URL en el archivo .env. La URL se podrá obtener en la creación del workflow.
Para que la integración funcione debemos crear un workflow en PowerAutomate.
- Creamos un flow automatizado en la nube.
- Añadimos el bloque inicial: Cuando una petición de webhook es recibida (Desde ese bloque podremos obtener la URL del webhook).
- Añadimos el bloque: Analizar JSON.
Se deberá añadir el siguiente schema de JSON:
{
"type": "object",
"properties": {
"list": {
"type": "string",
"enum": [
"user",
"stock",
"tracer"
]
},
"tipo": {
"type": "string",
"enum": [
"add",
"edit",
"remove"
]
},
"correo": {
"type": "string"
},
"nombre": {
"type": "string"
},
"apellidos": {
"type": "string"
},
"rol": {
"type": "string"
},
"categoria": {
"type": "string"
},
"lugar": {
"type": "string"
},
"espacio": {
"type": "string"
},
"descripcion": {
"type": "string"
},
"usuario": {
"type": "string"
},
"accion": {
"type": "string"
},
"objeto": {
"type": "string"
},
"fecha": {
"type": "string",
"format": "date-time"
}
},
"required": [
"list",
"tipo"
]
}A partir de este punto podremos gestionar las variables de las peticiones como deseemos.
Variables requeridas y que siempre son enviadas:
list|(string, enum:[user, stock, tracer]): Define la tabla a la que se refiere la operación.tipo|(string, enum:[add, edit, remove]): Define el tipo de operación.
Para las siguientes operaciones se envían los siguientes datos:
Operaciones de usuario:
Se envían las variables cuando se registra un usuario:
list=usertipo=removecorreo= Correo del usuario registradonombre= Nombre del usuario registradoapellidos= Apellidos del usuario registradorol= Rol del usuario registrado
Se envían las variables cuando se modifica la información de un usuario:
list=usertipo=editcorreo= Correo del usuario modificadonombre= Nuevo nombreapellidos= Nuevos apellidosrol= Nuevo rol
Se envían las variables cuando se elimina a un usuario:
list=usertipo=removecorreo= Correo del usuario eliminado
Operaciones de stock:
Se envían las variables cuando se crea un objeto:
list=stocktipo=addnombre= Nombre del objeto creadocategoria= Categoria del objetolugar= Lugar del objetoespacio= Espacio del objetodescripcion= Descripción del objeto
Se envían las variables cuando devuelve o recoge un objeto:
list=stocktipo=editnombre= Nombre del objeto modificadolugar= Nuevo lugar del objeto modificadoespacio= nuevo espacio del objeto modificado
Se envían las variables cuando se elimina un objeto:
list=stocktipo=removenombre= Nombre del objeto eliminado
Operaciones de rastreo de stock:
Se envían las variables cuando se recoge/devuelve un objeto:
list=tracertipo=addfecha= Fecha y hora de la recogida/devoluciónusuario= Correo del usuario que realizó la acciónobjeto= Nombre del objeto que ha sido actualizadoaccion= Tipo de acción cometida (Recogida/Devolución)lugar= Lugar del objeto tras la acciónespacio= espacio del objeto tras la acción