Skip to content

Creación de API basada en "rappi" y renombrada "rappi_campus", para la gestión de todos los servicios de la aplicación misma bajo el uso de MongoDB y NodeJS.

Notifications You must be signed in to change notification settings

diegomanga26/rappi_campus

Repository files navigation

rappi_campus

Historia y breve resumen de la empresa

Rappi es una empresa colombiana de tecnología que ofrece servicios de entrega a domicilio en más de 500 ciudades de América Latina. Fundada en 2015 por Simón Borrero, Juan Sebastián Cadavid y Sebastián Mejía, Rappi tiene más de 100,000 empleados y brinda entregas de comida, productos de supermercado, medicamentos y otros artículos.

Los requisitos para trabajar en Rappi incluyen ser mayor de 18 años, tener una licencia de conducir válida, un vehículo en buen estado, historial de conducción limpio, confiabilidad y responsabilidad. Los candidatos pueden postularse en línea y serán evaluados en base a experiencia, habilidades y personalidad. Si son seleccionados, reciben capacitación en la aplicación y la entrega de pedidos, además de salario por hora, propinas y beneficios como seguro médico y plan de jubilación.

La aplicación Rappi permite a los usuarios pedir una variedad de productos, incluyendo comida, supermercado y otros artículos. Los usuarios pueden crear una cuenta, seleccionar productos, pagar y recibir entregas a través de repartidores de Rappi.

Para las empresas interesadas en vender a través de Rappi, el proceso de registro incluye proporcionar información de contacto y negocio, subir una foto del negocio y aceptar los términos y condiciones. Los comerciantes pueden publicar sus productos en la plataforma siguiendo pasos simples, como agregar detalles del producto y fotos de alta calidad. Se recomienda utilizar títulos claros, descripciones detalladas y ofrecer precios competitivos y promociones.

¿Como funciona rappi? a nivel de código, y a nivel de usuario

A nivel técnico:

La verificación por código es una medida de seguridad implementada por Rappi. Al recibir un pedido, se genera un código aleatorio que el usuario debe proporcionar al repartidor al momento de la entrega, lo que protege tanto a usuarios como repartidores de robos y malentendidos.

DataArt colabora con Rappi Travel para desarrollar su aplicación de viajes bajo demanda. La plataforma permitirá reservar vuelos, hoteles, alquileres de coches y actividades. Esta asociación busca expandir la presencia de Rappi en el mercado de viajes, ofreciendo a los usuarios una experiencia completa y consolidando a Rappi como líder en viajes bajo demanda.

Rappi es una plataforma de entrega a domicilio que opera en América Latina. La compañía fue fundada en 2015 y tiene su sede en Bogotá, Colombia. Rappi ofrece una variedad de servicios, que incluyen entrega de alimentos, comestibles, medicamentos, servicios de mensajería y más. La compañía ha crecido rápidamente y ahora opera en más de 10 países.

En 2018, Rappi decidió migrar su base de datos de MongoDB a Amazon DocumentDB. DocumentDB es un servicio de base de datos de documentos totalmente administrado que ofrece una compatibilidad nativa con MongoDB. La migración a DocumentDB permitió a Rappi mejorar el rendimiento, la escalabilidad y la disponibilidad de su base de datos.

Como resultado de la migración, Rappi ha podido aumentar su capacidad de manejar más pedidos y entregas. La compañía también ha visto una mejora en la disponibilidad de su base de datos, lo que ha llevado a una mejor experiencia de usuario.

En general, la migración de Rappi a DocumentDB ha sido un éxito. La compañía ha visto mejoras significativas en el rendimiento, la escalabilidad y la disponibilidad de su base de datos. Estos cambios han permitido a Rappi mejorar la experiencia de usuario y aumentar su capacidad para manejar más pedidos y entregas.

