Estado del proyecto y futuros avances (actualizado el 12/12/2020)

Actualización del 12/12/20: Aprovechando la entrega de avances del día sábado, decidimos actualizar esta entrada para poder trabajar más enfocados en el proyecto. Al final de la nota hay una pequeña planificación de tareas con fecha para seguir nuestro avance mientras nosotros trabajemos en la aplicación.

En las reuniones de las últimas semanas se estuvo avanzando (aunque de forma más calmada y lenta) en el proyecto; si bien consideramos que cómo equipo estábamos bastante bien organizados y planificados, visualizamos que nuestro avance real no era tanto como pensamos; que era momento de ponerse manos a la obra y empezar a trabajar la parte más concreta (y a opinión de algunos, la más pesada): la programación de la aplicación. Aunque no hubieron actualizaciones entremedio en este blog, el trabajo no fue menor.

De forma resumida:

Uno de los obstáculos más simples, pero el primero que nos encontramos de cara a la programación, fue cómo hacerlo de forma simultánea sin "pisarnos los talones". Cuando tratamos de enviarnos la base de lo que llevábamos, descubrimos que al clonar el repositorio e instalarlo la aplicación fallaba porque no se podía iniciar el servidor local.

A raíz de esto, convenimos en trabajar todos con el mismo entorno de desarrollador: Visual Studio Code. Esta elección resulta de que éste trae una buena implementación de Git, por lo que es fácil trabajar de forma individual, y de que facilita mucho el uso de los commit, pull, y push. Por otro lado, permite correr rutinas npm de forma sencilla y directa.

Tras una investigación del problema, descubrimos que no bastaba sólo con clonar el repositorio, puesto que sin poder iniciar el servidor local claramente no se podían visualizar los cambios. Esto ocurría porque cuando se trataba de inicializar el servidor con el respectivo script "npm start", no se habían instalado los paquetes correspondientes en la carpeta recién clonada desde Git.

Para hacer la instalación se usó el terminal de Windows, desde donde se ingresó al directorio del proyecto (comando cd "{ruta de la carpeta}") y posteriormente se corrió el comando npm install.

Captura del IDE, listo para seguir trabajando a fondo en el proyecto

A modo de ejemplo, se dejan unas capturas del proceso replicado en otro computador, con sistema operativo Linux.

Paso 1: Clonando repositorio

Paso 2: Instalar React en el directorio de la aplicación

Paso 3: Inicializar con npm start y empezar a programar! :D

Dentro del proyecto, también hubo algún que otro obstáculo, aunque eventualmente lo logramos resolver: Por ejemplo, creando el menú principal, no lográbamos que la interfaz ocupara toda la pantalla, por lo que al hacer el menú lateral de navegación se nos desconfiguraba toda la interfaz de usuario de la aplicación. Esto nos atrasó bastante puesto que al no tener el esqueleto base, no supimos continuar con ninguna de las pantallas que la seguían ya que no las podíamos estructurar. Finalmente logramos implementarla creando el menú como componente separado, que se cargue en paralelo en el archivo base de la aplicación (app.js).

Por otro lado, también nos dimos cuenta que como equipo que estábamos algo desorganizados (respecto a tareas a cargo y enfoques), por lo que empezamos a ocupar una aplicación para trabajar en equipo y organizarnos mejor que se llama Zenkit To Do. A modo general, sirve para asignar tareas y subtareas , a las que se les pueden agregar notas y cosas así, cambiar su estado de realización y avisar con notificaciones al resto del equipo. Teníamos las siguientes tareas cuando iniciamos su uso:

Captura de la aplicación Zenkit To Do, que es una "sub-aplicación" derivada de Zenkit.

Finalmente, definimos tareas a cargo para cada uno. Si bien todos trabajamos en general, ahora tendremos distintos enfoques por lo que esperamos que el desarrollo tome un rumbo menos disperso:
  • Lucas Bernard y Andrés González se enfocarán en revisar y documentarse sobre bases de datos; específicamente MongoDB. Cabe mencionar que si bien el enfoque actual de ellos está e investigar sobre el servidor, también están trabajando en la navegación con React dentro de la aplicación. Se espera:
    • Lunes y Martes -> Revisar la documentación e investigar sobre MongooseJS, Bcrypt y MongoDB (y en caso necesario, React JS) y aprender sobre bases de datos. Crear el servidor para la BD.
    • Miércoles, Jueves -> Integrar la base de datos en conjunto con la navegación (variables, estructuras y la base de datos.)
    • Viernes -> Integrarla al código (funciones y requests, etcétera) y que funcione.
  • Theo Jofré y Felipe Villegas se enfocarán en terminar la estructura de cada una de las pantallas  de la aplicación con React, a modo que haya un "piso" donde integrar la base de datos y la navegación. Además, se preparará el código para empezar a estilizarlo con Semantic CSS.
    • Lunes -> Revisar documentación sobre React RouterSemantic UI y JavaScript (y probablente Stack Overflow). Comenzar a escribir las interfaces necesarias (.jsx).
    • Martes -> Terminar las interfaces y componentes faltantes, crear todas las que sean necesarias. Prepararlas en función de lo que requiera la navegación con Router (y ajustar el esqueleto principal si es necesario).
    • Miércoles -> Revisar nuevamente React Router e implementar la navegación intra-aplicación.
    • Jueves y Viernes -> Estilizar la app vía CSS.
