Proyecto creado para cumplir con la prueba técnica para postular como desarrollador BACKEND
- El código del proyecto se encuentra de manera pública usando git
- Se utilizó PHP + LARAVEL + MySQL
- Se creó una colección en Postman para ejecutar los servicios (https://documenter.getpostman.com/view/8050459/SVSNK7vY?version=latest)
- Clonar el proyecto desde git https://github.com/quickdunk/testPeruApps
- Instalar composer
- Instalar laravel https://laravel.com/docs/5.8/installation
- Asegurarse que en la variable PATH de entorno se encuentre la carperta para ejeciutar el comando laravel (En el link anterior se puede ver los rutas para configurar este comando)
- Dentro de la carpeta del proyecto:
# Crear base de datos
$ php artisan migrate
# Poblar tabla
$ php artisan db:seed --class=UserTableSeeder
# En caso sucede algun problema, borramos la base de datos y podemos repetir los pasos anteriores
$ php artisan migrate:reset
$ php artisan migrate
$ php artisan db:seed --class=UserTableSeeder
# Publicamos la carpeta publica storage para acceder a las imágenes de los usuarios
$ php artisan storage:link
# Finalmente iniciamos el servidor
$ php artisan serve
- Luego de la población la tabla contendrá 50 usuarios con el password adminadmin. Se puede iniciar sesión con cualquiera de ellos
La aplicación tiene disponible las siguientes rutas:
Nombre | Método | URL |
---|---|---|
Iniciar sesión | POST | http://127.0.0.1:8000/api/user/login |
Lista paginada | GET | http://127.0.0.1:8000/api/user |
Usuario por ID | GET | http://127.0.0.1:8000/api/user/:id |
Crear usuario | POST | http://127.0.0.1:8000/api/user |
Actualizar usuario | PUT | http://127.0.0.1:8000/api/user/:id |
Subir foto usuario | POST | http://127.0.0.1:8000/api/user/profile/update/:id |
Borrar usuario | DELETE | http://127.0.0.1:8000/api/user/:id |
Cerrar sesión | POST | http://127.0.0.1:8000/api/user/logout |
- La configuración de la base de datos se encuentra en el archivo .env. El nombre de la base de datos es testperuapps
- Para la seguridad se utilizó JSON Web Tokens (https://github.com/tymondesigns/jwt-auth)
- Para la paginación se usó características de Laravel (https://laravel.com/docs/5.8/pagination#paginating-eloquent-results)
- Para la población de datos se usó Faker (https://github.com/fzaninotto/Faker)
- Las pruebas se ejecutaron con Postman y se publicó la colección (https://www.getpostman.com/collections/0309209381f970711643)
- Las imágenes se almacenan en /storage/app/public/uploads/images
- Para los filtros de la lista de usuario se pueden usar como parametros el nombre de las siguientes columnas: user_name, first_name, last_name, email. Estas pueden ser agregadas en la URL del servicio Lista paginada.
- La paginación puede establecerse usando el parámetro page
- El ordenamiento se hace por el valor de la columna last_name y los posibles valores son asc y desc
- Los paraemtros de filtros de columnas, el ordenamiento y la paginación pueden combinarse
Parametro | Referencia | Ejemplo URL |
---|---|---|
page | Es el número de página | http://127.0.0.1:8000/api/user?page=1 |
sort | Es el orden de los resultados ascendente o descendente | http://127.0.0.1:8000/api/user?sort=desc |
Es filtro de email | http://127.0.0.1:8000/api/user?email=e | |
user_name | Es filtro de nombre de usuario | http://127.0.0.1:8000/api/user?user_name=e |
first_name | Es filtro de nombre real del usuario | http://127.0.0.1:8000/api/user?first_name=e |
last_name | Es filtro de apellido del usuario | http://127.0.0.1:8000/api/user?last_name=e |