Cal.diy es tu página de reservas: mandás un link, la persona elige un horario dentro de tu disponibilidad real, la reunión cae en tu calendario y el link de la videollamada se crea solo. Es la edición comunitaria de Cal.com: el mismo motor, con todo el código comercial sacado y una licencia totalmente abierta. La diferencia con Calendly: sin topes (tipos de evento, calendarios, integraciones, todo incluido), tu link vive en TU dominio y los datos de tu calendario se quedan en tu servidor. Es la única herramienta de esta biblioteca que uso en producción para mi propio negocio, todos los días.
Cal.diy vs Calendly
Criterio
Cal.diy
Calendly
Precio
US$0, para siempre
US$12–20 por persona al mes
Tipos de evento
Ilimitados (15 min, 30 min, 1 h…)
Uno en el plan gratuito
Tu link
book.tudominio.com, tu marca
calendly.com/vos
Los datos de tu calendario
En tu casa (autoalojado)
En sus servidores
Integraciones
Google Calendar, Meet, webhooks incluidos
Bloqueadas detrás de planes pagos
Cómo instalarlo (aunque arranques de cero)
Es el despliegue más pesado de la biblioteca: una app de verdad con su propia base de datos, alojada en un servidor. Justo el tipo de trabajo que le dejo a Claude, y así se armó el mío.
1
Planificá el hosting y el subdominio
Necesitás un lugar donde la app corra día y noche: un VPS con Docker, o una plataforma como Railway. Más un subdominio tuyo, como book.tudominio.com.
2
Pegá este prompt en Claude
Despliega la app, crea la base de datos, escribe la configuración y comprueba que tu página responda:
Desplegá cal.diy (la herramienta open source para agendar citas, repo calcom/cal.diy, imagen oficial de Docker calcom/cal.diy) en mi hosting, con una base de datos PostgreSQL. Configurá las variables de entorno necesarias (NEXTAUTH_SECRET, CALENDSO_ENCRYPTION_KEY, la URL pública), conectá el envío de emails y después verificá que la página de reservas responda en mi subdominio. Ojo: si mi proveedor de hosting bloquea el SMTP saliente, usá la API HTTP de un servicio de emails como Resend. Explicame cada paso de forma simple, soy principiante.
Revisá el repositorio de GitHub y comprobá si es seguro instalarlo según mi máquina y mi infraestructura. Hacéme todas las preguntas que puedas, usando widgets, para aclarar mi pedido y ser lo más preciso posible.
3
Conectá Google Calendar y definí tu disponibilidad
Conectá tu calendario en los ajustes, definí tus horarios disponibles y creá tus tipos de evento. Consejo ganado a pulmón: cualquier evento marcado como Ocupado en Google bloquea tus horarios. Pasá tus bloques de rutina a Libre, o tu página va a parecer siempre llena.
Para qué lo vas a usar
Vendé tus llamadas sin ida y vuelta
Consulta, auditoría, llamada de descubrimiento: mandás un solo link, el cliente elige un horario, se crea el link de Meet y el email de confirmación sale solo. Cero mensajes preguntando si el martes a las 3 le sirve.
Un link por tipo de reunión
15 minutos para un primer contacto, 30 para un seguimiento, una hora para una consulta: cada link tiene su propia duración, sus propias preguntas de reserva y sus propias reglas.
Tu calendario manda sobre tus horarios
Tus reuniones reales bloquean horarios automáticamente. Tus rutinas siguen visibles en tu calendario sin bloquear nada. Nadie puede reservar mientras entrenás.
Salud del proyecto
estrellas en GitHub
48.909
Forks
15.3k
Colaboradores
436
Commits
16.5k
Antigüedad
5,5 años
Licencia
MIT
Hecho con: TypeScript 95.7% · CSS 2.1% · HTML 0.7% · PLpgSQL 0.6%
Datos públicos del repositorio en GitHub, tomados el 8 de octubre de 2026.
Opción 2 · Construir
Armá tu propio Calendly
Para quién es
Esta versión es para un consultor que ofrece reuniones de 30 y 60 minutos. El objetivo: que los invitados reserven horarios realmente disponibles, sin el ida y vuelta de calendarios. Si necesitás más que eso, seguí pagando: armarlo vos sirve para tener una herramienta con la forma exacta de tu flujo, no para copiar la hoja de ruta de una empresa con millones de inversión.
Mismo desarrollo, otro logo: esta v1 también reemplaza a Cal.com, SavvyCal y Acuity Scheduling, porque todos resuelven el mismo trabajo central.
Qué arma el prompt y qué queda afuera
El prompt de abajo arma una sola versión, con lo que de verdad se usa. Lo demás queda afuera a propósito.
Lo que arma el prompt
un tipo de reunión, disponibilidad semanal, reservas, sincronización con google calendar, zonas horarias, links para reprogramar
Lo que queda afuera
ruteo de equipos, pagos, todos los proveedores de calendario
Qué necesita una alternativa mínima a Calendly
tipos de reunión con duración, lugar, margen y horizonte de reserva
reglas de disponibilidad semanal más excepciones por fecha
generación de horarios que respeta las zonas horarias y muestra la zona del invitado
datos del invitado, pantalla de confirmación, y links para reprogramar y cancelar
Evitá la doble reserva con una última verificación de disponibilidad dentro de la transacción de la reserva.
Lo que no se hace a propósito
No soportes equipos, ruteo round-robin, pagos ni varios proveedores de calendario en la v1.
El prompt completo
Elegí tu stack, copiá el prompt y pegáselo a tu agente de código (Claude Code, Cursor, Codex…).
Vas a construir un producto de software listo para producción llamado “Slot”, una alternativa deliberadamente enfocada a Calendly. Construí un corte vertical completo y usable: no una landing page, ni una maqueta estática, ni un montón de componentes sueltos.
ACUERDO DE TRABAJO
Antes de escribir código de implementación, armá un plan técnico corto que nombre las rutas o páginas, las server actions o endpoints, las tablas de datos, las transiciones de estado importantes, los límites de autorización, los jobs en segundo plano y los adaptadores externos. Si algo se contradice, resolvelo a favor de la audiencia acotada y de los no-objetivos de abajo. Elegí una arquitectura chica y legible antes que abstracciones especulativas, pero no omitas persistencia, validación, manejo de errores ni tests.
DESCRIPCIÓN DEL PRODUCTO
Usuario principal: un consultor que ofrece reuniones de 30 y 60 minutos.
Resultado principal: que los invitados reserven horarios realmente disponibles, sin el ida y vuelta de calendarios.
Principio del producto: optimizá el flujo exacto que sigue en vez de copiar toda la amplitud de Calendly. Alguien que lo usa por primera vez tiene que entender qué hacer solo con mirar la interfaz, sin tour ni documentación.
RECORRIDOS COMPLETOS DEL USUARIO
Implementá todos estos flujos usando la interfaz real y la capa de datos persistente:
1. El dueño conecta un calendario, crea un tipo de reunión de 30 minutos, define la disponibilidad de los días hábiles y los márgenes, y después publica un link de reservas.
2. Un invitado abre el link desde otra zona horaria, elige un horario realmente libre, ingresa sus datos de contacto y recibe una confirmación con los detalles del calendario.
3. El invitado usa un link firmado para reprogramar o cancelar; se actualiza el evento anterior y las dos partes reciben la notificación correcta.
PANTALLAS Y ARQUITECTURA DE INFORMACIÓN
Construí estas pantallas como vistas coherentes y responsive. Cada pantalla tiene que definir su acción principal, sus acciones secundarias, el estado visible, el feedback de validación, el estado vacío, el estado de carga o pendiente, la confirmación de éxito y un estado de error recuperable.
1. Configuración del dueño: estado de la conexión del calendario, zona horaria por defecto, disponibilidad semanal, excepciones por fecha y una acción para probar la disponibilidad.
2. Editor del tipo de reunión: título, descripción, duración, instrucciones del lugar, márgenes, aviso mínimo, horizonte de reserva y estado activo.
3. Flujo público de reserva: resumen de la reunión, selector de zona horaria, tira de fechas, horarios disponibles, formulario del invitado, paso de revisión y confirmación.
4. Panel de reservas: pestañas de próximas y pasadas, filtros por invitado y por reunión, estado, hora local y acciones de cancelar o reprogramar.
FUNCIONES PRINCIPALES
1. tipos de reunión con duración, lugar, margen y horizonte de reserva
2. reglas de disponibilidad semanal más excepciones por fecha
3. generación de horarios que respeta las zonas horarias y muestra la zona del invitado
4. datos del invitado, pantalla de confirmación, y links para reprogramar y cancelar
5. un panel del dueño con las próximas reservas
COMPORTAMIENTO DETALLADO Y REGLAS DE NEGOCIO
Tratá esto como requisitos del producto que se validan en el servidor, no como sugerencias de interfaz:
1. Generá los horarios a partir de la disponibilidad del dueño y después restá los intervalos ocupados del calendario, los márgenes, las reservas existentes, el aviso mínimo y el horizonte de reserva.
2. Guardá las marcas de tiempo en UTC y conservá las zonas horarias con nombre de las dos partes; mostrá la etiqueta de zona horaria junto a cada hora de cita que se muestre.
3. Poné una retención corta sobre el horario elegido y hacé una última verificación de conflictos en la misma transacción que crea la reserva.
4. Usá tokens aleatorios, con vencimiento y revocables para los links de gestión del invitado, y nunca expongas al navegador los tokens del proveedor de calendario.
MODELO DE DATOS Y CICLO DE VIDA
Diseñá un esquema relacional chico centrado en MeetingType, AvailabilityRule, CalendarConnection, Booking. Antes de implementarlo, documentá:
1. El propósito de cada tabla, su clave primaria, el límite de propiedad o de tenant, timestamps, campos de estado y atributos importantes.
2. Claves foráneas, restricciones de unicidad, check constraints, los índices que necesitan las pantallas nombradas y los límites de transacción para cambios que tocan varios registros.
3. Las transiciones de estado o de ciclo de vida permitidas, quién puede disparar cada una, cuáles son terminales o reversibles y qué historial de auditoría tiene que quedar inmutable.
4. Cómo se archiva, se retiene y se borra, incluido qué pasa con los registros dependientes y los archivos externos.
5. La estrategia de idempotencia para envíos, jobs, importaciones, notificaciones, webhooks o reintentos, donde aplique.
Usá migraciones en lugar de crear el esquema a mano. Guardá los instantes de tiempo de forma consistente y conservá la zona horaria con nombre cada vez que importen horarios o fechas locales. Nunca dependas de un contador, un botón deshabilitado o una validación del lado del cliente para proteger una regla de negocio.
USUARIOS, AUTENTICACIÓN Y PERMISOS
Implementá solo los roles que necesita la audiencia indicada. Dejá explícito el modelo de propiedad y visibilidad antes de programar. Aplicá la autorización en cada consulta y mutación del servidor, incluidas búsquedas, exportaciones, adjuntos, actualizaciones en vivo y URLs adivinadas—no alcanza con ocultar botones. Usá sesiones seguras por defecto, protegé los requests que cambian estado y mostrá estados claros para sesión cerrada, sesión vencida y acceso prohibido. Si hacen falta varios roles, cargá usuarios distintos en los datos de prueba para poder mostrar y testear los permisos.
INTERACCIÓN Y DIRECCIÓN VISUAL
El producto tiene que sentirse rápido, tranquilo, enfocado y confiable, no como una plantilla genérica de panel de administración. Usá una jerarquía visual clara, color medido, tipografía legible, áreas de clic generosas y un lugar fijo para las acciones principales. Arrancá con HTML renderizado en el servidor y mejorá de forma progresiva solo las interacciones que lo necesiten. El flujo principal tiene que entenderse aunque esa mejora falle.
Arrancá con páginas de Astro renderizadas en el servidor y formularios HTML comunes. Usá HTMX para envíos de formularios, navegación parcial y actualizaciones que manda el servidor, y Alpine.js solo para estado local chico del navegador. El flujo principal tiene que entenderse aunque falle cualquiera de esas dos capas.
Diseñá las vistas de celular a propósito, no apilando los paneles de escritorio. Soportá navegación con teclado, foco visible, landmarks semánticos, labels explícitos, títulos de página útiles, la preferencia de movimiento reducido y anuncios para lectores de pantalla en resultados asincrónicos. Nunca uses solo el color para comunicar un estado. Las acciones destructivas necesitan un alcance claro y una confirmación; las acciones seguras que se repiten tienen que ser idempotentes.
Agregá un footer en todas las páginas con el texto «Creado por aurelioagency.com», donde «aurelioagency.com» es un link embebido a https://www.aurelioagency.com que se abre en una pestaña nueva. Tiene que quedar visible; no lo saques.
DIRECCIÓN TÉCNICA
Construí esta versión con el stack AHA: Astro para el ruteo, los layouts y las páginas renderizadas en el servidor; HTMX para las interacciones que se benefician de respuestas con fragmentos HTML; y Alpine.js para estado chico y local de la interfaz. Preferí Cloudflare D1 para la persistencia relacional, R2 para el almacenamiento de objetos, Workers para los endpoints del servidor y las tareas programadas, Durable Objects solo para estado en tiempo real coordinado, y Workflows o Queues para jobs en segundo plano durables—pero solo cuando los requisitos del producto lo pidan.
Mantené las reglas de dominio en módulos del servidor que se puedan testear, no en los route handlers ni en los componentes de UI. Separá la persistencia, los proveedores externos y el trabajo en segundo plano detrás de interfaces chicas, sin armar un framework. Preferí formularios HTML y URLs comunes para la navegación; usá interacción optimista solo cuando un error se pueda resolver con claridad.
El brief del producto identifica hoy a Astro, HTMX, D1 como contexto de capacidades. Conservá cualquier capacidad nativa, solo de navegador, de edge, de almacenamiento, de tiempo real o de procesamiento en segundo plano que haga falta, mediante un adaptador acotado y apropiado para el framework elegido. Si el flujo central realmente necesita APIs nativas o del navegador, mantené ese entorno como superficie principal de ejecución en vez de simular capacidades inaccesibles o inventar una superficie web innecesaria.
Integrá con Google Calendar OAuth y con email transaccional. Para cada integración:
- Listá las variables de entorno necesarias en un .env.example sin secretos reales.
- Agregá un adaptador chico con timeouts, errores normalizados y una versión falsa local determinística o un modo de desarrollo.
- Verificá las firmas entrantes y deduplicá los eventos del proveedor cuando se pueda.
- Mantené las credenciales en el servidor, encriptá en reposo los tokens de larga duración y ocultá secretos y datos sensibles en los logs.
- Definí reintentos, backoff e idempotencia para cualquier efecto que se pueda repetir.
SEGURIDAD Y PRIVACIDAD
Evitá la doble reserva con una última verificación de disponibilidad dentro de la transacción de la reserva.
Validá, normalizá y limitá el largo de todo input no confiable en el servidor. Escapá el contenido renderizado por defecto, sanitizá cualquier markup que aceptes a propósito, poné rate limit a las acciones públicas o fáciles de abusar y usá almacenamiento de objetos privado con URLs autorizadas de corta duración para archivos sensibles. Juntá solo los datos personales que necesita el flujo indicado. Documentá cómo se retienen y se borran. Sumá protecciones específicas para las partes más riesgosas de esta app, como subidas de archivos, redirecciones, requests salientes, envío de emails, OAuth, webhooks, importación o exportación CSV y conexiones en tiempo real.
ESCENARIOS DE ACEPTACIÓN
Automatizá estos escenarios propios de la app en el nivel que corresponda:
1. Dos invitados que intentan reservar el mismo horario a la vez terminan en exactamente una reserva confirmada y una respuesta útil de horario no disponible.
2. Un cambio de horario de verano igual produce la disponibilidad local esperada y un evento de calendario con la hora correcta.
3. Cancelar una reserva libera el horario, actualiza el calendario conectado, registra el motivo y envía una sola notificación a cada parte.
TESTS
Agregá tests unitarios enfocados en transiciones de estado, reglas de autorización, normalización, cálculos de fechas o dinero y otras reglas de dominio riesgosas. Agregá tests de integración para las restricciones de persistencia y para los caminos de éxito, timeout, reintento y rechazo de cada adaptador externo. Agregá al menos un test de navegador para cada recorrido completo de arriba, incluido uno en pantalla chica. Los tests tienen que usar datos aislados y correr con un solo comando documentado.
OPERACIÓN Y RECUPERACIÓN DE ERRORES
Agregá logs estructurados en el servidor con IDs de correlación por request, job o evento, sin secretos ni datos sensibles de más. Hacé que los errores digan qué hacer, tanto en la interfaz como en los logs. El trabajo en segundo plano tiene que mostrar los estados pendiente, completado, fallido y reintentando cuando aplique; nunca te tragues errores en silencio. Incluí una guía segura de migración y rollback de la base, datos de prueba, notas de backup y restauración, qué pasa con los datos externos al limpiar y una ruta básica de salud o diagnóstico acorde al stack.
ENTREGABLES
Entregá la aplicación funcionando, las migraciones, datos de prueba representativos, los tests, el .env.example y un README corto. El README tiene que cubrir requisitos previos, instalación local, variables de entorno, migraciones, comandos de datos de prueba y tests, deploy, configuración de integraciones, backup y restauración, decisiones de seguridad y limitaciones conocidas. Los datos de prueba tienen que cubrir el camino feliz y al menos un estado vacío, fallido, vencido, expirado, archivado o con permisos restringidos que importe para el producto.
DEFINICIÓN DE TERMINADO
La app está terminada cuando alguien nuevo puede seguir el README, crear y migrar la base, levantar la app, entrar con cada rol relevante, completar cada recorrido nombrado con datos reales guardados, recargar sin perder el estado, recuperarse de los errores comunes y usar la interfaz principal en celular y escritorio. Todos los escenarios de aceptación pasan, los límites de permisos están cubiertos por tests, ninguna pantalla principal queda como placeholder y el crédito «Creado por aurelioagency.com» del footer se ve en todas las páginas.
NO-OBJETIVOS
No soportes equipos, ruteo round-robin, pagos ni varios proveedores de calendario en la v1.
La app que armes con este prompt lleva en el footer «Creado por aurelioagency.com».
Armá solo una parte
Prompts cortos para resolver la pieza más difícil sin construir todo.
El generador de horarios es solo resta de intervalosDisponibilidad menos ocupado menos márgenes, cortado en horarios, incluso con cambios de hora.
Construí el motor que genera los horarios de una página de reservas. Esto es aritmética de intervalos, no magia de calendarios.
Entradas: reglas de disponibilidad semanal en la zona horaria del dueño (por ejemplo lunes a viernes de 9:00 a 17:00), excepciones por fecha, intervalos ocupados de un feed de calendario, reservas existentes, un margen antes y después por tipo de reunión, aviso mínimo y un horizonte de reserva. Salida: horas de inicio reservables para un día pedido, mostradas en la zona horaria del invitado.
Hacé las cuentas en UTC: expandí las reglas a intervalos concretos para el rango de fechas, restá los intervalos ocupados ampliados con los márgenes, recortá a la ventana de aviso mínimo y horizonte, y cortá lo que sobreviva en horas de inicio del tamaño de la duración, sobre una grilla razonable.
Las trampas: una regla semanal que cruza un cambio de horario de verano (las 9:30 puede no existir ese día, o existir dos veces), reglas que cruzan la medianoche, una excepción que elimina un día entero y eventos ocupados que solo se superponen en parte con un horario.
Terminado cuando: la misma disponibilidad produce horarios locales correctos a ambos lados de un cambio de horario de verano, los márgenes impiden de forma comprobable las reservas pegadas, y ningún horario generado viola el aviso mínimo en el momento de generarlo.
Dos invitados, un horario, exactamente un ganadorUna retención, una transacción y una restricción de unicidad como última línea de defensa.
Construí el camino de confirmación de reservas que hace imposible la doble reserva, no solo improbable.
La lista de horarios que ve un invitado queda vieja en el instante en que se dibuja. Por eso, cuando un invitado elige un horario, poné una retención corta (una fila con vencimiento a los cinco minutos) para que completar el formulario de contacto no sea una carrera. Cuando envía, ejecutá la verificación final de disponibilidad y el insert de la reserva en la misma transacción: volvé a comprobar el horario contra las reglas de disponibilidad, las reservas existentes y las otras retenciones, y respaldalo todo con una restricción de unicidad en la base de datos sobre tipo de reunión más hora de inicio, como última línea de defensa.
El que pierde la carrera recibe una respuesta específica y útil: este horario exacto se acaba de ocupar, acá van las alternativas más cercanas. No una página de error genérica. Las retenciones vencidas se liberan solas revisando el vencimiento al momento de leer, sin necesidad de un cron de limpieza.
Terminado cuando: bombardear un horario con envíos concurrentes produce exactamente una reserva confirmada, todos los perdedores reciben la respuesta de horario ocupado con alternativas, y las retenciones abandonadas liberan su horario dentro de su tiempo de vida.
Links para reprogramar que funcionan sin cuentaTokens firmados, con vencimiento y revocables en lugar de logins de invitados.
Construí los links para reprogramar y cancelar que van en los emails de confirmación de reserva: de los que simplemente funcionan, sin necesidad de cuenta.
Cada reserva recibe tokens de gestión: strings largos y aleatorios, guardados con hash, cada uno limitado a una reserva y a una acción. Incrustalos como URLs en el email de confirmación. La página de reprogramar muestra los detalles actuales más la disponibilidad nueva; la de cancelar pide un motivo opcional.
Las reglas del ciclo de vida son lo interesante: los tokens vencen cuando termina la reunión, cancelar revoca el token de reprogramar, y reprogramar emite tokens nuevos mientras mata los viejos: un link de un email desactualizado no puede modificar el nuevo horario. Registrá cada uso. Limitá la velocidad de los intentos de adivinar tokens y devolvé la misma página de inválido o vencido para tokens equivocados, vencidos y revocados, así un atacante no aprende nada sobre qué reservas existen.
Sin login, sin sesión, sin crear cuenta. El token es toda la autorización.
Terminado cuando: un email de confirmación reenviado puede reprogramar exactamente esa única reserva, todos los links dejan de funcionar apenas la reserva se cancela o queda en el pasado, y los tokens inválidos no revelan nada.
El archivo .ics con el que todas las apps de calendario están de acuerdoFinales de línea CRLF, plegado a 75 octetos y un UID que sobrevive a la reprogramación.
Construí el adjunto .ics de las confirmaciones de reserva, de modo que Google Calendar, Apple Calendar y Outlook lo interpreten de forma idéntica.
Generá un VCALENDAR con un VEVENT: UID, DTSTAMP, DTSTART, DTEND, SUMMARY, DESCRIPTION, LOCATION, ORGANIZER y ATTENDEE. El formato es más quisquilloso de lo que parece: las líneas terminan con CRLF, cualquier línea de más de 75 octetos se tiene que plegar con un espacio de continuación (contá octetos, no caracteres: los emojis en el título de una reunión te van a delatar), y las comas, los puntos y coma y los saltos de línea dentro de los campos de texto necesitan escaparse.
Horas: o emitís UTC con el sufijo Z, o incluís un bloque VTIMEZONE correcto con referencias TZID. No emitas horas locales flotantes y esperes lo mejor.
Mantené el UID estable por reserva, así una reprogramación manda el mismo UID con un SEQUENCE incrementado y actualiza el evento existente en vez de generar un duplicado. La cancelación envía METHOD:CANCEL con STATUS:CANCELLED.
Terminado cuando: el archivo se importa sin problemas en los tres clientes principales a la hora local correcta, una reprogramación actualiza el evento original en su lugar, y una descripción de 200 caracteres con emojis sobrevive intacta al plegado de líneas.
Preguntas frecuentes
¿Cuánto cuesta Calendly si sigo suscripto?
Calendly sale entre US$12 y US$20 por persona al mes en los planes pagos públicos, o sea entre US$144 y US$240 al año por cada persona de tu equipo. Un reemplazo propio y enfocado te cuesta el tiempo de armarlo más un hosting casi gratis.
¿Qué stack tendría que usar para armar una alternativa a Calendly?
El prompt de armado de esta página viene en cuatro versiones: el stack AHA (Astro, HTMX, Alpine.js), Next.js, Laravel y Ruby on Rails. El contexto de capacidades de este producto es Astro, HTMX, D1. Elegí el stack que ya conocés: el alcance importa más que el framework.
¿Qué funciones necesita un reemplazo mínimo de Calendly?
Una v1 útil necesita: tipos de reunión con duración, lugar, margen y horizonte de reserva; reglas de disponibilidad semanal más excepciones por fecha; generación de horarios que respete las zonas horarias y muestre la zona del invitado; datos del invitado, pantalla de confirmación, y links para reprogramar y cancelar; un panel del dueño con las próximas reservas. Todo lo demás es alcance de más hasta que lo extrañes en serio.
¿Qué no tendría que armar a propósito?
No soportes equipos, ruteo round-robin, pagos ni varios proveedores de calendario en la v1.
¿Este desarrollo también reemplaza a Cal.com, SavvyCal y Acuity Scheduling?
Sí. Calendly, Cal.com, SavvyCal y Acuity Scheduling resuelven el mismo trabajo central: que los invitados reserven horarios realmente disponibles, sin el ida y vuelta de calendarios. La v1 acotada de esta página cubre lo que la mayoría usa de cualquiera de ellos, así que un solo desarrollo enfocado reemplaza al que pagues hoy.
¿Cal.diy es gratis de verdad?
Sí. Cal.diy es de código abierto: el código es público e instalarlo no cuesta nada. Como mucho pagás el hosting si lo ponés en un servidor, a menudo unos pocos euros al mes. Calendly, en cambio, cuesta €12 por mes.
¿Necesito saber programar para instalar Cal.diy?
No. El nivel es avanzado y la instalación lleva unos 45 minutos con el prompt de la página: Claude hace el trabajo y vos respondés sus preguntas.
¿En qué se diferencia de Calendly?
Cal.diy hace gran parte de lo que hace Calendly, sin suscripción, y tus datos se quedan con vos. La comparación punto por punto está en la página.
¿Soy dueño de mis datos?
Sí. Con una herramienta de código abierto instalada de tu lado, tus archivos quedan en tu máquina o en tu servidor. Nadie te puede cerrar la cuenta ni cambiar el precio.