Easidiomas es una ecosistema para aprender idiomas de forma social. Esto significa que aprendes idiomas al mismo tiempo que conoces gente. El ecosistema está compuesto por una aplicación móvil para los usuarios y dos aplicaciones de administración, una web y otra CLI.
Actualmente estamos trabajando en conseguir que easidiomas ofrezca las siguientes funcionalidades:
- Registrarte.
- Autenticarte.
- Buscar a otras personas que estén registradas, filtrando por:
- Nombre de usuario.
- Nombre real.
- Edad.
- Idioma/s hablado.
- Idioma/s que quieren aprender.
- Seguir a otras personas que estén registradas.
- Ver los posts públicos de las personas a las que sigues.
- Publicar posts que las personas que te siguen verán en su feed.
- Establecer conversaciones privadas con otros usuarios.
- Ver las estadísticas del ecosistema:
- Número de usuarios registrados en las últimas 24h.
- Número de posts realizados en las últimas 24h.
- Número de conversaciones nuevas en las últimas 24h.
- Número de mensajes personales enviados en las últimas 24h.
- Ver los usuarios registrados y sus datos.
- Identifica el idioma de los posts.
- Traduce los mensajes de las conversaciones a demanda del usuario.
- Identifica y alerta de los posts que puedan contener texto ofensivo.
- Identifica los tópicos de los posts.
Este ecosistema nace de una asignatura del Máster en Ingeniería Web de la Universidad de Oviedo. El objetivo es crear un sistema distribuido basado en servicios SOA/MSA donde se exploren los distintos tipos de comunicación entre servicios. Es por ello que se emplean comunicaciones SOAP, REST y gRPC.
En el diagrama anterior se puede ver que el sistema consta de 3 grandes segmentos. Uno donde se ubican los distintos clientes. Otro público que expone servicios y enruta peticiones. Y, un bloque privado que no está expuesto a internet donde residen los servicios que dan respuesta a las peticiones de los clientes. Los sevicios de los que se compone easidiomas son los siguientes:
Servicio | Lenguaje | Descripción |
---|---|---|
webclient | .NET | Expone por HTTP el sitio web que pueden usar los administradores del sistema. |
mobileclient | Native React | Cliente móvil que expone la funcionalidad del sistema a los usuarios. |
authenticationservice | .NET | Provee un mecanismo de autenticación para los usuarios registrados y de verificación de identidad en las peticiones a los servicios. |
userservice | Java | Permite crear, actualizar, borrar y buscar usuarios. |
postsservice | Java | Permite crear, actualizar, borrar y buscar posts. |
chatsservice | .NET | Permite crear, actualizar, borrar y buscar conversaciones individuales. |
translationsservice | .NET | A demanda de otros servicios traduce el texto que sea necesario al idioma seleccionado. |
texttospeechservice | Python | Para una entrada de texto genera un audio que representa la entrada convertida a habla humana en el mismo idioma. |
statisticsservice | Java | Permite centralizar todas las estadísticas relativas a las entidades del sistema en un mismo sitio. No es un sistema de monitorización del sistema si no más bien una caché de estadística. En este sistema se pueden encontrar datos como el número de mensajes por usuario, el número de usuarios registrados en las últimas 24h, etc. |
offensivetextdetectionservice | Python | Continuamente busca texto que pueda ser ofensivo dentro de los posts nuevos. |
languageidentificationservice | Java | Para los posts nuevos identifica el lenguaje en el que están escritos y etiqueta dichos posts. |
topicmodelingservice | Python | Para los posts nuevos se identifican los posibles tópicos que contenga el post. |
imagesservice | Java | Procesa imagenes (en nuestro caso, los avatares de los nuevos usuarios del sistema) y las sube a un bucket de Google Cloud Storage para poder acceder públicamente a éstas |
La documentación que acompaña a Easidiomas es la siguiente: