Nodepop es una app de venta de artículos de segunda mano, proporciona anuncios con información sobre articulos a los usuarios que estén autenticados.
Operaciones que realiza el API en su primera versión:
- Registro (nombre, email, contraseña).
- Autenticación (email y contraseña). El acceso al API se hará con autenticación, usando JWT (JSON Web Token)
- Consulta de anuncios paginada para usuarios autenticados. Con filtros por tag, tipo de anuncio (venta o búsqueda), rango de precio (preciomínimo y precio máximo) y nombre de artículo (que comience por el dato buscado)
- Consulta de tags existentes
Se debe especificar el idioma del usuario en cada petición (se captura de Accept-Language
). La API devolverá traducidos los mensajes de errror que debe mostrar al usuario en su idioma (solo disponible en esta primera versión en inglés y español). Si no se especifica el idioma, por defecto se establecerá el español.
- Instalación
- Clonar repositorio e instalar dependencias
- Inicialización de la base de datos
- Especificar las variables de entorno
- Modelo de datos
- Entornos de ejecución
- Guia de estilo
Para realizar la instalación es conveniente disponer del siguiente software:
Tener instalado npm en esta versión o superiores.
Tener instalado Node.js en esta versión o superiores.
Tener instalado el motor de base de datos mongoDB y que esté arrancado.
Descargar este repositorio o clonarlo desde git
.
Una vez clonado, instalar las dependencias con npm. Desde línea de comandos:
$ cd nodepop
nodepop/$ npm install
Para más información sobre los paquetes requeridos para esta aplicación consultar el fichero package.json.
Desde un terminal, y una vez arrancado el servidor de mongodb
, en el directorio raiz del proyecto ejecutar:
nodepop/$ npm run installDB
Al ejecutar este comando:
- Se creará la base de datos nodepop en
mongoDB
. - Se crearán las colecciones de anuncios y usuarios con datos de muestra.
Si ya se ha creado con anterioridad la base de datos nodepop con ambas colecciones, esta ejecución borrará todos los documentos de anuncios y usuarios y los volverá a cargar con los datos de muestra.
Nota: los datos de muestra están en los ficheros
anuncios.json
yusuarios.json
respectivamente. Se pueden modificar ambos ficheros para añadir/quitar documentos tanto de anuncios como de usuarios, siempre que se respete la estructura que dicta el modelo.
En el directorio de la aplicación se puede encontrar un fichero .env.example
. Renombrar dicho fichero a .env
y configurar las variables de entorno con los valores que utilizará la aplicación.
La base de datos mongoDB
en la que se alojará la información de la API seguirá el modelo de datos para las colecciones:
anuncios
usuarios
Esta colección obedecerá al siguiente modelo:
{
nombre: String,
venta: Boolean,
precio: Number,
foto: String,
tags: [String]
}
Los tags válidos serán los siguientes:
- work
- lifestyle
- motor
- mobile
En esta colección se han definido los siguientes índices, ya que será por los que se realizarán las consultas:
- nombre
- venta
- precio
- tags
Para la colección de usuarios el modelo es:
{
nombre: String,
email: String,
clave: String
}
Para la colección usuarios se ha definido un índice por el campo email
.
La API se podrá arrancar en los siguientes entornos:
Ejecutar en línea de comandos desde el directorio de la aplicación:
nodepop/$ npm run start
Ejecutar en línea de comandos desde el directorio de la aplicación:
nodepop/$ npm run cluster
Para la revisión de estilo de código y de posibles bugs utilizaremos ESLint.
En su configuración se ha optado por la versión de JavaScript Standard (revisar fichero .eslintrc.js
).
Se ha añadido al directorio raiz del proeycto el archivo .eslintignore
. En este archivo podemos añadir los directorios o archivos de nuestro proyecto para los que no queramos revisión de estilo.
En muchos IDEs existen plugins que lo integran , por ejemplo en Visual Code existe este para ESLint que tras instalarlo y añadir un proyecto con la configuración que queramos podemos ver que nos muestra los errores sobre cada una de las líneas.