Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 0 additions & 39 deletions .github/workflows/dependency-review.yml

This file was deleted.

35 changes: 0 additions & 35 deletions .github/workflows/node.js.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export NVM_DIR="$HOME/.nvm"
echo "🔍 Verificando archivos antes del commit..."
echo "📦 Formateando código con Prettier..."

yarn prettier 'src/**/*.{js,ts,jsx,tsx,json}' server.js package.json --write || exit 1
pnpm prettier 'src/**/*.{js,ts,jsx,tsx,json}' server.js package.json --write || exit 1


# Agregar los archivos modificados después del formateo
Expand Down
2 changes: 1 addition & 1 deletion .husky/pre-push
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ if [ "$BRANCH" = "staging" ]; then
echo "📍 Estás en la rama 'staging'. Ejecutando pruebas..."
echo "🧪 Ejecutando tests con servidor..."

if ! yarn test:with-server; then
if ! pnpm test:with-server; then
echo "❌ Tests fallaron. Corrige los errores antes de hacer commit."
exit 1
fi
Expand Down
86 changes: 60 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,52 @@

## 🔧 Tecnologías Utilizadas

### 🔙 Backend

- **Node.js** 🟢
- **Express.js** 🔵
- **MySQL2** 🐬
- **Google Auth Libary** 🔡 (Login con google)
- **Argon2** 🔒 (Hash de contraseñas)
- **JWT** 🔑 (Autenticación)
- **Jest y Frisby** 🧪 (Pruebas de las API)
- **Swagger & Swagger-UI** 📚 (Documentación de la API)
- **Express Rate Limit** ⏱️ (Limitación de peticiones)
- **Helmet** 🛡️ (Seguridad en headers HTTP)
- **CORS** 🌐 (Permite el acceso entre dominios)
- **Morgan** 🪵 (Middleware de logging)
- **Commander & Inquirer** ⚙️ (Comandos CLI)
- **Formkit Tempo** 🕒 (Fechas en formato entendible y legible)
- **Husky** 🐶 (Hooks de Git)
### 🔙 Backend - Stack y Librerías

Tecnologías y herramientas utilizadas en el backend de este proyecto:

#### 🧠 Core & Framework
- **Node.js** 🟢 – Entorno de ejecución de JavaScript para backend.
- **Express.js** ⚡ – Framework web minimalista para crear APIs y servidores HTTP.

#### 🛡️ Seguridad y Autenticación
- **Argon2** 🔒 – Algoritmo de hashing seguro para contraseñas.
- **jsonwebtoken (JWT)** 🔑 – Autenticación basada en tokens.
- **Google Auth Library** 🔐 – Autenticación con cuentas de Google.
- **helmet** 🛡️ – Configura cabeceras HTTP seguras.
- **express-rate-limit** ⏱️ – Protección contra ataques de fuerza bruta y abuso.
- **cors** 🌐 – Permite solicitudes entre dominios.

#### 🐬 Base de Datos
- **MySQL2** 🐬 – Cliente MySQL para Node.js compatible con promesas.

#### 🪵 Logging y Utilidades
- **morgan** 🪵 – Middleware para registrar peticiones HTTP.
- **commander** ⚙️ – Gestión de comandos CLI (si aplica).

#### 📦 Formateo, Linting y Calidad de Código
- **prettier** ✨ – Formateador de código automático.
- **@trivago/prettier-plugin-sort-imports** 🔀 – Ordenamiento automático de imports.
- **eslint** 🧹 – Linter para mantener un estilo de código consistente.
- **@eslint/js** ⚙️ – Configuración moderna para `eslint`.
- **standard** 📏 – Estilo de código estándar para JavaScript.

#### 🧪 Testing
- **jest** ✅ – Framework de testing.
- **frisby** 🧪 – Librería para pruebas HTTP y APIs REST.
- **@faker-js/faker** 👻 – Generador de datos falsos para pruebas.

