Inspiration

La inspiración de este proyecto vino dada por la gran afición hacia los videojuegos por parte de los miembros del equipo. Ya que nos gusta disfrutar de este pasatiempo en diferentes plataformas, quisimos hacer una biblioteca que guardara el historial y el tiempo acumulado tras jugar en los diferentes títulos.

What it does

La app muestra un catálogo de juegos proporcionado por el API de RAWG. El usuario después puede navegar por los diferentes títulos accediendo a los detalles del mismo y a una página de perfil de usuario en la que se muestra el tiempo acumulado pasado en los juegos.

How we built it

Hemos desarrollado un sistema completo desde el diseño de los componentes pasando por el cliente para conectarse a la API, y un backend que servirá como base común para las apps de iOS y Android.

El backend consiste en una API REST y ha sido desarrollado utilizando tecnologías Elixir bajo el paraguas del framework web Phoenix. Tanto la capa de persistencia, una base de datos MongoDB cómo la propia API REST se encuentran desplegadas en servicios Cloud, Atlas y Fly.io respectivamente. El servidor se desplegaba automáticamente con cada commit a la rama main a través de un job de GitHub actions (CI/CD). Además, el servidor utiliza datos de un API de terceros (RAWG), motivo por el cual se ha desarrollado un cliente específico para consumir este API y ha sido liberado como librería Open Source independiente.

El diseño de las apps fue guiado a través un Design System en Figma, el cual proporcionó una guía coherente y consistente para la interfaz de usuario. La identidad corporativa se basó en una paleta de colores que incluye el negro y el verde neón, que se reflejaron en muchos de los componentes de diseño. La inspiración para los componentes de diseño provino del popular juego Tetris, así como de los mandos de consolas de juegos, que se reflejaron en el diseño de los botones y otros elementos. Cabe destacar que las aplicaciones no cuentan con un modo oscuro, ya que su diseño predeterminado se enfoca en una base oscura.

La aplicación de Android fue hecha en Kotlin, que supone una mejora sobre las apps Legacy escritas en Java. Se ha implementado una clean architecture usando además el patrón Model-View-ViewModel, haciendo la app más reactiva a los eventos y a la información que le llega al view model. Además se ha utilizado la koin para inyección de dependencias.

El contrato entre el backend y las apps se ha establecido por medio de una especificación OpenAPI, que se encuentra desplegada en GitHub pages usando SwagerUI para facilitar su consulta.

Todos los repositorios están licenciados bajo la licencia MIT.

Challenges we ran into

  • Integración de tecnologías: Integrar tecnologías diferentes puede ser un reto. Es necesario tener un conocimiento sólido de cada tecnología y su integración para que las aplicaciones y el API REST funcionen correctamente.

  • Limitaciones de tiempo: Las hackathons suelen tener un tiempo limitado para desarrollar las aplicaciones y el API REST, lo que puede ser un desafío en términos de cumplir con las fechas límite. La planificación cuidadosa y la priorización de las tareas son esenciales para cumplir con los plazos.

Accomplishments that we're proud of

  • Contamos con un sistema de diseño propio.
  • Hemos implementado dos apps (iOS y Android), utilizando tecnologías nativas para optimizar los recursos de los dispositivos.
  • Hemos implementado una librería cliente (open source) para el consumo de datos a un API de terceros.
  • Hemos configurado pipelines de análisis estático de código, testing y despliegue.

What we learned

  • La sincronización entre las distintas horizontales de un proyecto puede ser una tarea realmente complicada.
  • Hemos salido de nuestra zona de confort al estar en contacto con tecnologías que no forman parte de nuestro día a día.

What's next for PlayTime

  • Faceted search
  • Search terms suggestion
  • Recent search history

Built With

Share this project:

Updates