An open API service indexing awesome lists of open source software.

https://github.com/organization-devxp/crud-users-nodejs-express-mysql

Este proyecto es una plantilla inicial para desarrollar APIs en Node.js. Incluye características como autenticación, cifrado de contraseñas, documentación con Swagger, y conexión a bases de datos.
https://github.com/organization-devxp/crud-users-nodejs-express-mysql

bcryptjs express express-validator jwt-authentication morgan-middleware mysql-database nodejs swagger

Last synced: about 2 months ago
JSON representation

Este proyecto es una plantilla inicial para desarrollar APIs en Node.js. Incluye características como autenticación, cifrado de contraseñas, documentación con Swagger, y conexión a bases de datos.

Awesome Lists containing this project

README

        

# Node.js API Template

Este proyecto es una plantilla inicial para desarrollar APIs en Node.js. Incluye características como autenticación, cifrado de contraseñas, documentación con Swagger, y conexión a bases de datos.

## Características principales

- **Autenticación con JWT:** Generación y validación de tokens de acceso.
- **Cifrado de contraseñas:** Uso de bcrypt.js para almacenar contraseñas de forma segura.
- **Documentación interactiva:** Configuración de Swagger para una exploración sencilla de los endpoints.
- **Gestión de errores:** Manejo centralizado de errores para garantizar respuestas consistentes.
- **Registro de solicitudes:** Uso de Morgan para registrar solicitudes HTTP.
- **Estructura modular:** Organización clara de rutas, controladores, y utilidades.
- **Gestión de usuarios:** Inclusión de rutas para registro, inicio de sesión, cierre de sesión, y administración de usuarios (crear, actualizar, eliminar, restaurar).

## Tecnologías utilizadas

- [Node.js](https://nodejs.org/)
- [Express](https://expressjs.com/)
- [JWT (jsonwebtoken)](https://github.com/auth0/node-jsonwebtoken)
- [bcrypt.js](https://github.com/dcodeIO/bcrypt.js/)
- [Swagger](https://swagger.io/)
- [Morgan](https://github.com/expressjs/morgan)
- [MySQL](https://www.mysql.com/)

## Instalación

### Requisitos previos

- Node.js (v14 o superior)
- npm o yarn

### Pasos

1. Clona este repositorio:

```bash
git clone
cd
```

2. Instala las dependencias:

```bash
npm install
# o con yarn
yarn install
```

3. Crea un archivo `.env` en la raíz del proyecto con el siguiente contenido:

```env
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=yourpassword
DB_NAME=namedatabase
JWT_SECRET=your_jwt_secret_key
```

4. Inicia la aplicación:
```bash
npm start
```

## Endpoints principales

La documentación completa de los endpoints está disponible en Swagger. Una vez que el servidor esté corriendo, accede a:

```
http://localhost:3000/api-docs
```

### Explicación de las rutas disponibles:

- POST /api/v1/users/register: Esta ruta es para registrar
un nuevo usuario. Ya tienes la validación y los errores
manejados a través de los middlewares validateRegisterUser
y handleValidationErrors.
- POST /api/v1/users/login: Ruta para la autenticación de
usuario. También con la validación y manejo de errores.
- POST /api/v1/users/logout: Ruta para cerrar sesión del
usuario. Esta acción solo devuelve un mensaje de éxito.
- GET /api/v1/users: Ruta para listar todos los usuarios.
Está protegida por un middleware de autenticación
(authenticateToken) y también verifica si el usuario es
administrador a través de verifyAdmin.
- GET /api/v1/users/:id: Ruta para obtener los datos de un
usuario por su ID. Requiere autenticación.
- PUT /api/v1/users/update/:id: Ruta para actualizar la
información de un usuario. Requiere validación, manejo de
errores y autenticación.
- DELETE /api/v1/users/delete/:id: Ruta para eliminar a un
usuario. Está protegida por autenticación.
- PUT /api/v1/users/restore/:id: Ruta para restaurar a un
usuario eliminado. Solo los administradores pueden acceder
a esta ruta.

## Scripts

- `npm start`: Inicia la aplicación en modo producción.
- `npm run dev`: Inicia la aplicación en modo desarrollo.

## Estructura del proyecto

```bash
├── src/
│ ├── config/
│ │ ├── tableUser.sql
│ │ └── connectMySQL.js
│ ├── controllers/
│ │ ├── authController.js
│ │ └── userController.js
│ ├── models/
│ │ └── MySQL/
| │ └── userModel.js
│ ├── routes/
│ │ ├── authRoutes.js
│ │ └── userRoutes.js
│ ├── services/
│ │ ├── authService.js
│ │ └── userService.js
│ ├── utils/
│ │ ├── bcrypt.js
│ │ └── jwt.js
│ │
│ ├── middleware/
│ │ ├── validataion
│ │ │ ├── fieldsValidation.js
│ │ │ ├── validateUpdateUser.js
│ │ │ └── userValidation.js
│ │ ├── handleValidationErrors.js
│ │ ├── checkUserActiveMiddleware.js
│ │ ├── verifyAdmin.js
│ │ └── authMiddleware.js
│ │
│ ├── app.js # Configuración de la app
│ └── server.js # Arranque del servidor
├── swagger/ # Configuracion de Swagger
├── .env.example # Ejemplo de Variables de entorno
├── package.json # Dependencias y scripts
└──
```

## Contribución

Por favor, consulta el archivo [CONTRIBUTING.md](./CONTRIBUTING.md) para obtener las pautas detalladas sobre cómo contribuir a este proyecto.

## Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo `LICENSE` para más detalles.

## Redes Sociales de OrganizationDevXp

Puedes seguirnos o unirte a nuestras comunidades en las siguientes plataformas:

[![Linkedin](https://img.shields.io/badge/LinkedIn-0A66C2?style=social&logo=linkedin)](https://www.linkedin.com/company/organization-devxp)
[![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=social&logo=youtube)](https://www.youtube.com/@Organization-DevXP)
[![WhatsApp](https://img.shields.io/badge/WhatsApp-25D366?style=social&logo=whatsapp)](https://chat.whatsapp.com/FfX0fXV4xHzCvFoVFn7ssa)
[![Discord](https://img.shields.io/badge/Discord-7289DA?style=social&logo=discord)](https://discord.com/invite/j3hnJjR8Yd)
[![GitHub](https://img.shields.io/badge/GitHub-181717?style=social&logo=github)](https://github.com/Organization-DevXP)

---

¡Gracias por contribuir! Si tienes alguna duda o sugerencia, no dudes en abrir un issue o contactarnos.