/smart-open-space

Organizá tu Open Space!

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Smart Open Space

Organizá tu Open Space! 😎


Heroku Build Status Dependabot Status Backlog License: GPLv3 Issues

📖 Índice

👎 Problema

En una primera versión atacamos el siguiente problema: Los asistentes de un Open Space no logran captar los datos de una charla, en la agenda se cambian de sala u horario, se superponen charlas del mismo tópico, y algunas salas suelen llenarse muy rápido. En esta segunda, buscamos construir la mínima herramienta que permita gestionar un Open Space virtual con tracks/votaciones y que se desarrolle múltiples días.

🏆 Solución

  • Smart Open Space es una web app que permite gestionar la organización de un open space. Soporta la creación de un open space con multiples tracks que se desarrolla en múltiples días. Los asistentes pueden votar las charlas más populares. Soporta la gestión del marketplace (oradores se encolan para pitchear su charla. El organizador puede proyectar la charla que se está pitcheando). Las charlas pueden ser agendadas por el organizador (en caso que no haya marketplace) o los oradores.

🎉 Diferencial

  • Herramienta gratis y open-source que permite gestionar tanto el envio de charlas como la creación de la agenda.

🔧 Instalación

Antes de empezar, vas a necesitar:

Descargar el código fuente

git clone git@github.com:10PinesLabs/smart-open-space.git
cd smart-open-space

Levantar backend

Con Docker:

docker-compose up

Esto va a generar una carpeta ./db-data con el volumen.

Sin docker, con postgreSQL local

Crear la base de datos, ejemplo:

psql -c 'create database SOS;' -U postgres

Config

  • Crear el archivo application-default.properties en la ruta /back/src/main/resources/. Configurando url, usuario y contraseña:

Si usaste Docker, el puerto y las credenciales serian:

spring.datasource.url=jdbc:postgresql://localhost:6543/sos
spring.datasource.username=openminded
spring.datasource.password=openheart

Si usas postgresql directo:

spring.datasource.url=jdbc:postgresql://localhost:5432/sos
spring.datasource.username=postgres
spring.datasource.password=root

Ademas para ambos casos hay que agregar al final:

logging.appender.email.username=""
logging.appender.email.password=""
logging.appender.email.to=""

Ejecucion

cd back && ./gradlew bootRun

Levantar frontend

Asegurate de tener la version de node correspondiente:

cd front && nvm use

Si no tenes yarn instalado:

npm install -g yarn

Para instalar dependencias y levantar el proyecto:

yarn && yarn watch

Flyway plugin

Util para realizar diferentes acciones de Flyway como migrations, repairs de checksums de los archivos de migración, etc.

Requiere configurar las siguientes environments:

  • JDBC_DATABASE_URL: url del jdbc.
  • JDBC_DATABASE_USERNAME: username de la db.
  • JDBC_DATABASE_PASSWORD: password de la db.

Ejemplo:

JDBC_DATABASE_URL=jdbc:postgresql://localhost:6543/sos
JDBC_DATABASE_USERNAME=openminded
JDBC_DATABASE_PASSWORD=openheart

📜 Documentación

Diagrama de Arquitectura

Visualización del Open Space

Diagrama de arquitectura

  • Frontend:
    • App.js: Punto de entrada de la aplicación.
    • Routes: Detecta la ruta, y elige qué componente que corresponde renderizar.
    • OpenSpace.js: Renderiza la pantalla con los datos del Open Space.
    • os-client.js: Conseguir los datos del Open Space, conectandose con el backend.
  • Backend:
    • OpenSpaceController: Exponer los endpoints del OpenSpaceService, como REST-Json.
    • OpenSpaceService: Exponer un servicio para manipular un Open Space.
    • OpenSpaceRepository: Persistir y recuperar objetos OpenSpace de la base de datos.
    • OpenSpace: Objeto que representa un Open Space.

Casos de uso

Entrega 1

Caso de uso entrega 1

  • Organizador:
    • Crear Open Space: Nombre, fecha, horarios y salas.
  • Orador:
    • Registro / Login: Registrarse con nombre, email y contraseña. Loguearse con email y contraseña
    • Cargar charla: con título y descripción en un Open Space.
    • Agendar charla: en una sala y un horario disponible en el Open Space.
  • Asistente:
    • Ver agenda: con todas las charlas en su horario y sala de un Open Space.
    • Ver detalle de charla: Título, descripción, orador, sala y horario.

Entrega 2

Caso de uso entrega 2

  • Organizador:
    • Iniciar Marketplace: Habilitar encolamiento de los oradores para poder exponer su charla.
    • Mostrar modo proyección: Mientras orador expone, mostrar datos de su charla.
  • Orador:
    • Encolarse para exponer: Ponerse en la fila, para exponer su charla.

Entrega 3

Caso de uso entrega 3

  • Organizador:
    • Finalizar Marketplace: Deshabilitar encolamiento para que no se puedan agendar más charlas.
  • Orador:
    • Ingresar con mail: Ingresar a la app solo con email y nombre.

Entrega 4

Caso de uso entrega 4

  • Organizador:
    • Crear Open Space (modificado): Cargar estructura de slots (charla - otro).
    • Gestionar charlas: Cargar, encolar y agendar charlas de cualquier orador.
    • Intercambiar charlas: de cualquier orador a otra sala y horario.

💻 Demo

Youtube demo

👮 LICENCIA