Inventory es una solución integral diseñada para gestionar un inventario básico de productos y sus categorías.
El proyecto sigue una arquitectura en capas bien definida:
- Controllers (app/Http/Controllers): Manejan las peticiones HTTP y delegan la lógica de negocio a los repositorios.
- Models (app/Models): Definen la estructura de datos y las relaciones entre entidades:
User: Gestión de usuarios y autenticaciónCategory: Categorías de productosProduct: Productos del inventario
- Repositories (app/Repositories): Implementan el patrón Repository para abstraer la lógica de acceso a datos:
CategoryRepository: Operaciones CRUD para categoríasProductRepository: Operaciones CRUD para productosUserRepository: Gestión de usuarios
- Factories (database/factories): Facilitan la creación de datos de prueba
- Migrations (database/migrations): Definen la estructura de la base de datos
El sistema utiliza Laravel Sanctum para la autenticación, proporcionando:
- Tokens de API: Autenticación segura para la API mediante tokens
- Control de Acceso: Políticas y roles de usuario definidos en
UserRolepara gestionar permisos - Seguridad: Protección contra CSRF y XSS
La elección de Sanctum se justifica por:
- Simplicidad y ligereza para APIs
- Integración nativa con Laravel
- Soporte para SPA y aplicaciones móviles
- Gestión eficiente de tokens
- Capacidad de revocar tokens
- Los roles de usuario se definen de forma simple por la escala del proyecto
- Documentación de la API (Remota)
- Visor de Logs (Remoto)
- Documentación local: Una vez el proyecto esté en funcionamiento, accede a la documentación de la API en
http://localhost:8000/docs/api#/. - Logs locales: Puedes revisar los logs de la aplicación en
http://localhost:8000/log-viewero directamente en el directoriostorage/logs.
Antes de comenzar, asegúrate de tener instalados los siguientes componentes:
Sigue estos pasos para configurar el proyecto:
-
Clona este repositorio:
git clone <URL_DEL_REPOSITORIO> cd <NOMBRE_DEL_DIRECTORIO>
-
Instala las dependencias de PHP:
composer install
-
Copia el archivo de configuración de ejemplo y renómbralo:
cp .env.example .env
-
Genera la clave de la aplicación:
php artisan key:generate
Ejecuta las migraciones para crear las tablas necesarias en la base de datos:
php artisan migrateO ejecuta las migraciones con datos de ejemplo:
php artisan migrate --seed-
Inicia el servidor de desarrollo:
php artisan serve
-
Accede a las siguientes herramientas:
- Documentación de la API: http://localhost:8000/docs/api#/
- Visor de Logs: http://localhost:8000/log-viewer
- Logs locales: Archivos en
storage/logs
-
Usa los siguientes usuarios de prueba para acceder al sistema:
-
Usuario: Test User
Email: test@example.com
Contraseña: password -
Usuario: Admin User Email: admin@example.com
Contraseña: password
-
El framework de este proyecto es software de código abierto licenciado bajo la licencia MIT.