node src/main.ts {"time":"2026-11-02T06:15:15.864Z","level":"warn","msg":"new database, sample data loaded","dbPath":"data/kallpa.db"} {"time":"2026-11-02T06:15:15.867Z","level":"info","msg":"listening","port":3000} {"time":"2026-11-02T06:15:17.202Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":1} {"time":"2026-11-02T06:15:17.209Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":1} {"time":"2026-11-02T06:15:17.213Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.217Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.222Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.226Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.231Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.236Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.241Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.246Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.252Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.256Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.261Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.265Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.269Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.274Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.278Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.283Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.287Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.291Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.295Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.300Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.304Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.308Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.313Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.317Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.322Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.327Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.331Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.336Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.340Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.345Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.350Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.354Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.358Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.362Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.366Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.371Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.375Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.379Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.384Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.388Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.392Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.396Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.401Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.406Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.410Z","level":"info","msg":"request","method":"GET","path":"/","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.414Z","level":"info","msg":"request","method":"GET","path":"/api/courts","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.418Z","level":"info","msg":"request","method":"GET","path":"/api/courts/1/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.423Z","level":"info","msg":"request","method":"GET","path":"/api/courts/3/availability","status":200,"durationMs":0} {"time":"2026-11-02T06:15:17.429Z","level":"info","msg":"request","method":"GET","path":"/health","status":200,"durationMs":1} [whatsapp] para 987654321: Hola Rosa Quispe Mamani, tu reserva de Fulbito 2 el 2026-11-05 de 7:00 a 8:00 está confirmada. Total: S/ 90.00. {"time":"2026-11-02T06:15:17.440Z","level":"info","msg":"request","method":"POST","path":"/api/bookings","status":200,"durationMs":6} [whatsapp] para 987654321: Hola Rosa Quispe Mamani, tu reserva de Fulbito 2 el 2026-11-05 de 8:00 a 9:00 está confirmada. Total: S/ 90.00. {"time":"2026-11-02T06:15:17.448Z","level":"info","msg":"request","method":"POST","path":"/api/bookings","status":200,"durationMs":3} [whatsapp] para 987654321: Hola Rosa Quispe Mamani, tu reserva de Fulbito 2 el 2026-11-05 de 9:00 a 10:00 está confirmada. Total: S/ 90.00. {"time":"2026-11-02T06:15:17.460Z","level":"info","msg":"request","method":"POST","path":"/api/bookings","status":200,"durationMs":6} [whatsapp] para 987654321: Hola Rosa Quispe Mamani, tu reserva de Fulbito 2 el 2026-11-05 de 10:00 a 11:00 está confirmada. Total: S/ 90.00. {"time":"2026-11-02T06:15:17.469Z","level":"info","msg":"request","method":"POST","path":"/api/bookings","status":200,"durationMs":5} [whatsapp] para 987654321: Hola Rosa Quispe Mamani, tu reserva de Fulbito 2 el 2026-11-05 de 11:00 a 12:00 está confirmada. Total: S/ 90.00. {"time":"2026-11-02T06:15:17.477Z","level":"info","msg":"request","method":"POST","path":"/api/bookings","status":200,"durationMs":3} [whatsapp] para 987654321: Hola Rosa Quispe Mamani, tu reserva de Fulbito 2 el 2026-11-05 de 12:00 a 13:00 está confirmada. Total: S/ 90.00. {"time":"2026-11-02T06:15:17.486Z","level":"info","msg":"request","method":"POST","path":"/api/bookings","status":200,"durationMs":4} {"time":"2026-11-02T06:15:17.491Z","level":"info","msg":"request","method":"POST","path":"/api/bookings","status":409,"durationMs":0} {"time":"2026-11-02T06:15:17.496Z","level":"info","msg":"request","method":"POST","path":"/api/bookings","status":409,"durationMs":0} {"time":"2026-11-02T06:15:17.500Z","level":"info","msg":"request","method":"POST","path":"/api/bookings","status":422,"durationMs":0} {"time":"2026-11-02T06:15:17.504Z","level":"info","msg":"request","method":"GET","path":"/api/courts/99/availability","status":400,"durationMs":0} {"time":"2026-11-02T06:15:17.508Z","level":"info","msg":"request","method":"GET","path":"/no-existe","status":404,"durationMs":0} {"time":"2026-11-02T06:15:17.512Z","level":"error","msg":"unhandled error","method":"GET","path":"/api/courts/%ZZ/availability","error":"URI malformed"} {"time":"2026-11-02T06:15:17.512Z","level":"info","msg":"request","method":"GET","path":"/api/courts/%ZZ/availability","status":500,"durationMs":0} {"time":"2026-11-02T06:15:17.516Z","level":"error","msg":"unhandled error","method":"GET","path":"/api/courts/%ZZ/availability","error":"URI malformed"} {"time":"2026-11-02T06:15:17.516Z","level":"info","msg":"request","method":"GET","path":"/api/courts/%ZZ/availability","status":500,"durationMs":0} {"time":"2026-11-02T06:15:17.521Z","level":"error","msg":"unhandled error","method":"GET","path":"/api/members/%ZZ/bookings","error":"URI malformed"} {"time":"2026-11-02T06:15:17.521Z","level":"info","msg":"request","method":"GET","path":"/api/members/%ZZ/bookings","status":500,"durationMs":0} {"time":"2026-11-02T06:15:17.523Z","level":"info","msg":"shutting down","signal":"SIGTERM"} {"time":"2026-11-02T06:15:17.523Z","level":"info","msg":"stopped"} make salio con 0