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.
- Clona el repositorio.
- Ejecuta
npm install
para instalar las dependencias, indicadas en el apartado tecnologías Utilizadas. - Configura las variables de entorno en un archivo
.env
(explicado en requisitos para la integración). - Ejecuta
npm run dev
para iniciar el servidor y el frontend en modo de desarrollo con nodemon.
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.
- 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.
- 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.
- 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.
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.
-
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.
-
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.
- 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.
- 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.
- 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.
- 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.
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.