API RESTful desarrollada con Laravel 11 para la gestión de usuarios, empresas y actividades.
- Docker
- PHP 8.3+
- Composer 2.x
- Clonar el repositorio:
git clone https://github.com/YoimelDev/Laravel-technical-test
cd Laravel-technical-test- Copiar el archivo de entorno:
cp .env.example .env- Configurar las variables de entorno:
FIXER_API_KEY=your_api_key
FIXER_API_URL=http://data.fixer.io/api/- Iniciar los contenedores Docker:
./vendor/bin/sail up -d- Instalar dependencias:
./vendor/bin/sail composer install- Generar key de la aplicación:
./vendor/bin/sail artisan key:generate- Ejecutar migraciones y seeders:
./vendor/bin/sail artisan migrate --seed- Autenticación de usuarios con Laravel Sanctum
- Gestión de roles y permisos con spatie/laravel-permission
- API RESTful siguiendo especificación JSON:API
- Sistema de notificaciones por email
- Conversión de monedas con caché
- Importación de tipos de cambio históricos
- Pruebas unitarias y de integración con PHPUnit
POST /api/v1/register- Registro de usuariosPOST /api/v1/login- Login de usuarios
GET /api/v1/users- Listar usuariosPOST /api/v1/role-requests- Solicitar cambio de rolPATCH /api/v1/role-requests/{id}/process- Procesar solicitud de cambio de rol
GET /api/v1/companies- Listar empresasPOST /api/v1/companies- Crear empresaGET /api/v1/companies/{id}- Ver empresaPATCH /api/v1/companies/{id}- Actualizar empresaDELETE /api/v1/companies/{id}- Eliminar empresa
GET /api/v1/activity-types- Listar tipos de actividadPOST /api/v1/activity-types- Crear tipo de actividadPOST /api/v1/companies/{id}/relationships/activity-types- Asociar actividades a empresaDELETE /api/v1/companies/{id}/relationships/activity-types- Desasociar actividades de empresa
POST /api/v1/currency/convert- Convertir monedaGET /api/v1/currency/history- Obtener historial de conversiones
- Para autenticación:
Authorization: Bearer {token} - Para API JSON:API:
Accept: application/vnd.api+json
Content-Type: application/vnd.api+json
- Importar tipos de cambio históricos:
./vendor/bin/sail artisan currency:import-historical- Ejecutar pruebas:
./vendor/bin/sail test- Ejecutar pruebas con cobertura:
./vendor/bin/sail test --coverage- Admin:
email: super@admin.com
password: password
- Los usuarios nuevos se registran con rol 'basic'
- Listar usuarios solo está permitido para roles 'admin'
- Las solicitudes de cambio de rol deben ser aprobadas por un admin
- Las empresas solo pueden ser creadas por usuarios con rol 'business_owner' o 'admin'
- La conversión de monedas utiliza caché para optimizar rendimiento
- La API implementa el estándar JSON:API para recursos y relaciones