7.6 KiB
Inventario IT 🖥️
Inventario IT es un sistema de gestión de inventario de hardware diseñado para ser poblado tanto por scripts automáticos como por gestión manual. Permite tener un registro centralizado y detallado de todos los equipos informáticos de una organización, sus componentes y su historial de cambios.
El sistema se compone de un backend RESTful API desarrollado en ASP.NET Core y un frontend interactivo de tipo SPA (Single Page Application) construido con React, TypeScript y Vite.
🚀 Funcionalidades Principales
El sistema está diseñado en torno a la gestión y visualización de activos de TI, con un fuerte énfasis en la calidad y consistencia de los datos.
🔒 Seguridad y Autenticación
- Autenticación Basada en JWT: Acceso a la API protegido mediante JSON Web Tokens.
- Login Simple y Seguro: Un único par de credenciales (usuario/contraseña) configurables en el backend para acceder a toda la aplicación.
- Sesión Persistente Opcional: En la pantalla de login, el usuario puede elegir "Mantener sesión iniciada".
- Si se marca: El token se almacena de forma persistente (
localStorage), sobreviviendo a cierres del navegador. El token tiene una validez de 1 año. - Si no se marca: El token se almacena en la sesión del navegador (
sessionStorage), cerrándose automáticamente al finalizar la sesión. El token tiene una validez de 6 horas.
- Si se marca: El token se almacena de forma persistente (
📋 Módulo de Equipos
- Vista Principal Centralizada: Una tabla paginada, con capacidad de búsqueda y filtrado por sector, que muestra todos los equipos del inventario.
- Detalle Completo del Equipo: Al hacer clic en un equipo, se abre una vista detallada con toda su información:
- Datos Principales: Hostname, IP, MAC, OS, etc.
- Componentes Asociados: Lista detallada de discos, módulos de RAM, usuarios asociados, CPU, Motherboard, RAM instalada, etc.
- Estado en Tiempo Real: Indicador visual que muestra si el equipo está
En líneaoSin conexiónmediante un ping. - Historial de Cambios: Un registro cronológico de todas las modificaciones realizadas en el equipo.
- Acciones Remotas:
- Wake On Lan (WOL): 🚀 Botón para enviar un "Magic Packet" a través de un servidor SSH y encender un equipo de forma remota.
✍️ Gestión Manual vs. Automática
- Origen de Datos: El sistema diferencia entre datos generados por scripts automáticos (
⚙️ Automático) y los introducidos manualmente (⌨️ Manual). - Protección de Datos: Las entradas automáticas están protegidas contra modificaciones o eliminaciones desde la UI, asegurando la integridad de los datos recopilados en campo.
- CRUD Completo para Entradas Manuales:
- Creación de nuevos equipos con sus propiedades básicas.
- Edición de los campos principales de un equipo manual.
- Asociación manual de componentes (Discos, RAM, Usuarios).
- Eliminación segura de equipos y componentes de origen manual.
🗂️ Módulo de Administración
- Gestión de Sectores: Un CRUD completo para crear, editar y eliminar los sectores o departamentos de la organización.
- Limpieza de Datos Maestros: Una potente herramienta para asegurar la consistencia de los datos.
- Visualización de Valores Únicos: Permite ver todos los valores distintos existentes para un tipo de componente (ej:
Microsoft Windows 10 Pro,w10,Windows 10) y cuántos equipos usan cada uno. - Unificación de Valores: ✏️ Permite reemplazar todas las instancias de un valor incorrecto (ej:
w10) por uno correcto (ej:Microsoft Windows 10 Pro) en toda la base de datos con un solo clic. - Eliminación de Registros Maestros: 🗑️ Permite eliminar componentes maestros (ej: un módulo de RAM) que ya no están en uso por ningún equipo.
- Visualización de Valores Únicos: Permite ver todos los valores distintos existentes para un tipo de componente (ej:
🎨 UI/UX
- Interfaz Moderna y Responsiva: Construida con Vite, React y TypeScript para una experiencia rápida y fluida.
- Notificaciones en Tiempo Real: El sistema utiliza
react-hot-toastpara dar feedback instantáneo sobre el estado de las operaciones (Cargando, Éxito, Error). - Consistencia de Datos Mejorada: Uso de campos de autocompletado que sugieren valores existentes para campos como CPU, OS y Motherboard, reduciendo errores humanos.
- Validación de Entradas: Validación de formato en tiempo real para campos críticos como la MAC Address, con auto-formateo para ayudar al usuario.
🛠️ Stack Tecnológico
Backend (backend/)
- Framework: ASP.NET Core 9
- Lenguaje: C#
- Acceso a Datos: Dapper (Micro ORM)
- Base de Datos: Microsoft SQL Server
- Autenticación: JWT Bearer Token (
Microsoft.AspNetCore.Authentication.JwtBearer) - Comandos Remotos: Renci.SshNet para ejecución de comandos SSH (Wake On Lan)
Frontend (frontend/)
- Framework/Librería: React 19
- Lenguaje: TypeScript
- Gestión de Tabla: TanStack Table v8
- Gráficos: Chart.js con
react-chartjs-2 - Notificaciones: React Hot Toast
- Tooltips: React Tooltip
- Iconos: Lucide React
- Build Tool: Vite
🚀 Puesta en Marcha (Getting Started)
Siga estos pasos para configurar y ejecutar el proyecto en un entorno de desarrollo local.
Prerrequisitos
- .NET SDK 9.0 o superior.
- Node.js v20.x o superior (con npm).
- Microsoft SQL Server (2019 o superior) y SQL Server Management Studio (SSMS).
- Un editor de código como Visual Studio Code.
1. Clonar el Repositorio
git clone <URL_DEL_REPOSITORIO_GITEA>
cd nombre-del-repositorio
2. Configuración de la Base de Datos
- Abra SSMS y conecte a su instancia de SQL Server.
- Cree una nueva base de datos llamada
InventarioDB. - Ejecute el script SQL
InventarioDB.sql(ubicado en la raíz del proyecto) sobre la base de datos recién creada. Esto creará todas las tablas, relaciones y claves necesarias.
3. Configuración del Backend
-
Navegue al directorio del backend:
cd backend. -
Abra el archivo
appsettings.Development.json(oappsettings.jsonpara producción). -
Modifique la
ConnectionStringpara que apunte a su instancia de SQL Server."ConnectionStrings": { "DefaultConnection": "Server=NOMBRE_SU_SERVIDOR;Database=InventarioDB;User Id=su_usuario_sql;Password=su_contraseña;TrustServerCertificate=True" } -
Configure las credenciales de la aplicación y la clave JWT. Es crucial cambiar los valores por defecto por unos seguros y únicos.
"AuthSettings": { "Username": "admin", "Password": "SU_NUEVA_CLAVE_SEGURA_AQUI" }, "Jwt": { "Key": "SU_CLAVE_SECRETA_LARGA_Y_COMPLEJA_PARA_JWT", "Issuer": "InventarioAPI", "Audience": "InventarioClient" } -
Configure las credenciales del servidor SSH que se usará para la función Wake On Lan en la sección
SshSettings. -
Instale las dependencias y ejecute el backend:
dotnet restore dotnet run
La API estará disponible en http://localhost:5198 y la UI de Swagger en la misma URL.
4. Configuración del Frontend
-
En una nueva terminal, navegue al directorio del frontend:
cd frontend. -
Instale las dependencias:
npm install -
Verificar la configuración del Proxy. El frontend utiliza un proxy de Vite para redirigir las peticiones de
/apial backend. Esta configuración se encuentra enfrontend/vite.config.ts. Si estás ejecutando el backend en el puerto por defecto (5198), no necesitas hacer ningún cambio. -
Ejecute el frontend en modo de desarrollo:
npm run dev
La aplicación web estará disponible en http://localhost:5173 (o el puerto que indique Vite).