Es un software dirigido a los CCEE de la Universidad del Bío-Bío, el cual esta enfocado en ayudar a desarrollar parte de las actividades que se generan de forma habitual por parte de estos.
- Software Stack
- Conexión a la base de datos
- Importar base de datos
- Clonación del repositorio
- Variables de entorno
- Entorno de desarrollo (Docker)
- Instalar dependencias del proyecto ambiente de desarrollo
- Entorno de producción (Servidor)
- Instalar dependencias del proyecto ambiente de producción
- Credenciales de acceso
- Construido con
- Contribuidores del proyecto
- Agradecimientos
El proyecto "CeeWebApp" es una aplicación web que corre sobre el siguiente software:
- Ubuntu 18.04
- NodeJS 16.15.0
- NextJS 12.1.6
- ReactJS 18.1.0
- ExpressJS 4.17.1
- Mongoose 5.9.24
- MongoDB 4.5.0
- MongoAtlas
- Yarn
- NPM
Para obtener un string de conexion de atlas lo primero que se debe hacer es ir a la página de MongoAtlas, se registra y le pedirá que ingrese un nombre y contraseña para una base de datos. Crea la nueva base de datos y luego en el menú de la izquierda selecciona "Clusters" y luego "Connect" y selecciona "Connect your application" y copia el string de conexion. Este string de conexion debe ser para el que se entrega con la siguiente configuracion:
- NodeJS
- 2.2.12 or later
Con esto deberia entregarse un string de conexion tal que asi:
mongodb://tallerDesarrollo:<password>@tallerDesarrollo-shard-00-00.eziad.mongodb.net:27017,tallerDesarrollo-shard-00-01.eziad.mongodb.net:27017,tallerDesarrollo-shard-00-02.eziad.mongodb.net:27017/?ssl=true&replicaSet=atlas-li16kg-shard-0&authSource=admin&retryWrites=true&w=majority
Entre las etiquetas < > se debe reemplazar el password por el que se le entrega al crear la base de datos.
Este string de conexion debe ser reemplazado en el archivo .env que se encuentra en la raiz del proyecto, en la variable de entorno DB.
Para importar la base de datos a nuestro directorio local es necesario utilizar el software MongoDB Compass con el que realizaremos la importación de los archivos .json de la base de datos.
Los pasos a seguir son:
Seleccionar la opción "Create database" donde ingresaremos el nombre de la base de datos junto con el de la colección.
Seleccionar la base de datos creada.
Seleccionar la colección creada.
Pulsar el botón "ADD DATA" y luego seleccionar la opcion "Import File"
Agregar los archivos uno por uno dentro de la carpeta raíz del proyecto /backend/colecciones_bdPara obtener una copia del proyecto se debe clonar el repositorio de GitHub, para esto se debe ejecutar el siguiente comando en la terminal:
git clone -b [branch] https://github.com/Xhyus/CeeWebAppSi se desea clonar el backend del proyecto se debe reemplazar [branch] por backendProd y si se desea clonar el frontend del proyecto se debe reemplazar [branch] por frontendProd. Si quieres se desea clonar el proyecto completo se debe reemplazar [branch] por main.
- Se debe generar un archivo .env en la carpeta frontend y backend respectivamente, el cual debe contener las siguientes variables de entorno:
Backend:
DB=MONGOATLASURL
PORT=3001
SECRET_TOKEN=SECRET_TOKEN
MAIL_IECI=MAIL_IECI
PASS_IECI=PASS_IECI
MAIL_ICO=MAIL_ICO
PASS_ICO=PASS_ICO
MAIL_ICINF=MAIL_ICINF
PASS_ICINF=PASS_ICINF
MAIL_CPA=MAIL_CPA
PASS_CPA=PASS_CPA- Para la variable
DB, se debe ingresar la URL de la base de datos de MongoAtlas, la cual se puede obtener en el siguiente link: https://www.mongodb.com/cloud/atlas - Para la variable
SECRET_TOKEN, se debe ingresar una cadena de caracteres que se utilizará para la encriptación de las contraseñas de los usuarios. - Para las variables
MAIL_XXXXyPASS_XXXX, se debe ingresar el correo y contraseña de los correos que se utilizarán para el envío de correos electrónicos, la contraseña corresponde a una que se obtiene siguiendo los pasos de la siguiente página: https://support.google.com/accounts/answer/185833?hl=es-419
Frontend:
SERVIDOR=IP_SERVIDOR
PORT=3000- Para la variable
SERVIDOR, se debe ingresar la URL del servidor de backend, para producción se debe ingresar la IP:http://146.83.198.35:1124/api. Para desarrollo se debe ingresar la IP del servidor de desarrollo.
Con una terminal situarse dentro del directorio raiz del proyecto, para esto se debe estar en el mismo directorio donde se hizo el clon del proyecto (branch main) y ejecutar el siguiente comando:
cd ceewebappFrontend:
Para construir la imagen docker del frontend, se debe ejecutar el siguiente comando desde la carpeta raiz del proyecto:
cd frontend
docker build -t ceewebappfront .Una vez creado el contenedor de docker, se debe ejecutar el siguiente comando para correr el contenedor:
docker run --rm -ti -p 80:3000 -v ${pwd}:/home ceewebappfront- pwd: es la ruta del directorio raiz del frontend, asi que es importante ejecutar el comando desde la carpeta ceewebapp/ como se especifica.
Backend:
Para construir la imagen docker del backend, se debe ejecutar el siguiente comando desde la carpeta raiz del proyecto:
cd backend
docker build -t ceewebappback .Una vez creado el contenedor de docker, se debe ejecutar el siguiente comando para correr el contenedor:
docker run --rm -ti -p 80:3001 -v ${pwd}:/home ceewebappback- pwd: es la ruta del directorio raiz del backend, asi que es importante ejecutar el comando desde la carpeta ceewebapp/backend como se especifica.
Luego se debe acceder a la carpeta del proyecto, para esto se debe ejecutar el siguiente comando:
cd CeewebappPara instalar las dependencias del proyecto, se debe ejecutar el siguiente comando en la terminal, esto se hace en ambos contenedores de docker, frontend y backend:
Para el correcto funcionamiento del proyecto se deben dar permisos de administrador a la carpeta, para esto se ejecuta el siguiente comando dentro de la carpeta raiz del proyecto:
chmod -R 777 .Frontend:
Si se encuentra en la carpeta raiz del proyecto y desea instalar las dependencias del frontend, se debe ejecutar el siguiente comando:
yarn installPara poder ejecutar el proyecto se debe generar el .env en la carpeta frontend y backend respectivamente, el cual debe contener las variables mencionadas anteriormente. Para generar el .env mediante terminal se debe ejecutar el siguiente comando:
touch .envPara modificar el archivo .env se debe ejecutar el siguiente comando:
nano .envPara ejecutar el proyecto se debe ejecutar el siguiente comando en la terminal:
yarn run devBackend:
Si se encuentra en la carpeta raiz del proyecto y desea instalar las dependencias del backend, se debe ejecutar el siguiente comando:
yarn installPara poder ejecutar el proyecto se debe generar el .env en la carpeta backend, el cual debe contener las variables mencionadas anteriormente. Para generar el .env mediante terminal se debe ejecutar el siguiente comando:
touch .envPara modificar el archivo .env se debe ejecutar el siguiente comando:
nano .envPara ejecutar el proyecto se debe ejecutar el siguiente comando en la terminal:
yarn run devEs importante considerar que para el funcionamiento correcto del proyecto deben estar corriendo los proyectos en diferentes servidores donde deberan realizarse los pasos de instalación de dependencias y configuración de variables de entorno.
Para configurar el servidor de producción se debe seguir los siguientes pasos en ambos servidores, frontend y backend:
Iniciar el modo root e ingresar las credenciales de administrador del servidor
sudo suActualizar el sistema operativo
apt-get updateInstalar curl para descargar paquetes
apt-get install -y curlInstalar autoclean para limpiar el sistema
apt-get -y autocleanInstalar git para clonar el repositorio
apt-get install gitInstalar nano para editar archivos
apt-get install nanoInstalar nvm para instalar NodeJS
curl --silent -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.2/install.sh | bashReiniciar bash para que se puedan utilizar comandos de NVM
exec bashInstalar version 16.15.0 de NodeJS
nvm install 16.15.0Cambiar alias de NodeJS
nvm alias default 16.15.0Cambiar la version de NodeJS
nvm use defaultInstalar yarn para instalar dependencias y pm2 para correr la aplicación
npm install -g yarn
npm install -g pm2Clonar el repositorio del proyecto como se menciona en el apartado "Clonación del repositorio"
Luego de haber clonado el repositorio se debe mover hacia la carpeta raiz del proyecto, para esto se debe ejecutar el siguiente comando:
cd CeewebappSi se encuentra en la carpeta raiz del proyecto y desea instalar las dependencias, se debe ejecutar el siguiente comando:
yarn installPara poder ejecutar el proyecto se debe generar el .env en la carpeta raiz del proyecto, el cual debe contener las variables mencionadas anteriormente dependiendo de cual de los proyectos este corriendo, el frontend o el backend. Para generar el .env mediante terminal se debe ejecutar el siguiente comando:
touch .envPara modificar el archivo .env se debe ejecutar el siguiente comando:
nano .envPara ejecutar el proyecto se debe ejecutar el siguiente comando en la terminal:
pm2 start yarn -- devPara visualizar el frontend se debe dirigir a la siguiente ruta:
http://localhost:3000| Correo electrónico | Contraseña | Tipo Usuario | Estado |
|---|---|---|---|
| pmontoya@gmail.com | password | Alumno Cpa | Activo |
| igonzalez@gmail.com | password | Alumno IECI | Activo |
| asegura@gmail.com | password | Alumno ICINF | Activo |
- ReactJS - Framework Javascript para manejo de logica funcional de Frontend
- Next.JS - Libreria de React para generación de proyectos Serverless y base del proyecto visual
- Express - Framework utilizado para creación de backend con API RESTFUL
- Mongoose - Gestor de base de datos no relacional MongoDB
- Nodemailer - Libreria de envio de correos electronicos
- Multer - Libreria para gestionar subida de archivos en backend
- Chakra - Libreria de componentes visuales para frameworks
- JWT-Simple - Libreria generadora de tokens
- moment - Libreria de manejo de tiempos para tokens
- Yarn - Administrador de dependencias
- dotenv - Libreria de lectura de archivos .env
- bcrypt - Libreria para encriptar información
- cors - Libreria de control de acceso
- MongoDB - Base de datos no relacional
- MongoDB Compass - Administrador de base de datos
- Axios - Libreria de consultas con protocolo http y https
- date-fns - Comparador de fechas de javascript
- fs - Administrador de archivos en sistema para NodeJS
- React-Icons - Libreria de iconos como componentes de React
- Rutlib - Libreria validadora de RUTs Chilenos
- Sweetalert2 - Libreria de alertas
- Nodemon - Monitoreador de cambios
- Github - Almacenador de control de versiones
- Git - Sistema de control de versiones
- Integrante: Ignacio González - Correo Electrónico
- Integrante: Pablo Montoya - Correo Electrónico
- Basado en el código de ejemplo de las paginas de documentación citadas previamente, foros de Stackoverflow, issues de Github issues, entre otro tipos de paginas que se utilizaron para recopilación de información y/o reconocimiento de errores.