UserFlow es una API diseñada para gestionar un CRUD de clientes, incorporando un sistema de autenticación basado en API keys. Los usuarios registrados pueden generar y utilizar una API key única para interactuar de manera segura con el backend.
El proyecto UserFlow ha sido desplegado en Render. Puedes acceder a la aplicación en el siguiente enlace:
- URL de la aplicación: https://userflow-7y2o.onrender.com
La documentación de la API generada con Swagger está disponible en el siguiente enlace:
- Swagger Docs: https://userflow-7y2o.onrender.com/api-docs
- Node.js: Entorno de ejecución para JavaScript en el servidor.
- Express: Framework web minimalista para Node.js.
- MySQL: Sistema de gestión de bases de datos relacional.
- Prisma: ORM para consultas de bases de datos en Node.js.
- Morgan: Middleware para registrar solicitudes HTTP.
- JSON Web Token (JWT): Estándar para crear tokens de acceso.
- Bcrypt: Biblioteca para hashing de contraseñas.
- dotenv: Módulo para gestionar variables de entorno.
- uuid: Librería para generar identificadores únicos universales.
- Zod : Biblioteca para la validación. Garantiza que los datos de entrada cumplan con un formato específico antes de procesarlos.
- CORS: Middleware para habilitar Cross-Origin Resource Sharing en la aplicación.
- ES6: Versión de JavaScript con nuevas características.
- Swagger: Herramienta para generar documentación y pruebas de APIs RESTful.
- Visual Studio Code (VSCode)
- Insomnia
- Git & GitHub
- MySQL Workbench
- 📁: Directorios.
- 📄: Archivos.
- 📝: Documentacion.
- 📜: Archivos de esquema o modelos.
- 🔒: Archivos relacionados con seguridad o autenticación.
- ⚙️: Archivos de configuración o de ajustes técnicos.
📁UserFlow/
├── 📁prisma/
│ ├── 📁migrations/
│ └── 📜 schema.prisma
├── 📁src/
│ ├── 📁controllers/📁v1
│ │ ├── 📄 clientController.js
│ │ └── 📄 userController.js
│ ├── 📁database/
│ │ ├── ⚙️ corsOptions.js
│ │ └── ⚙️ prismaClient.js
│ ├── 📁middlewares/
│ │ ├── 🔒 authApiKeyMiddleware.js
│ │ └── 🔒 authTokenMiddleware.js
│ ├── 📁models/📁v1
│ │ ├── 📜 clientModel.prisma.js
│ │ └── 📜 userModel.prisma.js
│ ├── 📁routes/📁v1
│ │ ├── 📄 client.Routes.js
│ │ ├── 📄 home.Routes.js
│ │ └── 📄 user.Routes.js
│ ├── 📁schemas/📁v1
│ │ ├── 📄 clientSchema.js
│ │ └── 📄 userSchema.js
│ ├── 📁services/📁v1
│ │ ├── 📄 clientService.js
│ │ └── 📄 userService.js
│ ├── 📁utils/
│ │ ├── 📄 generateApiKey.js
│ │ ├── 📄 generateJWT.js
│ │ └── 📄 hashPassword.js
│ └── 📄 index.js
├── 📁swagger/v1 📝
│ ├── 📁components/
│ │ ├── 📁schemas/
│ │ │ ├── 📁client/
│ │ │ │ ├── 📄 Client.js
│ │ │ │ ├── 📄 ClientInput.js
│ │ │ │ ├── 📄 ClientLogin.js
│ │ │ │ └── 📄 ClientUpdateInput.js
│ │ │ └── 📁user/
│ │ │ ├── 📄 UserRegistration.js
│ │ │ └── 📄 UserLogin.js
│ │ └── 📁securitySchemes/
│ │ ├── 🔒 apiKeyAuth.js
│ │ └── 🔒 bearerAuth.js
│ ├── 📁paths/
│ │ ├── 📁clients/
│ │ │ ├── 📄 getAllClients.js
│ │ │ ├── 📄 createClient.js
│ │ │ ├── 📄 loginClient.js
│ │ │ └── 📄 clientById.js
│ │ └── 📁users/
│ │ ├── 📄 deleteUserUser.js
│ │ ├── 📄 registerUser.js
│ │ ├── 📄 loginUser.js
│ │ └── 📄 regenerateApiKeyUser.js
│ ├── 📄 info.js
│ ├── 📄 servers.js
│ ├── 📄 main.js
│ └── 📄 swaggerSpec.js
├── 📝 .env.example
├── 📄 .gitignore
├── 📄 package.json
└── 📝 README.md
¡Contribuciones son bienvenidas! Si deseas contribuir a este proyecto, sigue estos pasos:
- Haz un fork del proyecto.
- Crea una nueva rama (
git checkout -b feature/nueva-feature
). - Realiza tus cambios y haz commit (
git commit -m 'Agrega nueva feature'
). - Haz push a la rama (
git push origin feature/nueva-feature
). - Abre un Pull Request.
Este proyecto está licenciado bajo la Licencia. Consulta el archivo LICENSE para más detalles.
- Dia/Mes/Año : 31-07-2024
- 31-07-2024: Update/Fix Swagger and README.md
- 29-07-2024: Implementación de Zod.
- 28-07-2024: Actualización de los controladores para que usen los servicios.
- 26-07-2024: Implementación de CORS para habilitar Cross-Origin Resource Sharing.
- 26-07-2024: Despliegue del proyecto en Render.
- 25-07-2024: Refactorización de código.
- 23-07-2024: Implementación de la ruta / para verificar el estado del servidor con enlaces a la documentación de Swagger.
- 20-07-2024: Implementación de Swagger.
- 16-07-2024: Definición de los endpoints y adición de las rutas iniciales.
- 15-07-2024: Adición de la estructura básica del proyecto y configuraciones iniciales.
- 15-07-2024: Inicio del proyecto UserFlow.