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.
- Ruby 3.0.0
- PostgreSQL 12
- Rails 7.0.4
- Node v19.0.0
- Yarn 1.22.19
- Redis 7.0.5
-
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
- Ejecutar en el proyecto:
-
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
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.
- Mejorar el manejo de errores y la forma en que se muestran.
- Dockerizar proyecto.