{"id":18454693,"url":"https://github.com/maximovj/cotojs","last_synced_at":"2026-04-06T09:32:09.618Z","repository":{"id":256349782,"uuid":"854393750","full_name":"maximovj/cotojs","owner":"maximovj","description":"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","archived":false,"fork":false,"pushed_at":"2024-09-22T17:44:41.000Z","size":1043,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-03T13:18:24.104Z","etag":null,"topics":["axios","docker","docker-compose","expressjs","mongoose","nodejs","pnpm","reactjs","tailwindcss","vagrant"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maximovj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-09T05:03:47.000Z","updated_at":"2024-10-11T17:00:11.000Z","dependencies_parsed_at":"2024-12-25T04:41:35.418Z","dependency_job_id":"9f483b44-e7e1-462f-a66d-f8928542364f","html_url":"https://github.com/maximovj/cotojs","commit_stats":null,"previous_names":["maximovj/cotojs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maximovj/cotojs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximovj%2Fcotojs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximovj%2Fcotojs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximovj%2Fcotojs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximovj%2Fcotojs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maximovj","download_url":"https://codeload.github.com/maximovj/cotojs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximovj%2Fcotojs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31466606,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axios","docker","docker-compose","expressjs","mongoose","nodejs","pnpm","reactjs","tailwindcss","vagrant"],"created_at":"2024-11-06T08:05:49.772Z","updated_at":"2026-04-06T09:32:09.597Z","avatar_url":"https://github.com/maximovj.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CotoJS\n\nEste repositorio es un proyecto de red social de sala (grupo de conversaciones) en tiempo real.\n\nDesarrollado 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\n\nConjunto de tecnologías y características para este aplicación web:\n\n- Proyecto con infraestructura virtualizada o proyecto Vagrantizado.\n- Proyecto dockerizado.\n- Proyecto de RectJS + Axios (FrontEnd).\n- Proyecto de NodeJS + Express + Moongose (BackEnd).\n- Base de datos usando MongoDB\n- Mapeador de Documentos a Objetos (ODM con Mongoose).\n- Notificaciones de sistema (con Toastify y SweetAlert2).\n- CRUD para usuarios (crear, leer, eliminar, actualizar).\n- CRUD para salas (crear, leer, eliminar, actualizar).\n- CRUD para mensajes (crear, leer, eliminar, actualizar).\n- Sistema de Login (con express-session).\n- Encriptación de contraseña (con bicrytjs).\n- CORS solo origines permitidos (con cors).\n- Chat en tiempo real (con socket.io)\n- Sistema de token usando JSON Web Token (con jsonwebtoken)\n- Sistema de inactividad de 30 minutos (en FrontEnd y BackEnd).\n\n# Requisitos\n\n* Mongo v7.0.14 o mongo:4.4 (docker)\n* Node v18.20\n* pnpm v9.9.0\n* docker-compose v2.29.2 _(Opcional)_\n* docker _(Opcional)_\n    - node:18.20-slim\n    - mongo:4.4\n\n# Configurar variables de entorno (Obligatorio)\n\n* __Para BackEnd__ \n\nAcceder a la carpeta de `/express-api` y crear un copia de `.env.example` con nombre de `.env`.\n\n* __Para FrontEnd__ \n\nAcceder a la carpeta de `/react-vite` y crear un copia de `.env.example` con nombre de `.env`.\n\n``NOTA:``\n\nEn 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.\n\nLas variables de entorno en este caso sería lo siguiente:\n\n### Archivo `.env` para BackEnd\n\n```text\n# Ambiente de desarrollo\nAPP_PORT=5880\nAPP_URL=http://192.168.63.80\nAPP_ENV=local\nNODE_ENV=development\n\n# MongoDB URI\nAPP_MONGODB_URI=mongodb://root:secret@service_db/db-cotojs?authSource=admin\n\n# Clave secreta\nAPP_SECRET_KEY=ssh\n\n# CORS\nAPP_CORS_1=http://192.168.63.80:5880\nAPP_CORS_2=http://192.168.63.80:5173\nAPP_CORS_3=http://192.168.63.80:5173/api/v1\n\n# API Socket.io\nAPP_CLIENT_SOCKET_IO=http://192.168.63.80:5173\n```\n\n### Archivo `.env` para FrontEnd\n \n```text\n# API Express\nVITE_API_URL=http://192.168.63.80:5880/api/v1\n\n# API Socket.io\nVITE_SOCKET_IO_DOMAIN=http://192.168.63.80:5880\nVITE_SOCKET_IO_PATH=/api/v1/socket.io\n```\n\n# Usando pnpm (BackEnd y FrontEnd)\n\n* __Paso 1)__\n\nEjecuta el siguiente comando desde el directorio `/express-api` para  instalar las dependencias.\n\n```shell\n$ pnpm install\n```\n\n* __Paso 2)__\n\nEjecuta el siguiente comando desde el directorio `/express-api` para correr el servicio API RestFul.\n\n```shell\n$ pnpm run dev\n```\n\n* __Paso 3)__\n\nEjecuta el siguiente comando desde el directorio `/react-vite` para instalar las dependencias.\n\n```shell\n$ pnpm install\n```\n\n* __Paso 4)__\n\n\nEjecuta el siguiente comando desde el directorio `/react-vite` para correr el servicio React + Vite.\n\n```shell\n$ pnpm run dev\n```\n\n# Usando docker (BackEnd y FrontEnd)\n\n* __Paso 1)__\n\nEjecuta el siguiente comando desde el directorio `/express-api` para crear una red y correr el servidor mongodb\n\n```shell\n$ docker network create cotojs-network\n$ docker run --network cotojs-network --name cotojs-mongodb-run -p 27017:27017 -d mongo:4.4`\n```\n\n* __Paso 2)__\n\nEjecuta 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\n\n```shell\n$ docker build -t cotojs-api-build -f api.Dockerfile .\n$ docker run --network cotojs-network --name cotojs-api-run -p 5880:5880 -d cotojs-api-build\n```\n\n* __Paso 3)__\n\nEjecuta el siguiente comando desde el directorio `/react-vite`, para crear una imagen y crear un contenedor docker con: React + Vite\n\n```shell\n$ docker build -t cotojs-react-build -f react.Dockerfile .\n$ docker run --network cotojs-network --name cotojs-react-run -p 5173:3000 -d cotojs-react-build\n```\n\n# Usando docker-compose (BackEnd y FrontEnd)\n\n* __Paso 1)__\n\nEjecuta el siguiente comando desde el directorio raíz `/`, para crear servicios, volumenes y redes de docker-compose \n\n```shell\n$ docker-compose up --build -d\n```\n\n* __Paso 2)__\n\nEjecuta el siguiente comando desde el directorio raíz `/`, para eliminar servicios, volumenes y redes de docker-compose \n\n```shell\n$ docker-compose down\n```\n\n# Previews\n\n![preview01.jpg](/screenshots/preview01.jpg)\n![preview02.jpg](/screenshots/preview02.jpg)\n![preview03.jpg](/screenshots/preview03.jpg)\n![preview04.jpg](/screenshots/preview04.jpg)\n![preview05.jpg](/screenshots/preview05.jpg)\n![preview06.jpg](/screenshots/preview06.jpg)\n![preview07.jpg](/screenshots/preview07.jpg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximovj%2Fcotojs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximovj%2Fcotojs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximovj%2Fcotojs/lists"}