Agendamiento bidireccional en tiempo casi real: tu agenda de Zoho bloquea tu página pública, y las reservas de clientes vuelven a Zoho con todos los detalles. Todo sobre planes gratuitos.
sync.py, ~30s)push_bookings.py, ~30s)Ruta SvelteKit en el sitio DHA (Vercel) que embebe la página de Koalendar en un iframe, con marca DHA, idioma EN/ES por ruta.
Plan free. Página de reserva, disponibilidad, links de Google Meet automáticos, emails de confirmación. Escribe reservas en Google.
roberto.aguirre@digitalhubassist.ai — el punto central. Koalendar lee (conflictos) y escribe (reservas) aquí.
Donde vives tu día a día. Crear/borrar reuniones aquí controla tu disponibilidad. Recibe las reservas en el calendario "Reservas".
~/bin/zoho-gcal-sync/ — scripts Python en cron (~30s). El motor que conecta todo.
Koalendar free · Google Meet free · Zoho free · Google/Zoho API free · servidor propio. Sin cargos adicionales.
| Script | Qué hace | Dirección |
|---|---|---|
sync.py | Lee el iCal privado de Zoho → espeja eventos "ocupado" en Google (tag zohoSync). Crea/actualiza/borra. Así Koalendar respeta tu agenda. | Zoho → Google |
push_bookings.py | Lee reservas reales de Google → las crea en el calendario Zoho "Reservas" vía API, con nombre, email del invitado, links de cancelar/reprogramar y el link de Meet. | Google → Zoho |
block.py | Bloqueo manual a pedido: add (día), range (rango), open (día salvo franjas), remove (reabrir). Tag manualBlock. | Manual |
bookings_ics.py | (legacy — Opción B, reemplazado por push_bookings.py) | — |
ztoken.py | Access token de Zoho con caché (~1h) para no golpear el rate-limit del OAuth. | Util |
run.sh | Wrapper del cron: corre sync.py + push_bookings.py 2× por minuto (~cada 30s). | Cron |
| Elemento | Valor |
|---|---|
| Link público | digitalhubassist.ai/agendar |
| Booking page Koalendar | koalendar.com/e/meet-with-dha |
| Cuenta Google (hub) | roberto.aguirre@digitalhubassist.ai |
| Zoho — calendar UID principal | 60c74f6e…9335e62 |
| Zoho — calendario "Reservas" UID | dbecef54…974f8a3 |
| Motor | ~/bin/zoho-gcal-sync/ (Hetzner) · cron cada minuto → 2 pasadas |
| Auth | Google OAuth (proyecto Cloud de robertojavieraguirreg@gmail.com) · Zoho Self Client (DC .com) |
| Logs | ~/bin/zoho-gcal-sync/sync.log |