Aquí hay algunos beneficios específicos que Rappi ha experimentado desde que migró a DocumentDB:

  • Aumento del rendimiento: DocumentDB es hasta 10 veces más rápido que MongoDB. Esto ha permitido a Rappi manejar más pedidos y entregas sin afectar el rendimiento.
  • Aumento de la escalabilidad: DocumentDB es altamente escalable, lo que permite a Rappi hacer crecer su negocio sin preocuparse por la capacidad de su base de datos.
  • Aumento de la disponibilidad: DocumentDB está disponible el 99,999% del tiempo, lo que garantiza que Rappi pueda ofrecer una experiencia de usuario confiable.

La migración de Rappi a DocumentDB ha sido un éxito que ha ayudado a la compañía a crecer y prosperar.

A nivel práctico:

Rappi satisface la demanda de los consumidores que buscan comodidad al ofrecer una plataforma para pedir una amplia gama de productos y servicios, desde alimentos hasta artículos para el hogar, con entregas en minutos. Fundada en Colombia en 2015, Rappi opera en más de 10 países de América Latina, habiendo recaudado más de $1.000 millones en fondos de inversión. Ofrece servicios diversos, como entrega de alimentos, comestibles y medicamentos, además de mensajería. La compañía evidencia la creciente necesidad de servicios rápidos y convenientes. La aplicación Rappi permite a los usuarios buscar, comprar y rastrear sus pedidos, siendo una solución integral. Rappi cobra tarifas tanto a las empresas por los pedidos como a los usuarios por las entregas, con precios variables según el producto y la ubicación. La plataforma representa una forma conveniente y rentable de adquirir productos y servicios en la puerta de casa.

Fuentes utilizadas:

Ejecución de rappi_campus:

Como se mostró anteriormente Rappi nace bajo la fuerte necesidad de un servicio de Delivery eficiente en Colombia, que abarcara gran parte del mercado de restaurantes y que a futuro se fue expandiendo, nosotros nos enfocamos en esa área de restaurantes/supermercados y quisimos englobar productos básicos como "licores", "farmacos", "comida_rapida", "canasta_domestica" que se vieron reflejados en nuestro esquema de base de datos, es una pequeña pieza de la robusta aplicación de la cual disponemos en nuestros dispositivos móviles y ordenadores.

Tabla de Contenidos:

1.Estructura del Proyecto:

Escogimos una forma muy personal de hacer la estructura de carpetas del proyecto, a continuación se las enseñamos:

|-- database/
|   |-- query.mongodb
|   |-- config/
|   |   |-- atlas.js
|   |-- schemas/
|       |-- schemas.mongodb
|-- img/
|   |-- DIAGRAMA_DB.png
|-- middlewares/
|   |-- auth.js
|   |-- JWT.js
|   |-- limiter.js
|-- routes/
|   |-- doorAuth.js
|   |-- indexRoutes.js
|   |-- producto.js
|   |-- token.js
|   |-- usuario.js
|-- storage/
|   |-- door.dto.js
|   |-- orden.dto.js
|   |-- products.dto.js
|   |-- user.dto.js
|-- versions/
|   |-- product_admin_version/
|   |   |-- product_actions.js
|   |-- users_version/
|       |-- user_actions.js
|-- README.md
|-- package.json
|-- .gitignore
|-- index.js
|-- .env

2.Requisitos:

