Giter Site home page Giter Site logo

tasktalkapp's Introduction

TASKTALK v4

Descripción General del Proyecto(TLDR)

Este proyecto es una aplicación de gestión de tareas, mensajería grupal/P2P y videoconferencias. Permite a los usuarios registrarse, crear tareas, asignarse entre sí y unirse a grupos para comunicarse a través de mensajes grupales o individuales (ya sea texto, vídeo, archivo o imágenes). Se espera que la aplicación sea de gran utilidad para trabajos y proyectos académicos en grupo.

Instalación y Ejecución

  1. Clona el repositorio.
  2. Ejecuta npm install para instalar las dependencias, indicadas en el apartado tecnologías Utilizadas.
  3. Configura las variables de entorno en un archivo .env (explicado en requisitos para la integración).
  4. Ejecuta npm run dev para iniciar el servidor y el frontend en modo de desarrollo con nodemon.

Estado del Proyecto

El proyecto se encuentra en una fase definitiva, con todas sus funcionalidades y características implementadas como se esperaba. Todas las utilidades, usos y aspecto visual del proyecto estan completos y funcionando correctamente.

Funcionalidades Principales

  • Registro de usuarios.
  • Autenticación y verificación de usuarios.
  • Creación, edición, asignación y eliminación de tareas.
  • Gestión de grupos con operaciones como crear, editar, eliminar y agregar/eliminar miembros.
  • Mensajería grupal y P2P.
  • Videollamadas grupales y P2P.
  • Tableros para la visualización y cómoda edición de las tareas.

Requisitos para la Integración

  • Node.js y npm instalados.
  • Base de datos MongoDB.
  • Configuración de variables de entorno en un archivo .env.
    • DB_USER, DB_PASSWORD, DB_SERVER, DB_NAME para la conexión a MongoDB.
    • TOKEN_SECRET para la generación de tokens de acceso.
    • PORT para el puerto en el que se ejecutará el servidor.
    • LIVEKIT_API_KEY, LIVEKIT_API_SECRET, PUBLIC_LIVEKIT_URL para la funcionalidad de videollamadas.
    • EMAIL_PASSWORD: Contraseña del correo electrónico utilizado para el envío de notificaciones.
    • USER_EMAIL: Correo electrónico utilizado para el envío de notificaciones.

Tecnologías Utilizadas

  • Express.js para el servidor web.
  • MongoDB y Mongoose para la base de datos.
  • JSON Web Tokens (JWT) para la autenticación.
  • Bcrypt.js para el hash de contraseñas.
  • Nodemon para la ejecución del servidor en modo de desarrollo.
  • Morgan para la generación de registros de actividad del servidor.
  • Cookie-parser para el manejo de cookies en Express.
  • Cors para habilitar el intercambio de recursos entre diferentes dominios.
  • Dotenv para la carga de variables de entorno desde un archivo.
  • Body-parser para analizar datos JSON y URL en las solicitudes.
  • Socket.io (pendiente de implementación) para la mensajería en tiempo real.
  • Nodemailer para el envío de correos electrónicos de verificación.
  • Googleapis para la integración con servicios de Google (pendiente de detalles específicos).
  • Cloudinary para el almacenamiento y gestión de archivos multimedia en la nube.
  • ESLint para el linting del código.
  • Prettier para el formateo consistente del código.
  • React.js para el frontend.
  • React Router para la navegación dentro de la aplicación.
  • Axios para realizar solicitudes HTTP a la API del backend.
  • React Icons para la inclusión de iconos en la aplicación.
  • LiveKit para la funcionalidad de videollamadas.

Arquitectura del Proyecto TaskTalk y Relaciones entre Entidades

TaskTalk se construye como una aplicación web utilizando la pila MERN (MongoDB, Express.js, React, Node.js) para sus componentes de backend y frontend. El proyecto sigue una arquitectura modular y escalable para garantizar la mantenibilidad y extensibilidad.

Arquitectura del Backend

  • Servidor: Express.js se utiliza como el marco del servidor para manejar las solicitudes y respuestas HTTP.

  • Base de Datos: MongoDB es la base de datos NoSQL elegida, y Mongoose se utiliza como un ODM (Object Document Mapper) para modelar e interactuar con la base de datos.

  • Autenticación: Se emplean Tokens de Web JSON (JWT) para la autenticación del usuario. Bcrypt.js se utiliza para el hash de las contraseñas de usuario.

  • Middleware: Diversos middleware, como Morgan para el registro, Cookie-parser para el manejo de cookies y CORS para el intercambio de recursos entre dominios, se integran en la aplicación Express.js.

  • Comunicación en Tiempo Real (Pendiente): Socket.io está planeado para implementar la funcionalidad de mensajería en tiempo real.

  • Verificación de Correo Electrónico: Nodemailer se utiliza para enviar correos electrónicos de verificación durante el proceso de registro del usuario.

  • Almacenamiento en la Nube: Cloudinary está implementado para gestionar archivos multimedia en la nube.

Arquitectura del Frontend

  • Framework: React.js se elige como la biblioteca frontend para construir interfaces de usuario.

  • Gestión del Estado: El proyecto utiliza una combinación del estado local de React y la API de contexto para gestionar el estado de la aplicación.

  • Enrutamiento: React Router se utiliza para manejar la navegación dentro de la aplicación.

  • Solicitudes a la API: Axios se utiliza para realizar solicitudes HTTP a la API del backend.

  • Manejo de Formularios: React Hook Form se utiliza para el manejo eficiente y efectivo de formularios en los componentes de React.

Relaciones entre Entidades

Usuario

  • Un Usuario puede estar asociado con muchas Tareas.
  • Un Usuario puede ser miembro de varios Grupos.
  • Un Usuario puede enviar y recibir Mensajes dentro de un Grupo, ya sea de 2 o más miembros.
  • Cada Usuario tiene un token de autenticación único.

Tarea

  • Una Tarea pertenece a un Usuario (creador/asignatario).
  • Una Tarea puede estar asociada con varios Usuarios.
  • Las Tareas pueden pertenecer a uno o más Grupos.

Grupo

  • Un Grupo puede tener múltiples Usuarios como miembros.
  • Un Grupo puede tener múltiples Tareas asociadas.
  • Los Mensajes se intercambian entre Usuarios dentro de un Grupo.

Mensaje

  • Un Mensaje está asociado con un Grupo específico.
  • Los Mensajes pueden incluir texto, video, archivos o imágenes.
  • Cada Mensaje es enviado por un Usuario específico dentro del Grupo.

Esta arquitectura y modelo de relaciones entre entidades proporcionan una base para construir la aplicación TaskTalk con características como la gestión de tareas, la comunicación grupal y la mensajería en tiempo real.

Descripción extensa del proyecto, dirección del mismo y objetivos a lograr

TaskTalk aspira a convertirse en una aplicación diseñada para el ámbito profesional y educativo. Se espera que su implementación en estos campos agilice y optimice tanto el trabajo como la comunicación en grupo, ya sea en entornos laborales o académicos. Además, se vislumbran posibles usos de la aplicación a nivel P2P o individual, facilitando la creación de tareas y listas para cualquier propósito.

El proyecto de encuentra en una versión definitiva, y ya cuenta con todas las funcionalidades y herramientas previstas ya implementadas y en correcto funcionamiento,como se detalla en funcionalidades principales. Además de estas funcionalidades, también cuenta con su maquetado finalizado, responsive y, esperamos que agradable a nivel estético.

Nota: Está es la última versión de este proyecto hasta nuevo aviso.

tasktalkapp's People

Contributors

22guerrabruno avatar galizaragoza avatar kayracz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.