API que calcula fechas hábiles en Colombia (zona horaria America/Bogota
), considerando:
- Días hábiles: lunes a viernes
- Horario laboral: 8:00 a.m. – 5:00 p.m.
- Hora de almuerzo: 12:00 p.m. – 1:00 p.m. (no cuenta como hábil)
- Días festivos nacionales (listados en
src/holidays.ts
) - Respuesta siempre en UTC ISO 8601 con sufijo
Z
- Node.js 18+ (recomendado)
- npm o yarn
npm install
# o
yarn install
## Ejecutar en desarrollo
npm run dev
## El servidor quedará disponible en:
http://localhost:3000
## Endpoint
curl http://localhost:3000/
## GET /calculate
curl "http://localhost:3000/calculate?days=2&hours=5&date=2024-01-01T13:00:00Z"
## Respuesta exitosa:
{
"date": "2024-01-03T18:00:00Z"
}
## Errores posibles:
{
"error": "InvalidParameters",
"message": "'days' must be a non-negative integer."
}
## Tests
## Los tests usan Jest + Supertest.
## Ejecutar:
npm test
## Scripts disponibles
npm run dev → ejecutar con recarga en caliente
npm run build → compilar TypeScript a dist/
npm start → ejecutar en producción (node dist/index.js)
npm test → correr los tests
## Tecnologías
TypeScript
Express
Luxon
Jest
+ Supertest
** GET /calculate
** Formato:
/calculate?days=<num>&hours=<num>&date=<fecha-en-UTC>
** Ejemplos en navegador:
http://localhost:3000/calculate?days=1&hours=4
http://localhost:3000/calculate?hours=8&date=2025-09-22T13:00:00Z
http://localhost:3000/calculate?days=2
** Ejemplos en consola con curl:
# Sumar 2 días y 5 horas desde 2024-01-01T13:00:00Z
curl "http://localhost:3000/calculate?days=2&hours=5&date=2024-01-01T13:00:00Z"
# Sumar 1 día hábil desde hora actual
curl "http://localhost:3000/calculate?days=1"
# Sumar 3 horas hábiles desde hora actual
curl "http://localhost:3000/calculate?hours=3"
## Despliegue de vercel con los parametros
https://working-days-frsigrpf6-karolvanesor-5719s-projects.vercel.app/calculate?days=1&hours=3&date=2025-09-22T13:00:00Z
## Despliegue en la terminal
curl "https://working-days-frsigrpf6-karolvanesor-5719s-projects.vercel.app/calculate?days=1&hours=3&date=2025-09-22T13:00:00Z"
## Despliegue de vercel de la api
Producción: https://working-days-frsigrpf6-karolvanesor-5719s-projects.vercel.app
Inspección / Dashboard del deploy: https://vercel.com/karolvanesor-5719s-projects/working-days-api/FSiPRDPkRDpyeorcVTi3aGUSyUEk
## Ejemplo de despliegue en el navegador
https://working-days-frsigrpf6-karolvanesor-5719s-projects.vercel.app/calculate?days=1&hours=3&date=2025-09-22T13:00:00Z
## Ejemplo de despligue actualizado en render sin loguin
## Ejemplo de despliegue en el navegador con parametros
https://working-days-api.onrender.com/calculate?days=2&hours=3&date=2025-09-27T13:00:00Z
https://working-days-api.onrender.com/calculate?days=2&hours=3
## Ejemplo de despliegue si queremos ver error de envio de parametros
https://working-days-api.onrender.com/calculate