Skip to content

Eduardolans/i003-eventmap-back

 
 

Repository files navigation

EventMap

Integrantes del proyecto BackEnd

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

  • Optimización para Conductores: EventMap ofrece una plataforma que proporciona información en tiempo real sobre eventos próximos, permitiendo a los conductores optimizar sus rutas, ahorrar combustible y maximizar sus ganancias al dirigirse a áreas con mayor demanda de transporte.

  • Mayor Visibilidad para Organizadores: Los eventos se promueven directamente a los conductores de aplicaciones, lo que facilita una mayor asistencia y mejora la experiencia de los asistentes. Los organizadores pueden asegurarse de que sus eventos sean visibles para quienes prestan servicios de transporte, maximizando la afluencia.

  • Beneficios Medioambientales: Al reducir los tiempos de conducción innecesarios, EventMap contribuye a disminuir la congestión vehicular y las emisiones de carbono, mejorando la sostenibilidad en las ciudades.

Configuración del Proyecto (Local)

Paso 1: Instalar PostgreSQL y Node.JS

  • Descarga e instala PostgreSQL en tu máquina local desde el siguiente enlace:
    PostgreSQL Download

  • Descarga e instala Node en tu máquina local desde el siguiente enlace:
    NodeJS Download --version 20.3.1

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

  • URL: http://localhost:3000/docs
  • Descripción: Esta ruta sirve la interfaz de usuario de Swagger UI, donde puedes ver todos los endpoints documentados, sus métodos, parámetros, y ejemplos de respuesta. Además, puedes realizar peticiones directamente desde esta interfaz para probar los diferentes endpoints de la API. Esta ruta proporciona la especificación completa de la API en formato JSON. Es útil para integraciones automáticas y para generar clientes de API en diferentes lenguajes de programación.

Backend

EventMap

About

aplicación de mapa tipo heatmaps - BE

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 85.1%
  • HTML 14.2%
  • Other 0.7%