- Reservas: campos opcionales start_time/end_time (migración 011, schema natur_reservas)
+ toggle en el modal y detección de solapamiento por horario cuando ambas reservas
los tienen definidos. Permite encajar varios eventos el mismo día.
- Calendario mensual y anual ahora empiezan en lunes; vista móvil incluida.
- Celdas con varios eventos el mismo día se dividen en franjas horizontales
mostrando el horario; las reservas multi-día siguen ocupando la celda completa.
- Modal: reset de campos vacíos (client_name, fechas, factura) para evitar que el
nombre de la última reserva se filtre al crear una nueva.
- Emails: las modificaciones solo disparan correo cuando cambian fechas u horas;
el correo a Teneriffa pasa a formato reducido (solo fechas + propiedad) mientras
que Natur sigue recibiendo el detalle completo. Mantenimiento sin cambios.
- CLAUDE.md con guía operativa (schema natur_reservas, stack, convenciones).
- Scripts de preview/envío de emails para pruebas.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- email.ts: POST to N8N_EMAIL_WEBHOOK_URL instead of Resend API
- env.ts: replace RESEND_API_KEY with N8N_EMAIL_WEBHOOK_URL
- .env.example: document new env var
- Add n8n workflow JSON (Webhook -> Gmail -> Respond) ready to import
- packages/shared: tsconfig adds outDir/declaration, package.json adds build script
- apps/api/tsconfig.json: paths now point to shared/dist (.d.ts) instead of source,
resolves TS6059 rootDir conflict
- apps/api/src/routes/{health,notifications,users}.ts: explicit Router type annotation
to fix TS2742 portable type inference
- apps/api/src/events/handler.ts: cast via 'as unknown as' to satisfy TS2352
- apps/api/Dockerfile: build shared package before api