Sistema web moderno para la gestión integral de inventario, asignación de bienes y control de cuentadantes del SENA.
- 🎨 Interfaz Moderna: Diseño responsive con modo claro/oscuro
- 🌍 Multiidioma: Soporte para Español, Inglés y Portugués
- 📊 Dashboard Interactivo: Estadísticas y métricas en tiempo real
- 🔍 Búsqueda Avanzada: Sistema de búsqueda inteligente unificada
- 📱 Responsive: Optimizado para dispositivos móviles y tablets
- 🔐 Sistema de Autenticación: Control de acceso seguro
- 📋 Gestión Completa: CRUD de bienes, cuentadantes y asignaciones
- Frontend: React 18 + Vite 5
- Backend: Node.js + Express 5
- Base de Datos: PostgreSQL 14+
- Estilos: Tailwind CSS 3 + CSS personalizado
- Iconos: Lucide React
- Node.js v18 o superior
- PostgreSQL v14 o superior
- npm o yarn
- Git
git clone https://github.com/TU_USUARIO/proyecto_elementos.git
cd proyecto_elementosnpm installCrea un archivo .env en la raíz del proyecto basándote en .env.example:
cp .env.example .envEdita el archivo .env con tus credenciales:
DB_HOST=localhost
DB_PORT=5432
DB_NAME=bd_elementos
DB_USER=postgres
DB_PASSWORD=tu_contraseña
SERVER_PORT=3001
VITE_PORT=3000Ejecuta el script SQL en pgAdmin o psql:
psql -U postgres -f src/config/bd_elementos_completo.sqlO manualmente en pgAdmin:
- Abre pgAdmin
- Crea una nueva base de datos llamada
bd_elementos - Ejecuta el script
src/config/bd_elementos_completo.sql
Opción 1: Ejecutar ambos servidores simultáneamente
Terminal 1 - Backend:
npm run serverTerminal 2 - Frontend:
npm run devOpción 2: Usar concurrently (recomendado)
npm install -g concurrently
concurrently "npm run server" "npm run dev"- Frontend: http://localhost:3000
- Backend API: http://localhost:3001/api
# Construir el frontend
npm run build
# Previsualizar el build
npm run previewproyecto_elementos/
├── src/
│ ├── components/ # Componentes React
│ │ ├── Dashboard.jsx
│ │ ├── AuthScreen.jsx
│ │ ├── BienesTable.jsx
│ │ └── ...
│ ├── contexts/ # Context API (Estado global)
│ │ ├── AuthContext.jsx
│ │ ├── DataContext.jsx
│ │ ├── ThemeContext.jsx
│ │ └── ...
│ ├── hooks/ # Custom hooks
│ │ ├── useNotifications.js
│ │ └── useTranslation.js
│ ├── locales/ # Archivos de traducción
│ │ ├── es.js
│ │ ├── en.js
│ │ └── pt.js
│ ├── assets/ # CSS e imágenes
│ │ ├── css/
│ │ └── js/
│ ├── config/ # Configuración y scripts SQL
│ │ ├── conexion.js
│ │ └── bd_elementos_completo.sql
│ ├── App.jsx # Componente principal
│ ├── main.jsx # Punto de entrada
│ └── index.css # Estilos globales
├── server/ # Backend Express
│ └── index.js # Servidor y API REST
├── public/ # Archivos estáticos
├── index.html # HTML principal
├── vite.config.js # Configuración de Vite
├── tailwind.config.js # Configuración de Tailwind
├── package.json # Dependencias
└── README.md # Este archivo
- ✅ Crear, editar y visualizar bienes
- ✅ Categorización por tipo
- ✅ Control de estados (disponible, asignado)
- ✅ Registro de valores y fechas de ingreso
- ✅ Búsqueda y filtrado avanzado
- ✅ Registro de cuentadantes
- ✅ Información de contacto
- ✅ Asignación de áreas y cargos
- ✅ Control de estado activo/inactivo
- ✅ Asignar múltiples bienes a cuentadantes
- ✅ Historial de asignaciones
- ✅ Desasignación de bienes
- ✅ Seguimiento de fechas
- ✅ Estadísticas en tiempo real
- ✅ Últimos movimientos
- ✅ Alertas del sistema
- ✅ Gráficos y métricas
- ✅ Modo oscuro/claro
- ✅ Multiidioma (ES/EN/PT)
- ✅ Notificaciones en tiempo real
- ✅ Diseño responsive
- ✅ Animaciones suaves
GET /api/bienes- Obtener todos los bienesPOST /api/bienes- Crear nuevo bienPOST /api/bienes/:id/desasignar- Desasignar bien
GET /api/cuentadantes- Obtener todos los cuentadantesPOST /api/cuentadantes- Crear nuevo cuentadante
GET /api/asignaciones- Obtener todas las asignacionesPOST /api/asignaciones- Crear nueva asignación
npm run dev # Inicia el servidor de desarrollo
npm run build # Construye para producción
npm run preview # Previsualiza el build de producción
npm run server # Inicia el servidor backendVerifica que:
- PostgreSQL esté corriendo
- Las credenciales en
.envsean correctas - La base de datos
bd_elementosexista - El usuario tenga permisos adecuados
Si el puerto 3000 o 3001 está en uso:
# Windows
netstat -ano | findstr :3000
taskkill /PID <PID> /F
# Linux/Mac
lsof -ti:3000 | xargs kill -9rm -rf node_modules package-lock.json
npm install- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto es de uso educativo para el SENA.
- Desarrollador Principal - Tu Nombre
- SENA - Servicio Nacional de Aprendizaje
- Comunidad de React
- Contribuidores del proyecto