Los requisitos para la ejecución de la API rappi_campus son los siguientes:

  • Node.js bajo la versión (v18.16.1), esta la puedes instalar desde (https://nodejs.org/en/download).
  • MongoDB Atlas con tu cuenta previamente creada en (https://www.mongodb.com/es/atlas/database), en este caso utilizaremos la conexión a nuestra base de datos personal para realizar las pruebas (ya está configurado en las variables de entorno) pero dejamos un archivo de ejemplo .env.example.

3.Instalación:

  • Clonamos el repositorio en la carpeta que se desee, para hacerlo mas sencillo puedes entrar a la carpeta donde quieras alojar el proyecto y ahí abres la terminal directamente y ejecutas el siguiente comando:

    git clone https://github.com/diegomanga26/rappi_campus.git
    
  • Si quieres hacerlo aún mas sencillo puedes utilizar la extensión "Git Graph" y directamente clonas el repositorio después que tengas las credenciales sincronizadas con tu Github, clicando en el apartado clonar repositorio y pegas lo siguiente https://github.com/diegomanga26/rappi_campus.git y procedes a ubicar el repositorio donde mas desees.

  • Luego de esto abriremos la terminal clicando en la parte superior del Visual Studio Code en el apartado "Terminal" y luego "New Terminal", ahí ejecutaremos el comando npm update o npm installdescargar todas las dependencias previamente establecidas en el archivo "package.json".

  • Por ultimo iniciaremos el servidor con el comando en terminal npm run dev, esto inicializará nuestro servidor y podremos visualizar nuestros Endpoints en la consola para al hacer uso de ellos en las consultas sólo copiar cada uno y completar el Endpoint. Un ejemplo de lo que deberiamos ver en consola es lo siguiente:

    http://localhost:5524
    /producto
    /token
    /usuario
    /doorAuth
    

    **NOTA IMPORTANTE: **Recuerda que el archivo de ejemplo ".env.example" deberás renombrarlo borrando el ".example" y quedará ".env" para que la dependencia "dotenv" pueda acceder a las variables de entorno, recomendamos realizar todas estas pruebas conectadas a nuestro servidor para evitar conflictos y si deseas cambiar el puerto recuerda que en la consola obtendrás la nueva ruta para que procedas a copiarla e ingresarla en el "Thunder Client".

4.Uso:

A continuación observaremos cuales son todas la consultas disponibles en esta API:

4.1 Consultas de "doorAuth":

4.1.1 Consultar "register":

  • Endpoint : /doorAuth/register
  • Método HTTP : POST
  • Descripción : Registro de usuario para ingreso con Login.
  • Ejecución: Para su ejecución debemos ingresar "name", "address", "numCelular", "email", "password" y "user_type" por el "Body", entonces iremos a nuestra extensión "Thunder Client", clicaremos en "New Request" y procedemos a ingresar la siguiente data donde dice https://www.thunderclient.com/welcome borraremos esa dirección y agregaremos la siguiente dirección y cambias el predeterminado "GET" por "POST", luego de eso deberás agregar en los "Headers" en el apartado vacío "header" la frase "Accept-Version" y poner en value "3.0.0", esta es la versión a la que vamos a acceder para el Registro.
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/doorAuth/register
  • Ejemplo del contenido correspondiente en body:
{
  "name": "Ejemplo1234567",
  "address": "casaEjemplo#57",
  "numCelular": "+573001112233",
  "email": "[email protected]",
  "password": "ejemplo456789",
  "user_type": "64f9ede25bb57e9ee64fb838"
}

**NOTA IMPORTANTE: **En user_type va el objectID de la colección rol para poder hacer la relación, esto se envía para de una manera mas segura acceder a los permisos, lo ideal es tomar por defecto el valor de "cliente" y un seleccionable para "repartidor", hace parte del FrontEnd en este caso.

  • Clicaremos en Send y obtendremos una respuesta similar a esta, ejemplo de respuesta del servidor:
success

Listo, ahora has registrado tu primer usuario a la base de datos, continuemos con la guía.

4.1.2 Consultar "login":

  • Endpoint : /doorAuth/login
  • Método HTTP : POST
  • Descripción : Generador de token y login de la base de la API.
  • Ejecución: Para su ejecución debemos ingresar correo y contraseña por el "Body", entonces iremos a nuestra extensión "Thunder Client", clicaremos en "New Request" y procedemos a ingresar la siguiente data donde dice https://www.thunderclient.com/welcome borraremos esa dirección y agregaremos la siguiente dirección y cambias el predeterminado "GET" por "POST", luego de eso deberás agregar en los "Headers" en el apartado vacío "header" la frase "Accept-Version" y poner en value "3.0.0", esta es la versión a la que vamos a acceder para el Login.
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/doorAuth/login
  • Ejemplo del contenido correspondiente en body:
{
  "email": "[email protected]",
  "password": "ejemplo456789"
}
  • Clicaremos en Send y obtendremos una respuesta similar a esta, ejemplo de respuesta del servidor:
{
  "message": "success",
  "user": {
    "_id": "64f9ee0f1eb77a7be6a1157a",
    "id": 4,
    "nombre": "Ejemplo1234567",
    "direccion": "casaEjemplo#57",
    "telefono": "+573001112233",
    "correo": "[email protected]",
    "contrasena": "ejemplo456789",
    "rol": "64f9ede25bb57e9ee64fb838",
    "token": {
      "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NGY5ZWRlMjViYjU3ZTllZTY0ZmI4MzgiLCJwZXJtaXNvcyI6eyIvdmVyc2lvbmVzIjpbIjMuMC4wIl0sIi9jb2xlY2Npb25lcyI6WyIvZG9vckF1dGgiLCIvcHJvZHVjdG8iLCIvb3JkZW4iLCIvY2Fycml0byJdfSwiaWF0IjoxNjk0MTA0MTI4LCJleHAiOjE2OTQxMDU5Mjh9.oSTN6_1EEWLEk3uglIz59iwShmyai5ogEL-yq23NXxc"
    }
  }
}
  • Ahora debemos en el apartado "Headers" de nuevo y añadir un "header" llamado "Authorization" y en "value" todo el contenido del "jwt", sólo el texto, sin las comillas.

A partir de ahora podemos empezar con las consultas, recuerda que si el usuario no existe en la base de datos el servidor nos retorna error y debemos verificar la data que está siendo enviada.

4.2 Consultas de "producto":

4.2.1 Consultar"producto":

  • Endpoint : /producto
  • Método HTTP : GET
  • Descripción : Traer todos los productos de la base de datos.
  • Ejecución: Teniendo lista la ruta en "Thunder Client", procedemos a cambiar el endpoint de /doorAuth/login a /producto y cambiar el método a "GET", nos quedará algo como esto:
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/producto
  • Clicamos "Send" y obtendremos algo como esto:
[
  {
    "_id": "64fa0e1eecd73271f382c516",
    "id": 20,
    "nombre_producto": "Chocolatina JET",
    "descripcion": "Barra de chocolate con leche",
    "precio": 1200,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  },
  {
    "_id": "64fa0e44cd5c5bf14d46b6bc",
    "id": 22,
    "nombre_producto": "Chocolatina YAT",
    "descripcion": "Barra de chocolate con leche",
    "precio": 1200.75,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  },
  {
    "_id": "64fa0e4acd5c5bf14d46b6bd",
    "id": 23,
    "nombre_producto": "Chocolatina JET",
    "descripcion": "Barra de chocolate con leche",
    "precio": 1200,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  },
  {
    "_id": "64fa24df1cca9d317323207f",
    "id": 24,
    "nombre_producto": "Chocolatina JET",
    "descripcion": "Barra de chocolate con leche",
    "precio": 800,
    "categoria": "canasta_domestica",
    "disponibilidad": false
  },
  {
    "_id": "64fa27d07b75ab8404937488",
    "id": 25,
    "nombre_producto": "Ron Medellín",
    "descripcion": "Ron colombiano de calidad",
    "precio": 60000,
    "categoria": "licores",
    "disponibilidad": true
  },
  {
    "_id": "64fa27d07b75ab8404937489",
    "id": 26,
    "nombre_producto": "Paracetamol",
    "descripcion": "Medicamento para el dolor",
    "precio": 3500,
    "categoria": "farmacos",
    "disponibilidad": true
  },
  {
    "_id": "64fa27d07b75ab840493748a",
    "id": 27,
    "nombre_producto": "Pizza Hawaiana",
    "descripcion": "Pizza con jamón y piña",
    "precio": 28000,
    "categoria": "comida_rapida",
    "disponibilidad": true
  },
  {
    "_id": "64fa27d07b75ab840493748b",
    "id": 28,
    "nombre_producto": "Detergente Ariel",
    "descripcion": "Detergente líquido para ropa",
    "precio": 8000,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  },
  {
    "_id": "64fa27d07b75ab840493748c",
    "id": 29,
    "nombre_producto": "Aguardiente Antioqueño",
    "descripcion": "Aguardiente tradicional",
    "precio": 45000,
    "categoria": "licores",
    "disponibilidad": true
  }
]

Continuemos con la siguiente consulta.

4.2.2 Postear"producto":

  • Endpoint : /producto
  • Método HTTP : POST
  • Descripción : Postear un producto a la colección "producto".
  • Ejecución: Teniendo lista la ruta en "Thunder Client", procedemos a cambiar el endpoint de a /producto y cambiar el método a "POST", debemos cambiar la versión a "2.0.0", también debemos agregar la data correspondiente en el "Body" como en en el "register" de la forma que te mostraré a continuación, nos quedará algo como esto:
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/producto
  • Ejemplo de como enviar la data por el Body:
{
  "name": "Chocolatina JET",
  "description": "Barra de chocolate con leche",
  "price": 800,
  "category": "canasta_domestica",
  "availability": true
}
  • Ejemplo de respuesta del servidor si pasó el dato:
{
  "acknowledged": true,
  "insertedId": "64fa0e4acd5c5bf14d46b6bd"
}

Continuemos con la siguiente consulta.

4.2.3 Actualizar "producto":

  • Endpoint : /producto/:id
  • Método HTTP : PUT
  • Descripción : Actualizar un producto a la colección "producto".
  • Ejecución: Teniendo lista la ruta en "Thunder Client", procedemos a cambiar el endpoint de a /producto/:id y cambiar el método a "PUT", debemos cambiar la versión a "2.0.0", también debemos agregar la data correspondiente en el "Body" como en en el "register" de la forma que te mostraré a continuación, nos quedará algo como esto:
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/producto/22
  • Ejemplo de como enviar la data por el Body, pero puedes actualizar cualquier parámetro del producto menos su disponibilidad:
{
  "name": "Chocolatina YAT"
}
  • Ejemplo de respuesta del servidor si pasó el dato:
{
  "acknowledged": true,
  "modifiedCount": 1,
  "upsertedId": null,
  "upsertedCount": 0,
  "matchedCount": 1
}

Continuemos con la siguiente consulta.

4.2.4 Eliminar "producto":

  • Endpoint : /producto/:id
  • Método HTTP : DELETE
  • Descripción : Actualizar un producto a la colección "producto".
  • Ejecución: Teniendo lista la ruta en "Thunder Client", procedemos a cambiar el endpoint de a /producto/:id y cambiar el método a "DELETE", debemos cambiar la versión a "1.0.0", nos quedará algo como esto:
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/producto/21
  • Ejemplo de respuesta del servidor si pasó el dato:
{
  "acknowledged": true,
  "deletedCount": 1
}

Continuemos con la siguiente consulta.

4.2.5 Consultar categoría específica en "producto":

  • Endpoint : /producto/categoria/:categoria
  • Método HTTP : GET
  • Descripción : Traer todos los productos de una categoría específica.
  • Ejecución: Teniendo lista la ruta en "Thunder Client", procedemos a cambiar el endpoint de /producto a /producto/categoria/:categoria y cambiar el método a "GET", debemos cambiar la versión a "3.0.0", nos quedará algo como esto:
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/producto/categoria/canasta_domestica
  • Clicamos "Send" y obtendremos algo como esto:
[
  {
    "_id": "64fa24df1cca9d317323207f",
    "id": 24,
    "nombre_producto": "Chocolatina JET",
    "descripcion": "Barra de chocolate con leche",
    "precio": 800,
    "categoria": "canasta_domestica",
    "disponibilidad": false
  },
  {
    "_id": "64fa27d07b75ab840493748b",
    "id": 28,
    "nombre_producto": "Detergente Ariel",
    "descripcion": "Detergente líquido para ropa",
    "precio": 8000,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  },
  {
    "_id": "64fa27d07b75ab840493748f",
    "id": 32,
    "nombre_producto": "Papel Higiénico Scott",
    "descripcion": "Rollo de papel higiénico suave",
    "precio": 7500,
    "categoria": "canasta_domestica",
    "disponibilidad": false
  },
  {
    "_id": "64fa27d07b75ab8404937493",
    "id": 36,
    "nombre_producto": "Jabón en Barra",
    "descripcion": "Jabón en barra para lavandería",
    "precio": 3000,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  },
  {
    "_id": "64fa27d07b75ab8404937497",
    "id": 40,
    "nombre_producto": "Toallas de Papel",
    "descripcion": "Paquete de toallas de papel",
    "precio": 4500,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  }
]

Continuemos con la siguiente consulta.

4.2.6 Consultar productos disponibles en "producto":

  • Endpoint : /producto/disponibles
  • Método HTTP : GET
  • Descripción : Traer todos los productos disponibles de la colección "producto".
  • Ejecución: Teniendo lista la ruta en "Thunder Client", procedemos a cambiar el endpoint de /producto a /producto/disponibles y cambiar el método a "GET", debemos cambiar la versión a la "3.0.0", nos quedará algo como esto:
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/producto/disponibles
  • Clicamos "Send" y obtendremos algo como esto:
[
  {
    "_id": "64fa0e1eecd73271f382c516",
    "id": 20,
    "nombre_producto": "Chocolatina JET",
    "descripcion": "Barra de chocolate con leche",
    "precio": 1200,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  },
  {
    "_id": "64fa0e44cd5c5bf14d46b6bc",
    "id": 22,
    "nombre_producto": "Chocolatina YAT",
    "descripcion": "Barra de chocolate con leche",
    "precio": 1200.75,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  },
  {
    "_id": "64fa0e4acd5c5bf14d46b6bd",
    "id": 23,
    "nombre_producto": "Chocolatina JET",
    "descripcion": "Barra de chocolate con leche",
    "precio": 1200,
    "categoria": "canasta_domestica",
    "disponibilidad": true
  },
  {
    "_id": "64fa27d07b75ab8404937488",
    "id": 25,
    "nombre_producto": "Ron Medellín",
    "descripcion": "Ron colombiano de calidad",
    "precio": 60000,
    "categoria": "licores",
    "disponibilidad": true
  },
  {
    "_id": "64fa27d07b75ab8404937489",
    "id": 26,
    "nombre_producto": "Paracetamol",
    "descripcion": "Medicamento para el dolor",
    "precio": 3500,
    "categoria": "farmacos",
    "disponibilidad": true
  }
]

Continuemos con la siguiente consulta.

4.3 Consultas de "usuario":

4.3.1 Consultar "repartidor" por id:

  • Endpoint : /usuario/repartidor/:id
  • Método HTTP : GET
  • Descripción : Traer la data de un cliente por id específico.
  • Ejecución: Teniendo lista la ruta en "Thunder Client", procedemos a cambiar el endpoint del momento por ejemplo/doorAuth/login a /usuario/repartidor/:id y cambiar el método a "GET", nos quedará algo como esto:
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/usuario/repartidor/3
  • Clicaremos en Send y obtendremos una respuesta similar a esta, ejemplo de respuesta del servidor:
{
  "message": "success",
  "user": {
    "_id": "64f9ee0f1eb77a7be6a11579",
    "id": 3,
    "nombre": "RappiTendero",
    "direccion": "Dirección 3",
    "telefono": "1234567893",
    "correo": "[email protected]",
    "contrasena": "contrasena789",
    "rol": "64f9ede25bb57e9ee64fb837"
  }
}

4.3.2 Consultar "pedido" por id:

  • Endpoint : /cliente/pedido/:id
  • Método HTTP : GET
  • Descripción : Traer la data de un cliente por id específico.
  • Ejecución: Teniendo lista la ruta en "Thunder Client", procedemos a cambiar el endpoint del momento por ejemplo/doorAuth/login a /cliente/pedido/:id y cambiar el método a "GET", nos quedará algo como esto:
  • Ejemplo del contenido correspondiente en la ruta:
http://localhost:5524/usuario/cliente/pedido/1
  • Clicaremos en Send y obtendremos una respuesta similar a esta, ejemplo de lo que aparece cuando no hay pedidos:
{
  "message": "order not found"
}

About

Creación de API basada en "rappi" y renombrada "rappi_campus", para la gestión de todos los servicios de la aplicación misma bajo el uso de MongoDB y NodeJS.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published