Servicio API REST de prueba para Koibanx, desarrollado usando Node.js, Express y Mongoose.
Esta API permite obtener y almacenar información de Comercios, siempre y cuando el usuario este autenticado. Registrandolo en la base de datos MongoDB, la API cuenta con las siguientes funciones:
- Authorization mediante Basic Auth
- Ingreso de parametros con el estandar https://restdb.io/docs/querying-with-the-api#restdb.
- Paginación
- Validación de parametros de entrada
- Decorators para la devolución de información (DTO - Data Transfer Object)
- Test Unitarios para todas las funcionalidades
- Seeder para la creación del usuario inicial y para los Comercios
- Manejador de errores
- Test de Integración en Postman
- Docker support
Clonar el repo:
git clone https://github.com/DevJuliocesar/koibanxBackend.git
cd koibanxBackend
# Run Docker Develop
npm run docker:dev
# Run Docker Test
npm run docker:test
# Run Docker Prod
npm run docker:prod
Instalar las dependencias:
npm install
Agregar las variables de entorno:
cp .env.example .env
# open .env and modify the environment variables (if needed)
- NoSQL database: MongoDB Modelado de objeto de datos usando Mongoose
- Authentication y authorization: usando bcrypt-nodejs
- Validation: Validación de datos de la petición usando express-validator
- Logging: usando winston
- Testing: Test Unitarios usando Jest
- Error handling: centralized error handling mechanism
- Dependency management: con npm
- Environment variables: usando dotenv
- Docker support
- Linting: con ESLint and Prettier
- Editor config: consistent editor configuration usando EditorConfig
Run Local:
npm run dev
Run Producción:
npm start
Testing:
# run all tests
npm run test
# run test coverage
npm run test:cov
Docker:
# run Develop
npm run docker:dev
# run Production
npm run docker:prod
# run test
npm run docker:test
Las variables de entorno se pueden encontrar y modificar en el archivo .env
. Vienen con estos valores predeterminados:
# Port number
PORT=3000
# Username of the Mongo DB: If is neccesary
DATABASE_USERNAME=username
# Password of the Mongo DB: If is neccesary
DATABASE_PASSWORD=password
# Url of the Mongo DB
DATABASE_HOST=127.0.0.1
# Port of the Mongo DB
DATABASE_PORT=27017
# Db Name of the Mongo DB
DATABASE_DBNAME=stores-api
src\
|--config\ # Environment variables and configuration related things
|--controllers\ # Route controllers (controller layer)
|--mappers\ # Dto Mappers (mapper layer)
|--middlewares\ # Custom express middlewares
|--models\ # Mongoose models (data layer)
|--repositories\ # Connect with models (repository layer)
|--routes\ # Routes
|--services\ # Business logic (service layer)
|--utils\ # Utility classes and functions
|--validations\ # Request data validation schemas
|--app.js # Express app
Lista de rutas habilitadas:
Auth routes:
POST /api/auth/login
- login\
Store routes:
POST /api/stores
- create a Store
GET /api/stores
- get all stores\