#### ⚙️ Automatización y Entorno de Desarrollo
- **nodemon** 🔄 – Reinicio automático del servidor al detectar cambios.
- **concurrently** 🧵 – Ejecuta múltiples comandos en paralelo.
- **dotenv** 🧬 – Carga variables de entorno desde archivos `.env`.
- **husky** 🐶 – Automatiza scripts en Git como pre-commit o pre-push.
- **@formkit/tempo** 🕒 – Formatea fechas en un formato legible y localizado.

#### 📚 Documentación
- **swagger-jsdoc** 📝 – Generador de especificaciones OpenAPI desde JSDoc.
- **swagger-ui-express** 🌐 – Interfaz de usuario Swagger para probar la API.
- **swagger-themes** 🎨 – Temas visuales personalizados para Swagger UI.

---

Expand Down Expand Up @@ -110,7 +139,7 @@ cd Backend_RESTFULL
2. Instalar las dependencias

```
yarn install
pnpm install
```

3. Crear un archivo .env con las siguientes variables:
Expand All @@ -128,15 +157,20 @@ JWT_SECRET=your_jwt_secret

---

## 🚀 Comandos
## 📦 Scripts disponibles

Estos son los scripts definidos en el archivo `package.json`, los cuales automatizan tareas comunes de desarrollo y pruebas.

| Script | Comando | Descripción |
|------------------------|---------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| `start` | `nodemon server.js` | Inicia el servidor en modo desarrollo usando `nodemon`. |
| `dev` | `nodemon server.js` | Alias de `start`. Ideal para entornos de desarrollo. |
| `format` | `prettier 'src/**/*.{js,ts,jsx,tsx,json}' server.js package.json --write` | Formatea el código en la carpeta `src`, `server.js` y `package.json` usando Prettier. |
| `prepare` | `husky` | Configura los hooks de Git mediante Husky (se ejecuta automáticamente al instalar dependencias). |
| `test` | `jest` | Ejecuta los tests unitarios utilizando Jest. |
| `test:watch` | `jest --watchAll` | Ejecuta los tests y observa cambios en tiempo real para repetir automáticamente las pruebas. |
| `test:with-server` | `concurrently --kill-others --success first "pnpm dev" "pnpm test"` | Ejecuta el servidor de desarrollo y las pruebas en paralelo. Se detiene si uno de ellos finaliza o falla. |

| Comando | Descripción |
| ----------------- | --------------------------------------------------- |
| `yarn dev` | Inicia el servidor en modo desarrollo 🔄 |
| `yarn start` | Inicia en modo producción 🚀 |
| `yarn format` | Formatea el código con Prettier 💅 |
| `yarn test` | Ejecuta pruebas unitarias con Jest ✅ |
| `yarn test:watch` | Ejecuta pruebas automáticamente al hacer cambios 👀 |

---

Expand Down
10 changes: 7 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
"description": "Backend API for the project, using Node.js, Express, and MySQL.",
"main": "server.js",
"scripts": {
"start": "nodemon server.js",
"start": "node server.js",
"dev": "nodemon server.js",
"format": "prettier 'src/**/*.{js,ts,jsx,tsx,json}' server.js package.json --write",
"prepare": "husky",
"test": "jest",
"test:watch": "jest --watchAll",
"test:with-server": "concurrently --kill-others --success first \"yarn dev\" \"yarn test\""
"test:with-server": "concurrently --kill-others --success first \"pnpm dev\" \"pnpm test\""
},
"license": "MIT",
"type": "module",
Expand Down Expand Up @@ -40,7 +40,6 @@
"google-auth-library": "^9.15.1",
"helmet": "^8.1.0",
"husky": "^9.1.7",
"inquirer": "^12.6.1",
"jsonwebtoken": "^9.0.2",
"morgan": "^1.10.0",
"mysql2": "^3.11.3",
Expand All @@ -60,5 +59,10 @@
"jest": "^29.7.0",
"nodemon": "^3.1.10",
"prettier": "^3.5.3"
},
"pnpm": {
"overrides": {
"hoek": "^6.1.3"
}
}
}
Loading