Ctrl K
ComunidadGuías…
GITHUB · ANALIZADO

calit

Calit es una alternativa a Calendly autoalojada y multiusuario construida con Quarkus sobre PostgreSQL.

Ficha actualizada 23 sept 2026, 4:27 · upstream 23 sept 2026, 4:25 · release v1.26.1

00

Qué es calit

Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.

Calit es una plataforma de agendamiento autoalojada y multiusuario construida sobre Quarkus, diseñada para reemplazar a Calendly sin depender de un modelo SaaS o de tarifas por asiento. Cada usuario opera su propia página de reservas individualizada en la URL /<username>/<slug>, con tipos de reuniones personalizables, gestión de disponibilidad por fecha, flujo de aprobación de reuniones y campos personalizados en el formulario de reserva. Los invitados seleccionan una hora disponible y reservan; las reservas pueden sincronizarse opcionalmente a Google Calendar (generando un enlace automático) y a correo electrónico para ambas partes involucradas.

La arquitectura se basa en un modelo N de réplicas stateless detrás de un load balancer, con toda la estado compartido almacenado en PostgreSQL. Esto permite escalar horizontalmente sin necesidad de migraciones complejas entre bases de datos. Las páginas son completamente server-rendered, lo que elimina la necesidad de JavaScript en el lado del cliente y reduce la carga sobre los navegadores.

El sistema soporta localización multilingüe (español, alemán e hebreo) y incluye herramientas de cumplimiento como exportación y borrado de datos para invitados, políticas de privacidad y términos de uso. También ofrece protección contra abuso de formularios públicos mediante Cloudflare Turnstile o ALTCHA, junto con un honeypot y un límite diario por correo electrónico.

La base de datos es PostgreSQL, la única soportada, sin fallbacks integrados. Se requiere un servidor SMTP funcional para enviar confirmaciones, recordatorios, notificaciones de cancelación y invitaciones a usuarios; en caso de fallo de envío, el sistema mantiene una cola duradera y reintentos con backoff. El dashboard del administrador muestra alertas cuando no se está recibiendo correo.

La aplicación soporta Java 25 como objetivo de compilación (con JDK 26 requerido para la construcción), utiliza Tailwind CSS vía Bun, y cuenta con un sistema de migraciones basado en Flyway. Incluye autenticación con OIDC/SAML y soporte para SSO.

CASOS DE USO
  • Agendar reuniones personalizadas por tipo sin depender de Calendly
  • Gestionar múltiples usuarios independientes con sus propias páginas de reservas
  • Automatizar la sincronización de citas a Google Calendar o correo electrónico
  • Implementar flujos de aprobación para reuniones antes de confirmar disponibilidad
  • Personalizar formularios de reserva con campos específicos por tipo de reunión
  • Gestionar usuarios administradores y roles dentro del sistema
  • Proteger formularios públicos contra abuso mediante Turnstile o ALTCHA
  • Soportar localización multilingüe (español, alemán, hebreo)
PUNTOS DESTACADOS
  • Arquitectura basada en Quarkus con PostgreSQL como única base de datos, permitiendo escalamiento horizontal sin migraciones
  • Renderizado server-side completo sin JavaScript en el lado del cliente, reduciendo la carga sobre navegadores y mejorando rendimiento
  • Sincronización opcional a Google Calendar con enlace automático y correo electrónico para ambas partes involucradas
  • Soporte de tenencia multiusuario con escopulación por usuario (passwords argon2id) y gestión de usuarios administradores
  • Protección contra abuso de formularios públicos mediante Cloudflare Turnstile o ALTCHA, junto con honeypot y límite diario por correo
  • Localización multilingüe soportada (español, alemán e hebreo)
  • Dashboard del administrador que muestra alertas en tiempo real sobre fallos de envío de correo
PRECAUCIONES
  • PostgreSQL es la única base de datos soportada; no hay fallbacks integrados
  • Se requiere un servidor SMTP funcional para enviar confirmaciones, recordatorios y notificaciones; sin SMTP el sistema funciona pero las reservas fallan
  • La sincronización a Google Calendar es opcional y puede generar enlaces duplicados si se activa en múltiples usuarios
  • El sistema no incluye autenticación de dos factores (2FA) nativa
  • No hay soporte para calendarios compartidos o reuniones con invitados externos
  • La protección contra abuso depende del proveedor de CDN (Turnstile/ALTCHA), lo que puede requerir configuración adicional
  • Las migraciones se realizan mediante Flyway, lo que limita la capacidad de cambiar esquema sin downtime
01

Perfil de infraestructura

Estimación inicial derivada del repositorio y de los servicios detectados.

CPU2 vCPUrecomendación inicial
MEMORIA2 GBRAM estimada
DISCO20 GBalmacenamiento base
COMPLEJIDADmediumnivel de operación
02

Despliegue detectado

Qué señales reales de instalación hemos encontrado.

Listo para automatizar

Para desplegar calit, se recomienda usar Docker Compose con un archivo .env configurado al menos con DB_PASSWORD, SESSION_ENCRYPTION_KEY, APP_BASE_URL y variables MAIL_* para el SMTP. Se ejecuta docker compose up -d tras una pull del image ghcr.io/asm0dey/calit (tags: latest o 1.26.1). La primera vez que se inicie la aplicación, Flyway migrará las tablas de base de datos. Para producción, se recomienda usar un contenedor con escalabilidad horizontal y un load balancer en el nivel de aplicación. Se debe configurar un reverse proxy (Nginx o Traefik) para manejar SSL/TLS y redirigir al puerto 8080. El servicio SMTP debe configurarse con un servidor que soporte TLS, como SendGrid, Mailgun o un servidor propio con DKIM/SPF. Para la sincronización a Google Calendar, se recomienda configurar OAuth2 en el lado del cliente (calit) y Google Workspace para evitar enlaces duplicados. Se recomienda m

✓Dockerfile
✓Compose
✓One-click
03

Stack y dependencias

Componentes inferidos a partir de manifests, configuración y documentación.

FRAMEWORKS
Node.js
SERVICIOS
PostgreSQL
BASES DE DATOS
PostgreSQL
PUERTOS
8080
05

Puede sustituir a

Relaciones detectadas por el análisis del repositorio y su categoría.

06

Experiencia real de la comunidad

Ayuda a contrastar la estimación automática con instalaciones reales.

Todavía no hay datos comunitarios para este proyecto.