Durante el Miércoles nos volveremos a reunir para planificar qué hacer respecto a la navegación y dividir en tareas mucho más específicas (preparar archivos específicos, etc.)




Avance 11/21/2020

 






1.- Definición de tecnologías:

    - React js

    - Electrón

2.- Pantallas

    - Se dibujo como haríamos las pantallas tentativas donde vimos el diseño de la UI

    - Se definió:

        - Uso y funcionalidad de los botones

        - Eventos tentativos.

3.- Diseño

    - Se definió:

        - Paleta de colores

        - Framework de diseño (Semantic UI React)

4.- Maquetación:

    - Se crea:

        - Cada pantalla tentativa

        - Cada diseño tentativo

5.-Desarrollo:

    - Se desarrolla el back-end de la maquetación:

        - El orden es:

            a) Login-Registro

            b) Pantalla Inicial

            c) Pantallas secundarias (se traspasan las tentativas de el paso 2)

 

El tiempo de desarrollo dependerá de la complejidad de cada paso.

Adjuntas hay imágenes que evidencian que todos instalamos node.js como primer paso en camino al resto del proyecto.

Reunión 10/11/2020: Interfaces de usuario y planificación preliminar

Durante el día de hoy terminamos de concretar las pantallas principales, correspondientes al login, el menú principal, la pestaña de perfil, grupos, búsqueda de grupos y biblioteca, además de varios detalles relacionados a las características de la aplicación.


Sin embargo, a medida que avanzamos con la interfaz nos dimos cuenta de que para poder terminarla, necesitábamos tener claridad de qué  la aplicación y por ello decidimos hacer una pausa en el diseño de la interfaz para planificar su funcionamiento primero, con diagramas de flujo. Aquí nos dimos cuenta de que, por ejemplo, nos faltó una pestaña para el registro (puedes revisar el boceto original):


Por tema de la hora sí, tuvimos que hacer una pausa en el diagrama y el diseño; sin embargo quedamos muy satisfechos con el avance porque de a poco está tomando forma la aplicación (aunque sea en "papel") y creemos que así será más fácil a la hora de ponerse a programar e implementar.




Primeros bocetos de la aplicación.

A continuación un pequeño boceto realizado a inicio de semana, en el que se podrían apreciar las pantallas iniciales de la aplicación de escritorio.


Sobre el proyecto y más

Para profundizar sobre el proyecto y explicarlo de una forma más entretenida, decidimos abordar las preguntas propuestas como una especie de entrevista.

Hormigas trabajando juntas para armar un PC.

 - ¿Qué tipo de aplicación sería?

Como equipo, decidimos que una aplicación de escritorio sería lo más acertado, teniendo en cuenta qué tanto podemos abordar con nuestros conocimientos, y de cuanto tiempo disponemos.

 - ¿Qué problemática observamos? ¿Por qué decidimos este proyecto?

Curiosidad: en primer lugar la idea consistía en hacer una aplicación que se conectase con la API de Spotify y generara recomendaciones musicales. Sin embargo, en el transcurso del semestre observamos que existía una dificultad para estudiar de manera autónoma -sobretodo durante este año de clases virtuales- y muchas veces costaba encontrar compañeros de estudio. Eso hizo iluminarnos: ¿por qué no tratar de resolverlo un poco, aportando desde nuestro proyecto?

De hecho, consideramos que es una aplicación que nos gustaría usar, y quién mejor para diseñarla que el mismo público al que va dirigido: estudiantes de universidad (y en nuestro caso, con muchas ganas de programar).

 - ¿Y de qué forma va a interactuar la persona usuaria con la aplicación?

Al ser una aplicación de estudio, se barajaron varias opciones: por un lado una aplicación de teléfono y por otro lado, una aplicación web o de escritorio. Finalmente nos decidimos por el tercer caso, una app de escritorio, ya que las otras dos serían fácilmente contraproducentes: uno constantemente se puede distraer: que una notificación de Instagram por ahí, otra de Facebook, y... ¡Boom! Ya son las 12 de la noche.

