STREAM FOR LABS: Sistema para compartir archivos (NASS)
Arquitectura
Basado en los requerimientos del proyecto y los diferentes servicios
que este debe tener,
se planteó la siguiente arquitectura, la cual está dividida en dos partes.
Podemos visualizar en las siguientes figuras, en las cuales se quiere
explicar que existen aplicaciones clientes, sea un navegador web o servicio de sincronización
que consumirán una serie de servicios que estarán contenerizados con Docker, esto se hizo para
distribuir los servicios necesitados y de esta forma para la aplicación cliente el backend sea
transparente, es decir, conoce que existe, pero no como funciona.
A continuación se presentarán los distintos servicios brindados por la aplicación web.
Sesiones de la aplicación web
Login
El login el cual está compuesto por uno sección para usuarios normales y usuarios administradores, este es el punto de entrada a la aplicación, esta está protegida con un captchat y se expresan las condiciones de uso de la aplicación que el usuario debe aceptar para poder continuar.
Login Usuario Administrador
Login Usuarios Normales
Files
Esta sección es considera el home del usuario, el cual contiene tres directorios: videos, photos y files, en dichos directorios se almacenarán los archivos con la extensión correspondiente.
Photo
En este apartado el usuario podrá visualizar las imagenes que ha subido. Se realizó un ordenamiento por medio de una función Sort() para que el usuario pueda ordenar las imagenes por nombre o por fecha.
Adicionalmente, el usuario puede presentar las imagenes, hacer zoom, eliminar una imagen, entre otras funcionalidades del servicio.
Video
La interfaz de archivos de video está conformada por un reproductor de video por streaming y una lista de los diferentes archivos de video disponibles del usuario. En caso de que el usuario no posea archivos de video podrá ver solamente el encabezado de la lista con un texto indicando que puede subir archivos. Al reproducir un archivo se podrá visualizar el nombre del archivo y la fecha de actualización, además, en la lista se puede ver el tamaño del archivo y se tiene la opción de compartir y descargar los archivos.
Para el streaming nos basamos en el estándar definido en el "RFC 7223", la cual trata el header Range, esta cabecera le indica al servidor que requiere de un trozo de información, más conocido como un pedazo o stream para ir reproduciendo el video con la información entrante.
Shared
Con el fin de compartir archivos con otros usuarios se desarrolló
una vista “Modal”, de esta
manera se podrá acceder mediante un filtro al usuario al que se quiera conceder
acceso aun archivo. Al concceder acceso, otro usuario determinado podrá visualizar el archivo
seleccionado.
El usuario podrá ver con quien ha compartido el archivo y su fecha.
Administration
Esta sección es la encargada de agrupar las opciones de configuración de un usuario administrador. El administrador puede elegir un valor que indica la capacidad de almacenamiento que tendrán los usuarios disponibles, este valor se encuentra limitado por un valor máximo y mínimo definido.
Synchronization
Para implementar la funcionalidad de sincronización es necesario que la aplicación cliente pueda acceder al sistema de archivos, por lo mismo se necesita una aplicación nativa. Basado en lo anterior, usamos electrón para correr la aplicación en Windows y Linux, cuando el usuario se encuentra en la aplicación web se le pide descargar la aplicación nativa para la plataforma respectiva.
Una vez el usuario descargue la aplicación nativa y entre en la sección de sincronización se le pedirá que sincronice un directorio. Cuando el usuario seleccione el directorio la sincronización se inicia utilizando SFC y puede detenerla cuando quiera. También se detiene cuando pierde la conexión a internet y se reanuda cuando vuelve a estar conectado.
Una vez sincronizado el directorio los archivos que agregue y elimine se reflejaran en el home y se lanzara un mensaje indicando la acción.
Video del funcionamiento del proyecto
Aquí una presentación ampliada de los resultados logrados en el proyecto. En el video podremos visualizar las secciones del aplicativo con cada una de sus funcionalidades.