Smart Open Space
Organizá tu Open Space! :sunglasses:
:book: Índice
:-1: 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.
:trophy: 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.
:tada: Diferencial
- Herramienta gratis y open-source que permite gestionar tanto el envio de charlas como la creación de la agenda.
:wrench: 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
:scroll: Documentación
Diagrama de Arquitectura
Visualización del Open Space
- 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
- 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
- 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
- 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
- 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.
:computer: Demo
:cop: LICENCIA