{"id":17972483,"url":"https://github.com/muke78/backend_restfull","last_synced_at":"2026-04-13T16:32:26.280Z","repository":{"id":258993742,"uuid":"862279662","full_name":"muke78/Backend_RESTFULL","owner":"muke78","description":"Backend con Express y Nodemon con CRUD y JWT y Swagger con carga de archivos, posteriormente interfaz en react con zustand y tanstack_query","archived":false,"fork":false,"pushed_at":"2025-04-02T02:09:09.000Z","size":743,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T03:20:52.356Z","etag":null,"topics":["argon2","backend","backend-api","crud-application","express","jwt-authentication","jwt-token","mysql2","node","nodemon","rest-api","swagger"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/muke78.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-24T10:38:53.000Z","updated_at":"2025-04-02T02:09:13.000Z","dependencies_parsed_at":"2025-04-02T03:30:10.040Z","dependency_job_id":null,"html_url":"https://github.com/muke78/Backend_RESTFULL","commit_stats":null,"previous_names":["muke78/backend_restfull"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muke78%2FBackend_RESTFULL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muke78%2FBackend_RESTFULL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muke78%2FBackend_RESTFULL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muke78%2FBackend_RESTFULL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/muke78","download_url":"https://codeload.github.com/muke78/Backend_RESTFULL/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247092374,"owners_count":20882217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["argon2","backend","backend-api","crud-application","express","jwt-authentication","jwt-token","mysql2","node","nodemon","rest-api","swagger"],"created_at":"2024-10-29T16:19:08.831Z","updated_at":"2026-04-13T16:32:26.273Z","avatar_url":"https://github.com/muke78.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏫 AKT - CRM para Administración de Kinder\n\n## 📘 Descripción\n\n**AKT** es una plataforma CRM construida para administrar eficientemente la información de un jardín de niños, incluyendo usuarios, maestros, padres, alumnos, insumos y más. Esta solución cuenta con una robusta **API RESTful** desarrollada en **Node.js**, conectada a una base de datos **MySQL**, y un **frontend moderno en React** que facilita la gestión desde cualquier navegador.\n\n---\n\n## 🔧 Tecnologías Utilizadas\n\n### 🔙 Backend - Stack y Librerías\n\nTecnologías y herramientas utilizadas en el backend de este proyecto:\n\n#### 🧠 Core \u0026 Framework\n- **Node.js** 🟢 – Entorno de ejecución de JavaScript para backend.\n- **Express.js** ⚡ – Framework web minimalista para crear APIs y servidores HTTP.\n\n#### 🛡️ Seguridad y Autenticación\n- **Argon2** 🔒 – Algoritmo de hashing seguro para contraseñas.\n- **jsonwebtoken (JWT)** 🔑 – Autenticación basada en tokens.\n- **Google Auth Library** 🔐 – Autenticación con cuentas de Google.\n- **helmet** 🛡️ – Configura cabeceras HTTP seguras.\n- **express-rate-limit** ⏱️ – Protección contra ataques de fuerza bruta y abuso.\n- **cors** 🌐 – Permite solicitudes entre dominios.\n\n#### 🐬 Base de Datos\n- **MySQL2** 🐬 – Cliente MySQL para Node.js compatible con promesas.\n\n#### 🪵 Logging y Utilidades\n- **morgan** 🪵 – Middleware para registrar peticiones HTTP.\n\n#### 📦 Formateo, Linting y Calidad de Código\n- **prettier** ✨ – Formateador de código automático.\n- **@trivago/prettier-plugin-sort-imports** 🔀 – Ordenamiento automático de imports.\n- **eslint** 🧹 – Linter para mantener un estilo de código consistente.\n- **@eslint/js** ⚙️ – Configuración moderna para `eslint`.\n- **standard** 📏 – Estilo de código estándar para JavaScript.\n\n#### 🧪 Testing\n- **jest** ✅ – Framework de testing.\n- **frisby** 🧪 – Librería para pruebas HTTP y APIs REST.\n- **@faker-js/faker** 👻 – Generador de datos falsos para pruebas.\n\n#### ⚙️ Automatización y Entorno de Desarrollo\n- **nodemon** 🔄 – Reinicio automático del servidor al detectar cambios.\n- **concurrently** 🧵 – Ejecuta múltiples comandos en paralelo.\n- **dotenv** 🧬 – Carga variables de entorno desde archivos `.env`.\n- **husky** 🐶 – Automatiza scripts en Git como pre-commit o pre-push.\n\n#### 📚 Documentación\n- **swagger-jsdoc** 📝 – Generador de especificaciones OpenAPI desde JSDoc.\n- **swagger-ui-express** 🌐 – Interfaz de usuario Swagger para probar la API.\n- **swagger-themes** 🎨 – Temas visuales personalizados para Swagger UI.\n\n---\n\n### 🌐 Frontend (React)\n\n- **React 19** ⚛️\n- **React Router DOM 7** 🧭\n- **React Hook Form + Zod** 🧾 (Formularios y validación)\n- **Zustand** 📦 (Manejo de estado global)\n- **Tanstack React Query** 📤📥 (Manejo de peticiones)\n- **TailwindCSS + DaisyUI** 🎨 (Estilos)\n- **SweetAlert2 + React Hot Toast** 🔔 (Alertas y notificaciones)\n- **Recharts** 📊 (Gráficas)\n- **JWT Decode** 🪪 (Decodificación de tokens)\n- **Axios** ⚡ (Cliente HTTP)\n- **Animate.css** 🎞️ (Animaciones)\n- **React CountUp** 🔢 (Contadores animados)\n- **Vite** ⚡ (Empaquetador moderno)\n- **Husky** 🐶 (Hooks de Git)\n\n---\n\n## Modelo relacional de la Base de Datos 🗄️\n\n![Administracion de jardin de niños](/assets/Administracion%20de%20jardin%20de%20niños.svg)\n\n---\n\n## 🗂️ Estructura del Proyecto\n\n```bash\nBackend_Node_REST/\n├── config/                  # Configuración de la base de datos y Swagger\n├── controllers/             # Controladores para cada entidad\n│   ├── maestrosControllers.js\n│   ├── padresControllers.js\n│   ├── studentsController.js\n│   ├── catAssetsControllers.js\n│   ├── catInventarioControllers.js\n│   ├── catSuppliesControllers.js\n│   ├── googleControllers.js\n│   └── users/\n├── helpers/                 # Funciones auxiliares y lógica reutilizable\n│   ├── connection.helper.js\n│   ├── jwt.js\n│   ├── jwtGoogle.js\n│   ├── apiCreateToken.js\n│   └── usersHelpers/\n├── lib/                     # Librerías externas o personalizadas\n│   └── clientGoogle.js\n├── middleware/              # Middlewares personalizados\n├── models/                  # Modelos de la base de datos\n├── router/                  # Definición de rutas\n├── server/                  # Servidor Express y configuración\n├── services/                # Lógica de negocio / servicios externos\n├── tests/                   # Pruebas unitarias\n│   ├── teachers/\n│   └── users/\n├── .env                     # Variables de entorno (no incluido en repo)\n├── server.js                # Punto de entrada\n```\n\n---\n\n## 🧱 Estructura de la Base de Datos\n\nLa base de datos cuenta con una versión espejo (entorno local) de la base de datos de producción.  \nEsta arquitectura garantiza la seguridad e integridad de los datos reales, permitiendo hacer pruebas sin afectar el entorno principal.\n\nCada entorno (producción y local) utiliza un archivo `.env` con las configuraciones adecuadas, asegurando un manejo controlado y seguro de las credenciales y parámetros de conexión.\n\n---\n\n## ⚙️ Instalación y Ejecución\n\n1. Clonar el repositorio\n\n```bash\ngit clone https://github.com/muke78/Backend_RESTFULL.git\ncd Backend_RESTFULL\n```\n\n2. Instalar las dependencias\n\n```\npnpm install\n```\n\n3. Crear un archivo .env con las siguientes variables:\n   ⚠️ Este archivo no está incluido en el repositorio por razones de seguridad.\n   Solicita una versión válida al desarrollador si es necesario.\n\n```bash\nPORT=3000\nDB_HOST=localhost\nDB_USER=root\nDB_PASSWORD=yourpassword\nDB_NAME=akt_kinder\nJWT_SECRET=your_jwt_secret\n```\n\n---\n\n## 📦 Scripts disponibles\n\nEstos son los scripts definidos en el archivo `package.json`, los cuales automatizan tareas comunes de desarrollo y pruebas.\n\n| Script                 | Comando                                                                                     | Descripción                                                                 |\n|------------------------|---------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|\n| `start`                | `nodemon server.js`                                                                         | Inicia el servidor en modo desarrollo usando `nodemon`.                                                         |\n| `dev`                  | `nodemon server.js`                                                                         | Alias de `start`. Ideal para entornos de desarrollo.                                                             |\n| `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.                           |\n| `prepare`              | `husky`                                                                                     | Configura los hooks de Git mediante Husky (se ejecuta automáticamente al instalar dependencias).                |\n| `test`                 | `jest`                                                                                      | Ejecuta los tests unitarios utilizando Jest.                                                                     |\n| `test:watch`           | `jest --watchAll`                                                                           | Ejecuta los tests y observa cambios en tiempo real para repetir automáticamente las pruebas.                    |\n| `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.       |\n\n\n---\n\n## 📬 Documentación Swagger\n\n- URL Base: http://localhost:3000/api/v1\n- Documentación: http://localhost:3000/api-docs/\n\nPuedes probar los endpoints directamente desde Swagger en tu navegador.\n\n---\n\n## 🧪 Pruebas\n\n- Se utilizan Jest y Frisby para pruebas unitarias.\n- Se realiza testing manual con Postman para verificar:\n  - CRUD completo\n  - Autenticación local y con Google\n  - Roles y permisos\n\n---\n\n## 💡 Funcionalidades Clave\n\n- ✅ Autenticación local y con Google\n- 👨‍🏫 Gestión de maestros, padres y alumnos\n- 🏫 Administración de insumos, activos e inventario\n- 🧠 Documentación automática con Swagger\n- 🛡️ Seguridad con Helmet, Rate Limit y hashing de contraseñas\n- 🌐 Soporte para frontend moderno (React)\n\n## 📈 Estado del Desarrollo\n\n- [x] Backend funcional con autenticación\n- [x] Documentación de endpoints con Swagger\n- [x] CRUD de usuarios, maestros, padres y estudiantes\n- [ ] Mejorar los CRUDS para maestos, padres, estudiantes y google etc\n- [ ] Integración completa con el frontend (en progreso)\n- [ ] Panel de administración con reportes y gráficas\n- [ ] Roles y permisos sobre logica de modulos (en progreso)\n\n---\n\n## 📁 Repositorio\n\n🔗 Backend: https://github.com/muke78/Backend_RESTFULL\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuke78%2Fbackend_restfull","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuke78%2Fbackend_restfull","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuke78%2Fbackend_restfull/lists"}