Sistema de gestión de tickets construido con Node.js y Express.js. Este proyecto permite a los usuarios crear, ver y gestionar tickets de soporte, facilitando la comunicación entre clientes y el equipo de soporte.
- ✅ Creación de tickets
- 📜 Visualización de tickets
- 🔄 Actualización del estado de los tickets
- 🌐 API RESTful para la gestión de tickets
- 🛡️ Seguridad mejorada con Helmet y rate limiting
Asegúrate de tener instalados los siguientes programas en tu máquina:
Sigue estos pasos para configurar el proyecto en tu entorno local:
-
Clona el repositorio:
git clone https://github.com/israelinxy/ticketing-system.git
-
Navega al directorio del proyecto:
cd ticketing-system
-
Instala las dependencias:
npm install
-
Configura las variables de entorno. Crea un archivo
.env
en la raíz del proyecto y añade lo siguiente:MONGODB_URI=tu_uri_de_mongodb PORT=3000
-
Inicia el servidor:
npm start
-
Abre tu navegador y visita
http://localhost:3000
para ver la aplicación en acción.
Una vez que el servidor esté en funcionamiento, puedes interactuar con la API a través de herramientas como Postman o cURL. Aquí hay algunos ejemplos de cómo utilizar la API:
POST /api/tickets
Content-Type: application/json
{
"titulo": "Problema con el producto",
"descripcion": "No puedo acceder a mi cuenta."
}
GET /api/tickets
PUT /api/tickets/:id
Content-Type: application/json
{
"estado": "resuelto"
}
El proyecto incluye varios scripts útiles que puedes ejecutar desde la línea de comandos:
npm start
: Inicia el servidor en modo producción.npm run dev
: Inicia el servidor en modo desarrollo con recarga automática.npm test
: Ejecuta las pruebas utilizando Jest.npm run db:populate
: Puebla la base de datos con datos iniciales.
Este proyecto utiliza las siguientes dependencias:
- bcrypt: Para el hash seguro de contraseñas.
- compression: Middleware para comprimir las respuestas HTTP.
- cors: Middleware para habilitar CORS.
- dotenv: Para manejar variables de entorno.
- express: Framework web para Node.js.
- express-rate-limit: Para limitar las solicitudes a la API.
- helmet: Para proteger aplicaciones Express estableciendo cabeceras HTTP seguras.
- jsonwebtoken: Para manejar autenticación basada en tokens.
- mongoose: Para interactuar con MongoDB.
- uuid: Para generar identificadores únicos universales.
- winston: Para registrar eventos y errores.
- @babel/core, @babel/preset-env: Para transpilar código moderno a versiones compatibles con Node.js.
- jest: Framework para pruebas unitarias.
- joi: Para validación de datos.
- morgan: Middleware para registrar solicitudes HTTP.
- supertest: Para realizar pruebas HTTP.
Las contribuciones son bienvenidas. Para problemas, ideas o nuevas características, por favor abre un issue o un pull request.
¿Necesitas un diseño web personalizado? Contáctame:
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.