En detalle, pensamos que una app de escritorio sería también lo más conveniente ya que se podría tener de fondo mientras se escucha música y ocuparse para los tiempos de estudio. Y en resumen, ésta interactuaría con nosotros (los usuarios) como gestor de estudio y como herramienta (grupos, difusiones, etc)


Cuando la app todavía estaba en fase de desarrollo de la idea, la aplicación iba a ser de teléfono móvil y se iba a ver mas o menos así. 


 - ¿Cómo se alimentará de información? ¿Cuál de las siguientes utilizarán y para qué? (API, almacenamiento persistente, sensor, otra funcionalidad equivalente)

Hemos considerado que lo más sensato es que la información sería bueno que se agregue durante el registro de los usuarios, creación de salas, ingreso de preguntas de grupo y básicamente cualquier acción que involucre al usuario. Junto a ello, consideramos como futuras funcionalidades de la aplicación el almacenamiento persistente (datos de inicio de sesión, de biblioteca) y quizás la confección de una pequeña API para la base de datos de salas y alumnos.

 - ¿Hay algo similar que ya exista? De ser así, ¿por qué vale la pena hacer este proyecto? 

Open-Study, pero si bien es muy similar a nuestro proyecto en ese caso, los usuarios son de habla inglesa solamente. Aunque la USM tiene cursos de Inglés, no es la idea segregar a aquellos que no sean fluidos en éste. Además, si bien la aplicación es de estudio, consideramos que otro de sus futuros beneficios sería generar una mayor unión entre estudiantes de la Santa María.

Otro tipo de referencias, pero más bien abstractas, serían Discord (en cuanto a la creación y gestión de grupos) y Tinder (por su interfaz de chats, y sistema de match de grupos de estudio con usuarios).

 - ¿Cuál será la característica distintiva (el corazón) de la aplicación?

Sin duda alguna, sería la formación de salas de estudio sincrónicas y comunitarias, y el acompañamiento para estudiar.

Study-Ant: Una nueva forma de estudiar

Con esta publicación queremos inaugurar este blog, el cuál está pensado como una forma de transmitir el proceso de gestación y producción de nuestro proyecto: Study-Ant.

Pero, ¿qué es y por qué lo necesitas?

Study-Ant nace de una problemática muy específica, la cual (debido a la pandemia) se ha podido notar más y más en los estudiantes.


Curiosidad: el nombre de "Study-Ant" viene de las hormigas, que trabajan todas individualmente en pos de un bien común (en analogía al buen desempeño académico) pero también como un juego de palabras con la palabra "estudiante" (estudi-ant).


¿Cómo estudiar solo, cuando siempre lo has hecho de forma grupal?

Hay personas cuyo método de estudio sigue una metodología individual (sea porque son introvertidos, no conocen a nadie –como alguna gente en nuestra universidad–, les cuesta másno les gusta estudiar en grupo o simplemente aprenden mejor de forma individual). Cuando uno trabaja así, a veces puede estancarse porque encuentra dudas que no puede resolver y no tiene quién lo ayude. Nosotros proponemos una plataforma donde cada usuario cree un perfil, se formen “grupos de estudio” y se permita agendar sesiones sincrónicas de estudio con otros pares (y que acompañe el estudio si es que éste se realiza individual totalmente).

Por ejemplo, yo programo una sesión de estudio para el jueves a las 18.00h , de Física II, y todos los miembros del grupo de Física II quedan avisados vía notificación. Así cuando llegue la fecha, todos sabrán que, si postean dudas durante el tiempo de la sesión, habrá más gente que también esté estudiando y pueda ayudarlos, ojear, comentar y/o proponer preguntas/resoluciones. De esta forma se potencia el estudio individual manteniendo los beneficios de estudiar con otros compañeros, ayudando a quienes no tienen a nadie para estudiar grupalmente o simplemente no quieran hacerlo. 

Se compartirían ejercicios vía foto + descripción, textos, etcétera, de forma pública o anónima y de modo que los pares puedan resolverlo y comentar/proponer una resolución. Además un temporizador acompañaría al grupo definiendo pausas, tal y como se utilizase la técnica pomodoro. El atractivo sería hacerlo lo más sencillo/intuitivo posible, sin interfaces engorrosas, facilidad para agendar sesiones de estudio y con retroalimentación grupal e incluso apoyo para docentes/guías que quieran guiar y observar el estudio. 

Como alcances futuros del proyecto, creemos que una buena implementación podría dar lugar a una aplicación/plataforma muy buena, puesto que ya conocemos gente interesada y esperando futuros avances del proyecto. Por otro lado, de lograrse lo anterior, incluso nos planteamos mostrar y derivar el proyecto como una forma de apoyar la labor del CIAC (dentro de la USM) y/o expandir su uso para personas de fuera de la universidad. 

Atentamente, el equipo de Study-Ant.