Skip to content

API en TypeScript para calcular fechas y horas hábiles en Colombia, considerando días festivos, horario laboral y zona horaria America/Bogota, con respuesta en UTC.

Notifications You must be signed in to change notification settings

karolvanesor-coder/working_days_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Working Days API (TypeScript)

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

Requisitos

  • Node.js 18+ (recomendado)
  • npm o yarn

Instalación

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

About

API en TypeScript para calcular fechas y horas hábiles en Colombia, considerando días festivos, horario laboral y zona horaria America/Bogota, con respuesta en UTC.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published