Skip to content

Backend survey system built with Docker, Compose, MongoDB, PostgreSQL, Redis, and RestAPI. Enables creating, publishing, and managing surveys, handling respondents, plus real-time messaging, data analysis, and collaborative editing.

Notifications You must be signed in to change notification settings

Erick25Kauffmann/SurveySystem

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SurveySystem

El objetivo del proyecto SurveySystem es diseñar e implementar un sistema de encuestas de back-end utilizando tecnologías modernas como Docker, Docker Compose, MongoDB, PostgreSQL, Redis y RestAPI. Este sistema permite a los usuarios crear, publicar y gestionar encuestas con distintos tipos de preguntas, además de registrar y administrar listas de encuestados. Adicionalmente, el proyecto incorpora herramientas avanzadas para el manejo de mensajes en tiempo real, análisis de datos y edición colaborativa. Estructura del Proyecto Carpeta Principal: python-flask-restapi

Esta carpeta contiene los archivos esenciales para el funcionamiento del sistema. Dentro de ella se encuentra la implementación de la lógica del back-end utilizando Flask. Archivo Clave: docker-compose.yml

Este archivo es fundamental para levantar el sistema. Define los servicios necesarios, incluyendo:

Servicios: Especifica los contenedores que se utilizarán, sus imágenes correspondientes y cómo interactúan entre sí.
Puertos: Configura los puertos de acceso para cada servicio.
Volúmenes: Gestiona los volúmenes para persistencia de datos.
Variables de Entorno: Define las variables necesarias para la configuración de los servicios.

Bases de Datos

PostgreSQL: Utilizado para el almacenamiento de datos relacionales.
MongoDB: Utilizado para datos no estructurados o semi-estructurados.
Redis: Utilizado para almacenamiento en caché y gestión de sesiones.

Requisitos Previos

Para ejecutar el sistema, asegúrese de tener instalados los siguientes componentes:

Docker Desktop: Herramienta para gestionar contenedores Docker.
Docker Compose: Utilizado para definir y ejecutar aplicaciones multi-contenedor.

Instrucciones de Configuración

Abrir Terminal: Navegue hasta la carpeta python-flask-restapi.

Ejecutar Comando:
docker-compose up --build

Este comando levantará todos los servicios definidos en el archivo docker-compose.yml, configurando las bases de datos y otros componentes necesarios.

Acceder a Endpoints: Una vez que todos los servicios estén corriendo, podrá utilizar las funciones del sistema a través de los endpoints definidos. Los detalles de estos endpoints están documentados en una colección de Postman que se puede acceder mediante el siguiente enlace:

https://app.getpostman.com/join-team?invite_code=e59ba8eaca721167264e766626873c6d&target_code=1481d8da825688d73ee1892e8fb3eb87

Proceso de Autenticación

Para utilizar el sistema, siga estos pasos:

Ejecutar Endpoint de Login: Envíe un request al endpoint de login con el username y password en formato JSON.
Obtener Token: Al autenticarse correctamente, recibirá un token que deberá usar en todos los requests subsecuentes.
Uso del Token:
    Navegue a la sección "Headers" en Postman.
    En "Authorization", añada el token precedido por la palabra "Bearer".

Gestión de Endpoints Ejemplos de Endpoints Comunes Crear Encuesta: POST /surveys Envíe los detalles de la encuesta en el cuerpo del request.

Publicar Encuesta:
POST /surveys/{id}/publish

Obtener Resultados:
GET /surveys/{id}/results

Edición Colaborativa de Encuestas

Para manejar cambios en las encuestas de manera colaborativa, se utilizan endpoints específicos:

Iniciar Sesión de Edición:
POST /surveys/{id}/edit/start
guardar cambios:
POST /surveys/{id}/edit/save
Enviar Cambios:
POST /surveys/{id}/edit/submit

Consultar Estado de Edición:
    GET /surveys/{id}/edit/status

Análisis de Datos en Tiempo Real

Apache Kafka: Utilizado para el manejo de mensajes en tiempo real, facilitando la transmisión de respuestas de encuestas.
Apache Spark: Permite el procesamiento y análisis en tiempo real de grandes volúmenes de datos, generando representaciones visuales mediante gráficos.
Neo4J: Usado para analizar relaciones complejas entre respuestas de encuestados, identificando patrones y correlaciones mediante bases de datos gráficas.

Dashboards y Visualización de Datos

Para la creación de dashboards y el consumo de datos, se integran herramientas como Streamlit, permitiendo una visualización interactiva y en tiempo real de los resultados de las encuestas.

About

Backend survey system built with Docker, Compose, MongoDB, PostgreSQL, Redis, and RestAPI. Enables creating, publishing, and managing surveys, handling respondents, plus real-time messaging, data analysis, and collaborative editing.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 94.7%
  • JavaScript 3.4%
  • Dockerfile 1.9%