Este proyecto implementa la arquitectura básica de un sistema de ecommerce para la gestión de órdenes de venta. Utiliza Laravel como framework principal y MySQL como motor de base de datos.
Desarrollar una API RESTful que permita crear y consultar órdenes de venta, almacenando datos del comprador, domicilio de entrega, datos de facturación y productos involucrados.
- 📦 Estructura de modelos y migraciones
- 🔄 API para crear y ver detalles de órdenes
- 🧾 Validación con Form Requests
- 🔐 Autenticación con Sanctum
- 🔑 Autorización mediante Policies
- ⚙️ Lógica desacoplada en Services
- 📄 Documentación con Swagger (OpenAPI)
- 🧵 Envío de emails vía Jobs
- 🧠 Uso de Cache en endpoints críticos
- 🧪 Tests unitarios e integrales
- PHP 8.2+
- Composer
- Laravel 12
- MySQL 8.x
-
Clonar el repositorio:
git clone https://github.com/Apitarque/challenge_zipnova.git nombre-del-proyecto cd nombre-del-proyecto -
Instalar dependencias:
composer install
-
Crear archivo de entorno:
cp .env.example .env
-
Configurar base de datos:
Crear una base de datos MySQL con el nombre:zipnova_ecommerce
Editar el archivo.envcon las credenciales correspondientes. -
Ejecutar migraciones y seeders:
php artisan migrate --seed
-
Ejecutar pruebas:
php artisan test -
Iniciar el servidor:
php artisan serve
-
Generar un token de acceso con Sanctum:
php artisan tinker >>> App\Models\User::find(1)->createToken('api-token')->plainTextToken;
-
Acceder a la documentación: Navegar a http://127.0.0.1:8000/api/documentation
Click en Authorize y pegar el token generado. -
¡Probar la API desde Swagger o Postman! 🎉
-
🔐 Autenticación:
Laravel Sanctum para autenticación vía token Bearer. -
📜 Autorización:
Policies para restringir el acceso solo a órdenes del usuario autenticado. -
🧾 Validaciones:
Uso de clasesFormRequestpara mantener limpias las validaciones. -
🧠 Servicios:
Se utiliza la carpetaServicespara encapsular la lógica de negocio. -
🛠 Excepciones:
Manejo global de errores desdebootstrap/app.phppara respuestas JSON uniformes. -
🧪 Tests:
Se incluyen pruebas unitarias y de integración con seeders y factories. -
🧵 Jobs:
Envío de email de confirmación cuando se crea una orden. -
🧰 Caching:
Implementación deCache::remember()para reducir carga de la base de datos. -
📄 Swagger:
Documentación completa de los endpoints con anotaciones OpenAPI.