PIGED es un sistema de gestión de inventario diseñado para facilitar la administración de productos, categorías, unidades de medida, almacenes y usuarios. Además, permite generar reportes detallados sobre movimientos de inventario.
- Gestión de Productos: Crear, editar, eliminar y gestionar el stock de productos.
- Gestión de Categorías: Organizar productos en categorías y reasignarlos al eliminar una categoría.
- Gestión de Unidades de Medida: Crear, editar y reasignar productos a nuevas unidades de medida.
- Gestión de Almacenes: Administrar almacenes y transferir productos entre ellos.
- Gestión de Usuarios: Controlar el acceso al sistema mediante roles (Administrador, Operador, Consultor).
- Reportes: Generar reportes en PDF y visualizar gráficos interactivos.
- Autenticación: Gestión de sesiones con NextAuth.
- Gráficos: Visualización de datos mediante gráficos interactivos con Recharts.
- Notificaciones: Sistema de notificaciones mediante toasts.
- Frontend: React, Next.js, TailwindCSS.
- Backend: API Routes de Next.js.
- Base de Datos: PostgreSQL con Prisma ORM.
- Autenticación: NextAuth.
- Gráficos: Recharts.
- Notificaciones: Sistema de Toasts personalizado.
La estructura del proyecto está organizada de la siguiente manera:
app/
├── prisma/ # Configuración y esquema de la base de datos
│ ├── migrations/ # Migraciones de la base de datos
│ └── schema.prisma # Definición del modelo de datos
├── src/
│ ├── actions/ # Lógica del backend (CRUD y operaciones)
│ │ ├── almacenes.ts # Operaciones relacionadas con almacenes
│ │ ├── categorias.ts # Operaciones relacionadas con categorías
│ │ ├── graficas.ts # Operaciones para gráficos
│ │ ├── movimientos.ts # Operaciones relacionadas con movimientos
│ │ ├── productos.ts # Operaciones relacionadas con productos
│ │ ├── reportes.ts # Generación de reportes
│ │ └── usuarios.ts # Operaciones relacionadas con usuarios
│ ├── components/ # Componentes reutilizables de la interfaz
│ │ ├── productmanagement/ # Componentes específicos para gestión de productos
│ │ ├── ui/ # Componentes de interfaz de usuario (botones, tablas, etc.)
│ │ └── Sidebar.tsx # Barra lateral de navegación
│ ├── hooks/ # Hooks personalizados
│ ├── lib/ # Librerías y utilidades
│ ├── pages/ # Páginas principales del sistema
│ ├── types/ # Definición de tipos TypeScript
│ └── app/ # Configuración de la aplicación
│ ├── admin/ # Layout y páginas del panel de administración
│ ├── globals.css # Estilos globales
│ └── layout.tsx # Layout principal
├── components.json # Configuración de componentes
├── package.json # Dependencias y scripts del proyecto
└── tailwind.config.ts # Configuración de TailwindCSS
El modelo de datos está definido en el archivo prisma/schema.prisma y utiliza PostgreSQL como base de datos. A continuación, se describen las principales entidades:
-
User: Representa a los usuarios del sistema.
id: Identificador único.usuario: Nombre de usuario.rol_usuario: Rol del usuario (ADMIN, OPERADOR, CONSULTOR).deleted: Soft delete.
-
Categoria: Representa las categorías de productos.
id: Identificador único.nombre_categoria: Nombre de la categoría.deleted: Soft delete.
-
UnidadMedida: Representa las unidades de medida.
id: Identificador único.nombre_unidad_medida: Nombre de la unidad de medida.deleted: Soft delete.
-
Producto: Representa los productos del inventario.
id: Identificador único.nombre: Nombre del producto.descripcion: Descripción del producto.stock: Cantidad en inventario.id_categoria: Relación con la categoría.id_unidad_medida: Relación con la unidad de medida.deleted: Soft delete.
-
Almacen: Representa los almacenes.
id: Identificador único.nombre_almacen: Nombre del almacén.ubicacion_almacen: Ubicación del almacén.deleted: Soft delete.
-
MovimientoInventarioDetalle: Representa los movimientos de inventario.
id: Identificador único.tipo_movimiento: Tipo de movimiento (ENTRADA, SALIDA, SUMINISTRA).fecha_movimiento: Fecha del movimiento.cantidad: Cantidad del movimiento.id_producto: Relación con el producto.id_almacen_destino: Relación con el almacén.id_usuario: Relación con el usuario.
Sigue estos pasos para instalar y ejecutar el proyecto:
-
Clona el repositorio:
git clone https://github.com/tu-usuario/piged.git cd piged -
Instala las dependencias:
npm install
-
Configura las variables de entorno en un archivo
.env:DATABASE_URL=postgresql://usuario:contraseña@localhost:5432/nombre_base_datos NEXTAUTH_SECRET=tu_secreto
-
Ejecuta las migraciones de la base de datos:
npx prisma migrate dev
-
Inicia el servidor de desarrollo:
npm run dev
-
Accede a la aplicación en tu navegador en
http://localhost:3000.
npm run dev: Inicia el servidor de desarrollo.npm run build: Construye la aplicación para producción.npm run start: Inicia el servidor en modo producción.npm run lint: Ejecuta el linter para verificar errores en el código.
Si deseas contribuir al proyecto, por favor sigue estos pasos:
- Haz un fork del repositorio.
- Crea una rama para tu funcionalidad (
git checkout -b feature/nueva-funcionalidad). - Realiza tus cambios y haz commit (
git commit -m 'Agrega nueva funcionalidad'). - Haz push a tu rama (
git push origin feature/nueva-funcionalidad). - Abre un Pull Request.
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.