igrowker / i003-eventmap-back

0 stars 1 forks source link

EventMap

Integrantes del proyecto BackEnd

Ulises Rodriguez Badge Santiago Balbarrey Badge Octavio Quintero Badge

Tecnologías utilizadas

TypeScript Node.js NestJS PostgreSQL Prisma JWT Nodemailer Postman Docker Swagger --> ESLint Prettier Shell Script --> GitHub Actions

Problema que se Intenta Resolver en EventMap (Proyecto BackEnd)

  1. Para los Conductores de Aplicaciones (Uber, Didi, etc.): Optimizar el tiempo y recursos es un desafío constante. La falta de información en tiempo real sobre eventos importantes en la ciudad les obliga a circular sin un destino concreto, lo que genera pérdidas económicas, aumenta el consumo de combustible y contribuye a la congestión vehicular. Esta ineficiencia impacta negativamente tanto a los conductores como a la ciudad en general.

  2. Para los Organizadores de Eventos: Promover eventos y atraer asistentes puede ser complicado sin una conexión directa con los servicios de transporte. La falta de visibilidad de los eventos en plataformas que usan los conductores puede limitar la asistencia, lo que afecta el éxito del evento y las experiencias de los asistentes.


Solución Propuesta

Configuración del Proyecto (Local)

Paso 1: Instalar PostgreSQL y Node.JS

Paso 2: Instalar Dependencias

$ npm install

Paso 3: Configurar Prisma ORM

# Instalar globalmente
$ npm install -g @nestjs/cli
# Dentro de carpeta del proyecto
$ npm install prisma --save-dev

$ npm install @prisma/client

Paso 4: Configurar el archivo .env

Crea un archivo .env en la raíz del proyecto para almacenar las credenciales de la base de datos. La configuración debe incluir lo siguiente:


# Varibales Postgres
1.  DATABASE_URL
2.  PORT

Example:
DATABASE_URL="postgresql://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<DATABASE_NAME>?schema=<SCHEMA>"

# Radio para búsqueda de eventos
1.  RADIUS

# Correo electrónico del administrador principal
1. ADMIN_EMAIL=
2. ADMIN_PASSWORD=

##  Variables para Nodemailer
1. EMAIL_USER
2. EMAIL_PASSWORD

# URL del frontend
1. FRONTEND_URL=

## Variables de Cloudinary
1.  CLOUDINARY_UR
2.  CLOUDINARY_API_KEY
3.  CLOUDINARY_API_KEY_SECRET
4.  CLOUDINARY_API_KEY_NAME

Paso 5: Migrar y Sincronizar la Base de Datos

# Migrar DB
$ npx prisma migrate dev
# Sincronizar DB
$ npx prisma db push

Paso 6: Compilar y ejecutar proyecto

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

Estructura del Proyecto

i003-eventmap-back/
├── .github/                    # Configuración y flujos de trabajo de GitHub
├── .vscode/                    # Configuraciones específicas de Visual Studio Code
├── dist/                       # Archivos compilados y preparados para producción
├── node_modules/               # Dependencias instaladas de Node.js
├── prisma/                     # Archivos de configuración y migraciones de Prisma
├── src/                        # Código fuente de la aplicación
│   ├── config/                 # Configuraciones de la aplicación
│   ├── decorators/             # Decoradores personalizados de NestJS
│   ├── guards/                 # Guardias personalizados para autorización
│   ├── helpers/                # Funciones de ayuda reutilizables
│   ├── interceptors/           # Interceptores personalizados de NestJS
│   ├── metrics/                # Código relacionado con el monitoreo y métricas
│   ├── middlewares/            # Middlewares personalizados para la aplicación
│   ├── modules/                # Módulos de la aplicación
│   ├── utils/                  # Utilidades y funciones auxiliares
│   ├── app.controller.spec.ts  # Pruebas unitarias del controlador principal
│   ├── app.controller.ts       # Controlador principal de la aplicación
│   ├── app.module.ts           # Módulo principal de la aplicación
│   ├── app.service.ts          # Servicio principal de la aplicación
│   ├── main.ts                 # Punto de entrada de la aplicación
│   └── prisma.service.ts       # Servicio de conexión y gestión de Prisma
├── test/                       # Pruebas del proyecto
├── .env                        # Variables de entorno para configuración local
├── .envDefault.env             # Archivo de ejemplo de variables de entorno
├── .eslintrc.js                # Configuración de ESLint para el análisis estático del código
├── .gitignore                  # Archivos y directorios ignorados por Git
├── .prettierrc                 # Configuración de Prettier para formateo del código
├── deploy.sh                   # Script de despliegue para producción
├── docker-compose.yml          # Configuración de Docker Compose
├── Dockerfile                  # Archivo Docker para construir la imagen de la aplicación
├── nest-cli.json               # Configuración del CLI de NestJS
├── package-lock.json           # Bloqueo de versiones de dependencias instaladas
├── package.json                # Archivo de dependencias y scripts del proyecto
├── prometheus.yml              # Configuración de monitoreo con Prometheus
├── README.md                   # Documentación del proyecto
├── tsconfig.build.json         # Configuración específica de TypeScript para la construcción
└── tsconfig.json               # Configuración principal de TypeScript

Rutas Disponibles para Swagger

Interfaz Interactiva de Swagger

Backend

EventMap