Skip to content

Este proyecto es un red social de salas (grupo de conversaciones) en tiempo real. Desarrollando con una arquitectura "BackEnd y FrontEnd desacoplado", se usó para el lado FrontEnd: ReactJS + Axios + Tailwind CSS, y se usó para el lado BackEnd: Express + Mongoose + Socket.io, etc

Notifications You must be signed in to change notification settings

maximovj/cotojs

Repository files navigation

CotoJS

Este repositorio es un proyecto de red social de sala (grupo de conversaciones) en tiempo real.

Desarrollado con una arquitectura "BackEnd y FrontEnd desacoplado", se usó para el lado FrontEnd: ReactJS + Axios + Tailwind CSS, y se usó para el lado BackEnd: Express + Mongoose + Socket.io + JWT + CORS + Multer + etc

Conjunto de tecnologías y características para este aplicación web:

  • Proyecto con infraestructura virtualizada o proyecto Vagrantizado.
  • Proyecto dockerizado.
  • Proyecto de RectJS + Axios (FrontEnd).
  • Proyecto de NodeJS + Express + Moongose (BackEnd).
  • Base de datos usando MongoDB
  • Mapeador de Documentos a Objetos (ODM con Mongoose).
  • Notificaciones de sistema (con Toastify y SweetAlert2).
  • CRUD para usuarios (crear, leer, eliminar, actualizar).
  • CRUD para salas (crear, leer, eliminar, actualizar).
  • CRUD para mensajes (crear, leer, eliminar, actualizar).
  • Sistema de Login (con express-session).
  • Encriptación de contraseña (con bicrytjs).
  • CORS solo origines permitidos (con cors).
  • Chat en tiempo real (con socket.io)
  • Sistema de token usando JSON Web Token (con jsonwebtoken)
  • Sistema de inactividad de 30 minutos (en FrontEnd y BackEnd).

Requisitos

  • Mongo v7.0.14 o mongo:4.4 (docker)
  • Node v18.20
  • pnpm v9.9.0
  • docker-compose v2.29.2 (Opcional)
  • docker (Opcional)
    • node:18.20-slim
    • mongo:4.4

Configurar variables de entorno (Obligatorio)

  • Para BackEnd

Acceder a la carpeta de /express-api y crear un copia de .env.example con nombre de .env.

  • Para FrontEnd

Acceder a la carpeta de /react-vite y crear un copia de .env.example con nombre de .env.

NOTA:

En caso de que prefiera usar docker o docker-compose para arrancar el proyecto es necesario modificar localhost por el IP de la máquina host, por ejemplo: 192.168.63.80, para la máquina de Vagrant + Ubuntu20.04.

Las variables de entorno en este caso sería lo siguiente:

Archivo .env para BackEnd

# Ambiente de desarrollo
APP_PORT=5880
APP_URL=http://192.168.63.80
APP_ENV=local
NODE_ENV=development

# MongoDB URI
APP_MONGODB_URI=mongodb://root:secret@service_db/db-cotojs?authSource=admin

# Clave secreta
APP_SECRET_KEY=ssh

# CORS
APP_CORS_1=http://192.168.63.80:5880
APP_CORS_2=http://192.168.63.80:5173
APP_CORS_3=http://192.168.63.80:5173/api/v1

# API Socket.io
APP_CLIENT_SOCKET_IO=http://192.168.63.80:5173

Archivo .env para FrontEnd

# API Express
VITE_API_URL=http://192.168.63.80:5880/api/v1

# API Socket.io
VITE_SOCKET_IO_DOMAIN=http://192.168.63.80:5880
VITE_SOCKET_IO_PATH=/api/v1/socket.io

Usando pnpm (BackEnd y FrontEnd)

  • Paso 1)

Ejecuta el siguiente comando desde el directorio /express-api para instalar las dependencias.

$ pnpm install
  • Paso 2)

Ejecuta el siguiente comando desde el directorio /express-api para correr el servicio API RestFul.

$ pnpm run dev
  • Paso 3)

Ejecuta el siguiente comando desde el directorio /react-vite para instalar las dependencias.

$ pnpm install
  • Paso 4)

Ejecuta el siguiente comando desde el directorio /react-vite para correr el servicio React + Vite.

$ pnpm run dev

Usando docker (BackEnd y FrontEnd)

  • Paso 1)

Ejecuta el siguiente comando desde el directorio /express-api para crear una red y correr el servidor mongodb

$ docker network create cotojs-network
$ docker run --network cotojs-network --name cotojs-mongodb-run -p 27017:27017 -d mongo:4.4`
  • Paso 2)

Ejecuta el siguiente comando desde el directorio /express-api, para crear una imagen y crear un contenedor docker con: Express + Mongoose + Socket.io + JWT + CORS + Multer + etc

$ docker build -t cotojs-api-build -f api.Dockerfile .
$ docker run --network cotojs-network --name cotojs-api-run -p 5880:5880 -d cotojs-api-build
  • Paso 3)

Ejecuta el siguiente comando desde el directorio /react-vite, para crear una imagen y crear un contenedor docker con: React + Vite

$ docker build -t cotojs-react-build -f react.Dockerfile .
$ docker run --network cotojs-network --name cotojs-react-run -p 5173:3000 -d cotojs-react-build

Usando docker-compose (BackEnd y FrontEnd)

  • Paso 1)

Ejecuta el siguiente comando desde el directorio raíz /, para crear servicios, volumenes y redes de docker-compose

$ docker-compose up --build -d
  • Paso 2)

Ejecuta el siguiente comando desde el directorio raíz /, para eliminar servicios, volumenes y redes de docker-compose

$ docker-compose down

Previews

preview01.jpg preview02.jpg preview03.jpg preview04.jpg preview05.jpg preview06.jpg preview07.jpg

About

Este proyecto es un red social de salas (grupo de conversaciones) en tiempo real. Desarrollando con una arquitectura "BackEnd y FrontEnd desacoplado", se usó para el lado FrontEnd: ReactJS + Axios + Tailwind CSS, y se usó para el lado BackEnd: Express + Mongoose + Socket.io, etc

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages