TestPeruApps

Proyecto creado para cumplir con la prueba técnica para postular como desarrollador BACKEND

Instalación

# 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

Tecnología y características

  • 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
email 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