Skip to content
/ PIGED Public

Este proyecto es un Sistema de Gestión de Inventario llamado PIGED.

Notifications You must be signed in to change notification settings

Zeider45/PIGED

Repository files navigation

PIGED - Sistema de Gestión de Inventario

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.

Características

  • 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.

Tecnologías Utilizadas

  • 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.

Estructura de Carpetas

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

Modelo de Base de Datos

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:

Entidades Principales

  • 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.

Instalación

Sigue estos pasos para instalar y ejecutar el proyecto:

  1. Clona el repositorio:

    git clone https://github.com/tu-usuario/piged.git
    cd piged
  2. Instala las dependencias:

    npm install
  3. Configura las variables de entorno en un archivo .env:

    DATABASE_URL=postgresql://usuario:contraseña@localhost:5432/nombre_base_datos
    NEXTAUTH_SECRET=tu_secreto
  4. Ejecuta las migraciones de la base de datos:

    npx prisma migrate dev
  5. Inicia el servidor de desarrollo:

    npm run dev
  6. Accede a la aplicación en tu navegador en http://localhost:3000.

Scripts Disponibles

  • 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.

Contribución

Si deseas contribuir al proyecto, por favor sigue estos pasos:

  1. Haz un fork del repositorio.
  2. Crea una rama para tu funcionalidad (git checkout -b feature/nueva-funcionalidad).
  3. Realiza tus cambios y haz commit (git commit -m 'Agrega nueva funcionalidad').
  4. Haz push a tu rama (git push origin feature/nueva-funcionalidad).
  5. Abre un Pull Request.

Licencia

Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.

About

Este proyecto es un Sistema de Gestión de Inventario llamado PIGED.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published