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