Skip to content

Repository files navigation

Laravel Logo

Sistema de Inventario Backend

Este proyecto es el backend de un sistema de inventario desarrollado con Laravel. Proporciona una solución robusta para la gestión de inventarios, incluyendo la administración de productos, generación de códigos de barras, envío de correos electrónicos y autenticación segura.

Características

  • Gestión de Inventarios: Permite agregar, editar y eliminar productos en el inventario.
  • Generación de Códigos de Barras: Crea códigos de barras únicos para cada producto.
  • Envío de Correos Electrónicos: Envía correos electrónicos de bienvenida y notificaciones.
  • Autenticación JWT: Utiliza JSON Web Tokens para una autenticación segura.
  • Roles y Permisos: Soporta múltiples roles como empleado, admin, demo y owner.
  • Relaciones entre Modelos: Maneja relaciones complejas entre productos, proveedores, lotes y sitios.
  • Paginación: Soporta la paginación para manejar grandes conjuntos de datos.
  • Transacciones de Base de Datos: Asegura la consistencia de los datos mediante transacciones.
  • Integración de PayPal para los Cobros: Confiabilidad para gestionar cobros.
  • ChatBot: Chatbot donde se pueden agregar preguntas y respuestas (NO IA).
  • Manejo de Eventos: El servidor maneja de manera interna ciertos puntos, como poner etiquetas de expirado y deshabilitar las cuentas demos sin necesidad de intervención.
  • Multitenancy: Gestiona múltiples clientes de forma aislada, asegurando la independencia de datos.

Requisitos

  • Laravel 11: Asegúrate de tener Laravel 11 instalado para evitar problemas de compatibilidad.

Instalación

  1. Instalar Laravel: Si aún no tienes Laravel instalado, puedes hacerlo con:
composer global require laravel/installer
  1. Clonar el Repositorio: Clona el repositorio o haz un fork:
git clone https://github.com/StefanoIG/APWII/tree/main

O realiza un fork en GitHub y clónalo.

  1. Instalar Dependencias: Navega a la carpeta del proyecto y ejecuta:
composer install
  1. Configurar el Archivo .env: Copia el archivo de ejemplo y configura las variables necesarias:
cp .env.example .env

Luego, edita .env para incluir la clave JWT:

JWT_SECRET=tu_clave_jwt_aqui

Genera una clave JWT con:

php artisan jwt:secret
  1. Configurar Variables de Correo Electrónico: En el archivo .env, asegúrate de configurar las variables de correo electrónico necesarias. Si estás utilizando Gmail, ten en cuenta que la contraseña que debes proporcionar no es la misma que usas para iniciar sesión en Google. Debes ir a la configuración de tu cuenta de Google, acceder al administrador de contraseñas para aplicaciones y registrar una nueva contraseña específica para esta aplicación. Luego, en el archivo .env, configura las variables de correo electrónico de la siguiente manera:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=tu_correo_electronico@gmail.com
MAIL_PASSWORD=tu_clave_de_aplicacion_generada
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=tu_correo_electronico@gmail.com
MAIL_FROM_NAME="${APP_NAME}"

Recuerda reemplazar tu_correo_electronico@gmail.com con tu dirección de correo electrónico y tu_clave_de_aplicacion_generada con la clave de aplicación generada en la configuración de tu cuenta de Google.

  1. Verificar Extensiones de PHP: Asegúrate de que la extensión ZIP esté habilitada en tu archivo php.ini. Esta extensión es necesaria para la integración con PayPal.
extension=zip

Asegúrate de que no esté comentado, es decir, sin el ;.

  1. Configurar PayPal: Regístrate en PayPal Developer (https://developer.paypal.com/) y crea una nueva aplicación para obtener las credenciales de sandbox. Añade las siguientes variables al archivo .env:
PAYPAL_MODE=sandbox
PAYPAL_SANDBOX_CLIENT_ID=tu_client_id_aqui
PAYPAL_SANDBOX_CLIENT_SECRET=tu_client_secret_aqui
PAYPAL_BASE_URL=https://api-m.sandbox.paypal.com
  1. Configurar y Usar Tenancy:

Este sistema utiliza un modelo multitenancy para gestionar múltiples clientes. Para configurarlo:

  • Abre el archivo config/tenancy.php y localiza el arreglo central_domains.

  • Añade las IPs o dominios de tu servidor:

    'central_domains' => [
        '127.0.0.1',
        'localhost',
        'tu_dominio_o_ip_aqui',
    ],
  • Para solicitudes de clientes específicos, asegúrate de que el subdominio o dominio de cada cliente esté configurado correctamente en tu servidor DNS.

  • Para ejecutar migraciones específicas de cada tenant, usa el comando:

    php artisan tenants:migrate
  1. Ejecutar Migraciones: Configura la base de datos en .env y luego ejecuta las migraciones con:
php artisan migrate
  1. Iniciar el Servidor: Inicia el servidor de desarrollo con:
php artisan serve

Uso

Autenticación

Utiliza JWT para la autenticación. Incluye el token en el encabezado de tus solicitudes:

Authorization: Bearer <tu_token_jwt>

Endpoints Principales

  • Productos: /api/productos
  • Proveedores: /api/proveedores
  • Lotes: /api/lotes
  • Sitios: /api/sitios
  • Usuarios: /api/usuarios

Ejemplo de Solicitud

Para crear un nuevo producto, realiza una solicitud POST a /api/productos con el siguiente cuerpo:

{
  "nombre": "Producto Ejemplo",
  "descripcion": "Descripción del producto",
  "precio": 100.00,
  "cantidad": 50
}

Documentación

La documentación del proyecto está disponible en public/docs. Fue generada con la librería Scribe y puede ser consultada en tu navegador web.

Contribuciones

Este proyecto fue desarrollado por:

Backend

  • 🧑‍💻 Stefano Aguilar (Desarrollador Principal)
  • 👩‍💻 Cristhian Ortiz (Dev)
  • 👨‍💻 Julio Arias (Dev y Docs)
  • 👨‍💻 Maria Rendon (Dev y Docs)

FrontEnd

  • 👩‍💻 Jostin Mosquera (Dev)
  • 👨‍💻 Josthin Baque (Dev)

Cómo Contribuir

  1. Fork el Repositorio: Haz un fork del repositorio en GitHub.
  2. Clonar tu Fork: Clona tu fork en tu máquina local.
  3. Crear una Rama: Crea una nueva rama para tus cambios.
  4. Realizar Cambios: Realiza los cambios necesarios en tu rama.
  5. Enviar un Pull Request: Envía un pull request con una descripción detallada de tus cambios.

About

Parte para subir a un hosting el backend del proyecto final del backend

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages