Skip to content

manuelramoslg/inspiring-test

Repository files navigation

InspiringTest

Hay que desarrollar un buscador de facts de Chuck Norris que se obtienen de la API https://api.chucknorris.io/

  • El buscador tendrá las siguientes características:
    • No necesita login, es abierto.
    • Se permitirá buscar por:
      • Palabras.
      • Categorías.
      • De manera aleatoria.
    • Los resultados se mostrarán paginados.
    • Cada búsqueda junto con los resultados obtenidos se guardarán en la base de datos.
    • Existirá la opción de introducir una cuenta de email para que se envíen los resultados de la búsqueda.
    • La aplicación estará disponible en castellano e inglés (los contenidos extraídos de la API no es necesario traducirlos, se pueden presentar en inglés).

La estructura y el diseño de la página y de los correos son completamente libres, al igual que el modelo de datos para guardar la información. Se puede añadir cualquier otra funcionalidad o mejora que se considere.

Forma de entrega: subirlo a un repositorio público de GitHub o Bitbucket incluyendo una carpeta con algunas capturas de pantalla de la solución desarrollada y una pequeña explicación sobre la solución planteada en el Readme.

Requisitos

  • Ruby 3.0.0
  • PostgreSQL 12
  • Rails 7.0.4
  • Node v19.0.0
  • Yarn 1.22.19
  • Redis 7.0.5

Configuración

  • En la carpeta del proyecto ejecutar:

      gem install bundle
      bundle install
      rails db:create db:migrate
    
  • Configurar cliente de correo:

    • Ejecutar en el proyecto:
      EDITOR="nano" bin/rails credentials:edit
      
  • Agregar credenciales con la siguiente estructura:

    url:
      base: "https://api.chucknorris.io/jokes"
    
    mailer:
      email: "[email protected]"
      password: "youDontFindChuckNorrisHeFindsYou"
    
  • Levantar servidor rails:

      ./bin/dev
    
  • Levantar servidor sidekiq:

      sidekiq
    

Solución

Para el desarrollo de InspiringTest se utilizó el patrón de diseño modelo, vista, controlador(MVC) y para las características solicitadas se utilizaron las siguientes gemas:

  • Para obtener el usuario actual se usó la gema Devise, que permite manejar sesiones de invitados, de esta manera se puede saber qué usuario se encuentra conectado y en caso de que envíe los Facts a su email se puede persistir el email.
  • Para la integración con el api.chucknorris.io se usó la gema Faraday por su simpleza y flexibilidad.
  • Los resultados se muestran paginados con Kaminari y para mejorar su apariencia se utilizó la gema bootstrap5-kaminari-views.
  • Para el email se utilizó el mailer de rails y es enviado de forma asíncrona usando redis y sidekiq.
  • Para la internacionalización se utilizó la gema rails-i18n, se ajustaron las rutas para que el cambio de idiomas sea dinámico basado en la selección del menú.
  • Cada búsqueda queda persistida en la base de datos, los datos persistidos son:
    • Query de la búsqueda
    • Usuario invitado que hizo la búsqueda
    • Resultado de la búsqueda, incluyendo la url del Chuck Norris Fact, categoría y su contenido.

Modelo

Screenshot_1

Página en Español

Image

Image

Página en Inglés

Image

Image

Próximas mejoras

  • Mejorar el manejo de errores y la forma en que se muestran.
  • Dockerizar proyecto.

About

Buscador de facts de Chuck Norris que se obtienen de la API https://api.chucknorris.io/

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published