Produtividade

Pare de pagar o Calendly

Suas regras de disponibilidade, uma página de reservas agradável.

O Calendly custa US$12–20 por pessoa / mês, ou seja, US$144–240 por ano. Você tem dois caminhos:

Opção 1 · Instalar

Instale o Cal.diy grátis

O Cal.diy é a sua página de reservas: você envia um link, a pessoa escolhe um horário dentro da sua disponibilidade real, a reunião cai no seu calendário e o link da videochamada é criado automaticamente. É a edição da comunidade do Cal.com: o mesmo motor, com todo o código comercial removido e uma licença totalmente aberta. A diferença para o Calendly: sem limites (tipos de evento, calendários, integrações, tudo incluído), o seu link fica no SEU domínio e os dados do seu calendário ficam no seu servidor. É a única ferramenta desta biblioteca que eu uso em produção no meu próprio negócio, todos os dias.

Cal.diy vs Calendly

CritérioCal.diyCalendly
PreçoUS$0, para sempreUS$12–20 por pessoa por mês
Tipos de eventoIlimitados (15 min, 30 min, 1 h…)Um no plano gratuito
Seu linkbook.seudominio.com, a sua marcacalendly.com/voce
Os dados do seu calendárioNa sua casa (hospedagem própria)Nos servidores deles
IntegraçõesGoogle Calendar, Meet, webhooks incluídosTravadas atrás de planos pagos

Como instalar (mesmo começando do zero)

É a instalação mais pesada da biblioteca: um app de verdade com banco de dados próprio, hospedado em um servidor. Exatamente o tipo de trabalho que eu entrego ao Claude, e foi assim que o meu foi montado.

  1. 1

    Planeje a hospedagem e o subdomínio

    Você precisa de um lugar para o app rodar dia e noite: um VPS com Docker, ou uma plataforma como o Railway. Mais um subdomínio seu, como book.seudominio.com.

  2. 2

    Cole este prompt no Claude

    Ele faz o deploy do app, cria o banco de dados, escreve a configuração e confere se a sua página responde:

    Faça o deploy do cal.diy (a ferramenta open source de agendamento de compromissos, repositório calcom/cal.diy, imagem oficial do Docker calcom/cal.diy) na minha hospedagem, com um banco de dados PostgreSQL. Configure as variáveis de ambiente necessárias (NEXTAUTH_SECRET, CALENDSO_ENCRYPTION_KEY, a URL pública), configure o envio de emails e depois verifique se a página de reservas responde no meu subdomínio. Atenção: se a minha hospedagem bloquear o SMTP de saída, use a API HTTP de um serviço de emails como o Resend. Me explique cada passo de forma simples, sou iniciante.
    
    Revise o repositório do GitHub e verifique se é seguro instalar, considerando a minha máquina e a minha infraestrutura. Me faça o máximo de perguntas possível, usando widgets, para esclarecer o meu pedido e ser o mais preciso que puder.
  3. 3

    Conecte o Google Calendar e defina a sua disponibilidade

    Conecte o seu calendário nas configurações, defina os seus horários livres e crie os seus tipos de evento. Dica aprendida na marra: qualquer evento marcado como Ocupado no Google bloqueia os seus horários. Passe os seus blocos de rotina para Livre, senão a sua página vai parecer sempre lotada.

Para que você vai usar

Venda as suas chamadas sem troca de mensagens

Consulta, auditoria, chamada de descoberta: você envia um único link, o cliente escolhe um horário, o link do Meet é criado e o email de confirmação sai sozinho. Zero mensagens perguntando se terça às 15h funciona.

Um link por tipo de reunião

15 minutos para um primeiro contato, 30 para um acompanhamento, uma hora para uma consulta: cada link tem a sua própria duração, as suas próprias perguntas de reserva e as suas próprias regras.

Seu calendário manda nos seus horários

As suas reuniões reais bloqueiam horários automaticamente. As suas rotinas continuam visíveis no calendário sem bloquear nada. Ninguém consegue reservar durante o seu treino.

Saúde do projeto

estrelas no GitHub
48.909
Forks
15.3k
Contribuidores
436
Commits
16.5k
Idade do projeto
5,5 anos
Licença
MIT

Feito com: TypeScript 95.7% · CSS 2.1% · HTML 0.7% · PLpgSQL 0.6%

Dados públicos do repositório no GitHub, coletados em 8 de outubro de 2026.

Opção 2 · Construir

Crie o seu próprio Calendly

Para quem é

Esta versão é para um consultor que oferece reuniões de 30 e 60 minutos. O objetivo: deixar os convidados reservarem horários realmente disponíveis, sem a troca interminável de agendas. Se você precisa de mais do que isso, continue pagando: criar por conta própria serve para ter uma ferramenta com o formato exato do seu fluxo, não para refazer o roadmap de uma empresa financiada por investidores.

Mesma construção, outro logo: esta v1 também substitui o Cal.com, o SavvyCal e o Acuity Scheduling, já que todos resolvem o mesmo trabalho central.

O que o prompt constrói e o que fica de fora

O prompt abaixo constrói uma única versão, com o que realmente se usa. O resto fica de fora de propósito.

O que o prompt constróium tipo de reunião, disponibilidade semanal, reservas, sincronização com google calendar, fusos horários, links para remarcar
O que fica de foraroteamento de equipes, pagamentos, todos os provedores de calendário

O que uma alternativa mínima ao Calendly precisa

  • tipos de reunião com duração, local, intervalo e horizonte de reserva
  • regras de disponibilidade semanal mais exceções por data
  • geração de horários que respeita os fusos horários e mostra o fuso do convidado
  • dados do convidado, tela de confirmação, e links para remarcar e cancelar
  • um painel do dono com as próximas reservas

Modelo de dados

MeetingType, AvailabilityRule, CalendarConnection, Booking

Integrações

Google Calendar OAuth, email transacional

Contexto de capacidades

Astro, HTMX, D1

A regra de ouro

Evite a reserva dupla com uma última verificação de disponibilidade dentro da transação da reserva.

O que fica de fora de propósito

Não suporte equipes, roteamento round-robin, pagamentos nem vários provedores de calendário na v1.

O prompt completo

Escolha o seu stack, copie o prompt e cole no seu agente de código (Claude Code, Cursor, Codex…).

Você vai construir um produto de software pronto para produção chamado “Slot”, uma alternativa deliberadamente focada ao Calendly. Construa uma fatia vertical completa e utilizável — não uma landing page, nem um mockup estático, nem um monte de componentes soltos.

ACORDO DE TRABALHO
Antes de escrever código de implementação, monte um plano técnico curto que nomeie as rotas ou páginas, as server actions ou endpoints, as tabelas de dados, as transições de estado importantes, os limites de autorização, os jobs em segundo plano e os adaptadores externos. Se algo se contradisser, resolva a favor do público restrito e dos não-objetivos abaixo. Prefira uma arquitetura pequena e legível a abstrações especulativas, mas não deixe de fora persistência, validação, tratamento de erros nem testes.

DESCRIÇÃO DO PRODUTO
Usuário principal: um consultor que oferece reuniões de 30 e 60 minutos.
Resultado principal: deixar os convidados reservarem horários realmente disponíveis, sem a troca interminável de agendas.
Princípio do produto: otimize o fluxo exato abaixo em vez de copiar toda a amplitude do Calendly. Quem usa pela primeira vez deve entender o que fazer só pela interface, sem tour nem documentação.

JORNADAS COMPLETAS DO USUÁRIO
Implemente todos estes fluxos pela interface real e pela camada de dados persistente:
1. O dono conecta um calendário, cria um tipo de reunião de 30 minutos, define a disponibilidade dos dias úteis e os intervalos, e então publica um link de reservas.
2. Um convidado abre o link de outro fuso horário, escolhe um horário realmente livre, informa seus dados de contato e recebe uma confirmação com os detalhes do calendário.
3. O convidado usa um link assinado para remarcar ou cancelar; o evento antigo é atualizado e as duas partes recebem a notificação correta.

TELAS E ARQUITETURA DE INFORMAÇÃO
Construa estas telas como visões coerentes e responsivas. Cada tela precisa definir sua ação principal, ações secundárias, status visível, feedback de validação, estado vazio, estado de carregamento ou pendente, confirmação de sucesso e um estado de erro recuperável.
1. Configuração do dono: status da conexão do calendário, fuso horário padrão, disponibilidade semanal, exceções por data e uma ação para testar a disponibilidade.
2. Editor do tipo de reunião: título, descrição, duração, instruções do local, intervalos, antecedência mínima, horizonte de reserva e estado ativo.
3. Fluxo público de reserva: resumo da reunião, seletor de fuso horário, faixa de datas, horários disponíveis, formulário do convidado, etapa de revisão e confirmação.
4. Painel de reservas: abas de próximas e passadas, filtros por convidado e por reunião, status, horário local e ações de cancelar ou remarcar.

FUNCIONALIDADES PRINCIPAIS
1. tipos de reunião com duração, local, intervalo e horizonte de reserva
2. regras de disponibilidade semanal mais exceções por data
3. geração de horários que respeita os fusos horários e mostra o fuso do convidado
4. dados do convidado, tela de confirmação, e links para remarcar e cancelar
5. um painel do dono com as próximas reservas

COMPORTAMENTO DETALHADO E REGRAS DE NEGÓCIO
Trate isto como requisitos do produto garantidos no servidor, não como sugestões de interface:
1. Gere os horários a partir da disponibilidade do dono e depois subtraia os intervalos ocupados do calendário, os intervalos entre reuniões, as reservas existentes, a antecedência mínima e o horizonte de reserva.
2. Armazene os carimbos de data e hora em UTC e mantenha os fusos horários nomeados das duas partes; mostre o rótulo do fuso horário ao lado de cada horário de compromisso exibido.
3. Coloque uma retenção curta no horário escolhido e faça uma última verificação de conflito na mesma transação que cria a reserva.
4. Use tokens aleatórios, com validade e revogáveis para os links de gerenciamento do convidado, e nunca exponha ao navegador os tokens do provedor de calendário.

MODELO DE DADOS E CICLO DE VIDA
Projete um esquema relacional pequeno centrado em MeetingType, AvailabilityRule, CalendarConnection, Booking. Antes de implementar, documente:
1. O propósito de cada tabela, sua chave primária, o limite de propriedade ou de tenant, timestamps, campos de status e atributos importantes.
2. Chaves estrangeiras, restrições de unicidade, check constraints, os índices que as telas citadas precisam e os limites de transação para mudanças que tocam vários registros.
3. As transições de estado ou de ciclo de vida permitidas, quem pode disparar cada uma, quais são terminais ou reversíveis e qual histórico de auditoria deve permanecer imutável.
4. Como arquivar, reter e apagar, incluindo o que acontece com registros dependentes e arquivos externos.
5. A estratégia de idempotência para envios, jobs, importações, notificações, webhooks ou novas tentativas, quando se aplicar.
Use migrações em vez de criar o esquema na mão. Armazene instantes de tempo de forma consistente e mantenha o fuso horário nomeado sempre que horários ou datas locais importarem. Nunca dependa de um contador, de um botão desabilitado ou de uma validação no cliente para proteger uma regra de negócio.

USUÁRIOS, AUTENTICAÇÃO E PERMISSÕES
Implemente apenas os papéis de que o público indicado precisa. Deixe explícito o modelo de propriedade e visibilidade antes de programar. Aplique a autorização em toda consulta e mutação no servidor, incluindo buscas, exportações, anexos, atualizações ao vivo e URLs adivinhadas—não basta esconder botões. Use sessões seguras por padrão, proteja requisições que mudam estado e ofereça estados claros de sessão encerrada, sessão expirada e acesso proibido. Quando houver vários papéis, crie usuários distintos nos dados de teste para mostrar e testar as permissões.

INTERAÇÃO E DIREÇÃO VISUAL
O produto deve parecer rápido, calmo, focado e confiável, e não um template genérico de painel administrativo. Use uma hierarquia visual clara, cores contidas, tipografia legível, áreas de clique generosas e um lugar fixo para as ações principais. Comece com HTML renderizado no servidor e melhore progressivamente só as interações que se beneficiam disso. O fluxo principal precisa continuar compreensível se essa melhoria falhar.

Comece com páginas Astro renderizadas no servidor e formulários HTML comuns. Use HTMX para envios de formulário, navegação parcial e atualizações vindas do servidor, e Alpine.js só para pequenos estados locais do navegador. O fluxo principal precisa continuar compreensível se qualquer uma dessas camadas falhar.

Projete os layouts para celular de propósito, em vez de só empilhar os painéis do desktop. Ofereça navegação por teclado, foco visível, landmarks semânticos, labels explícitos, títulos de página úteis, a preferência de movimento reduzido e anúncios para leitores de tela em resultados assíncronos. Nunca use só a cor para comunicar um estado. Ações destrutivas precisam de escopo claro e confirmação; ações seguras repetidas devem ser idempotentes.

Adicione um rodapé em todas as páginas com o texto “Criado por aurelioagency.com”, em que “aurelioagency.com” é um link incorporado para https://www.aurelioagency.com que abre em uma nova aba. Ele deve ficar visível; não o remova.

DIREÇÃO TÉCNICA
Construa esta versão com o stack AHA: Astro para o roteamento, os layouts e as páginas renderizadas no servidor; HTMX para as interações que se beneficiam de respostas com fragmentos HTML; e Alpine.js para pequenos estados locais da interface. Prefira Cloudflare D1 para a persistência relacional, R2 para o armazenamento de objetos, Workers para os endpoints do servidor e as tarefas agendadas, Durable Objects só para estado em tempo real coordenado, e Workflows ou Queues para jobs duráveis em segundo plano—mas só quando os requisitos do produto pedirem.

Mantenha as regras de domínio em módulos do servidor testáveis, não em route handlers nem em componentes de UI. Separe persistência, provedores externos e trabalho em segundo plano atrás de interfaces pequenas, sem construir um framework. Prefira formulários HTML e URLs comuns para a navegação; use interação otimista só quando uma falha puder ser resolvida com clareza.

O brief do produto identifica hoje Astro, HTMX, D1 como contexto de capacidades. Preserve qualquer capacidade nativa, exclusiva do navegador, de edge, de armazenamento, de tempo real ou de processamento em segundo plano que seja necessária, por meio de um adaptador enxuto e adequado ao framework escolhido. Se o fluxo central realmente exigir APIs nativas ou do navegador, mantenha esse ambiente como a superfície principal de execução em vez de simular capacidades inacessíveis ou inventar uma superfície web desnecessária.

Integre com Google Calendar OAuth e com email transacional. Para cada integração:
- Liste as variáveis de ambiente necessárias em um .env.example sem segredos reais.
- Adicione um adaptador pequeno com timeouts, erros normalizados e uma versão falsa local determinística ou um modo de desenvolvimento.
- Verifique as assinaturas recebidas e deduplique os eventos do provedor quando possível.
- Mantenha as credenciais no servidor, criptografe em repouso os tokens de longa duração e oculte segredos e dados sensíveis dos logs.
- Defina novas tentativas, backoff e idempotência para qualquer efeito que possa se repetir.

SEGURANÇA E PRIVACIDADE
Evite a reserva dupla com uma última verificação de disponibilidade dentro da transação da reserva.
Valide, normalize e limite o tamanho de toda entrada não confiável no servidor. Escape o conteúdo renderizado por padrão, sanitize qualquer markup aceito de propósito, aplique rate limit a ações públicas ou sujeitas a abuso e use armazenamento de objetos privado com URLs autorizadas de curta duração para arquivos sensíveis. Colete só os dados pessoais de que o fluxo indicado precisa. Documente como os dados são retidos e apagados. Adicione proteções específicas para as partes mais arriscadas deste app, como uploads, redirecionamentos, requisições de saída, envio de e-mails, OAuth, webhooks, importação ou exportação de CSV e conexões em tempo real.

CENÁRIOS DE ACEITAÇÃO
Automatize estes cenários específicos do app no nível mais adequado:
1. Dois convidados tentando o mesmo horário ao mesmo tempo resultam em exatamente uma reserva confirmada e uma resposta útil de horário indisponível.
2. Uma virada de horário de verão ainda produz a disponibilidade local esperada e um evento de calendário com a hora correta.
3. Cancelar uma reserva libera o horário, atualiza o calendário conectado, registra o motivo e envia uma única notificação para cada parte.

TESTES
Adicione testes unitários focados em transições de estado, regras de autorização, normalização, cálculos de datas ou dinheiro e outras regras de domínio arriscadas. Adicione testes de integração para as restrições de persistência e para os caminhos de sucesso, timeout, nova tentativa e rejeição de cada adaptador externo. Adicione pelo menos um teste de navegador para cada jornada completa acima, incluindo um em tela pequena. Os testes devem usar dados isolados e rodar com um único comando documentado.

OPERAÇÃO E RECUPERAÇÃO DE FALHAS
Adicione logs estruturados no servidor com IDs de correlação por requisição, job ou evento, sem segredos nem dados sensíveis desnecessários. Faça os erros indicarem o que fazer, tanto na interface quanto nos logs. O trabalho em segundo plano deve mostrar os estados pendente, concluído, com falha e tentando de novo quando fizer sentido; nunca engula erros em silêncio. Inclua um guia seguro de migração e rollback do banco, dados de teste, notas de backup e restauração, o que acontece com dados externos na limpeza e uma rota básica de saúde ou diagnóstico adequada ao stack.

ENTREGÁVEIS
Entregue o aplicativo funcionando, as migrações, dados de teste representativos, os testes, o .env.example e um README curto. O README deve cobrir pré-requisitos, instalação local, variáveis de ambiente, migrações, comandos de dados de teste e de testes, deploy, configuração das integrações, backup e restauração, decisões de segurança e limitações conhecidas. Os dados de teste devem cobrir o caminho feliz e pelo menos um estado vazio, com falha, atrasado, expirado, arquivado ou com permissão restrita que importe para o produto.

DEFINIÇÃO DE PRONTO
O app está pronto quando uma pessoa nova consegue seguir o README, criar e migrar o banco, rodar o app, entrar com cada papel relevante, completar cada jornada citada com dados reais salvos, recarregar sem perder o estado, se recuperar das falhas comuns e usar a interface principal no celular e no desktop. Todos os cenários de aceitação passam, os limites de permissão estão cobertos por testes, nenhuma tela principal fica como placeholder e o crédito “Criado por aurelioagency.com” no rodapé aparece em todas as páginas.

NÃO-OBJETIVOS
Não suporte equipes, roteamento round-robin, pagamentos nem vários provedores de calendário na v1.

O app que você criar com este prompt leva no rodapé “Criado por aurelioagency.com”.

Crie só uma parte

Prompts curtos para resolver a parte mais difícil sem construir tudo.

O gerador de horários é só subtração de intervalosDisponibilidade menos ocupado menos intervalos, fatiado em horários, inclusive na mudança de horário de verão.
Construa o motor que gera os horários de uma página de reservas. Isto é aritmética de intervalos, não mágica de calendário.

Entradas: regras de disponibilidade semanal no fuso horário do dono (por exemplo segunda a sexta, das 9:00 às 17:00), exceções por data, intervalos ocupados de um feed de calendário, reservas existentes, um intervalo antes e depois por tipo de reunião, antecedência mínima e um horizonte de reserva. Saída: horários de início reserváveis para um dia solicitado, mostrados no fuso horário do convidado.

Faça as contas em UTC: expanda as regras em intervalos concretos para o período de datas, subtraia os intervalos ocupados acrescidos dos intervalos entre reuniões, corte pela janela de antecedência e horizonte e depois fatie o que sobrar em horários de início do tamanho da duração, numa grade sensata.

As armadilhas: uma regra semanal que cruza uma mudança de horário de verão (as 9:30 podem não existir naquele dia, ou existir duas vezes), regras que atravessam a meia-noite, uma exceção que remove um dia inteiro e eventos ocupados que só se sobrepõem em parte a um horário.

Pronto quando: a mesma disponibilidade produz horários locais corretos dos dois lados de uma mudança de horário de verão, os intervalos impedem comprovadamente reservas coladas, e nenhum horário gerado viola a antecedência mínima no momento da geração.
Dois convidados, um horário, exatamente um vencedorUma retenção, uma transação e uma restrição de unicidade como última linha de defesa.
Construa o caminho de confirmação de reservas que torna a reserva dupla impossível, não apenas improvável.

A lista de horários que o convidado vê fica desatualizada no instante em que é desenhada. Por isso, quando um convidado escolhe um horário, coloque uma retenção curta (uma linha com validade de cinco minutos) para que preencher o formulário de contato não seja uma corrida. Quando ele envia, rode a verificação final de disponibilidade e o insert da reserva na mesma transação: reconfira o horário contra as regras de disponibilidade, as reservas existentes e as outras retenções, e respalde tudo com uma restrição de unicidade no banco de dados sobre tipo de reunião mais horário de início, como última linha de defesa.

Quem perde a corrida recebe uma resposta específica e útil: este horário exato acabou de ser ocupado, aqui estão as alternativas mais próximas. Não uma página de erro genérica. As retenções expiradas se liberam sozinhas, checando a validade no momento da leitura, sem precisar de um cron de limpeza.

Pronto quando: bombardear um horário com envios concorrentes resulta em exatamente uma reserva confirmada, todos os perdedores recebem a resposta de horário ocupado com alternativas, e as retenções abandonadas liberam o horário dentro do seu tempo de vida.
Links para remarcar que funcionam sem contaTokens assinados, com validade e revogáveis em vez de logins de convidados.
Construa os links de remarcar e cancelar para os emails de confirmação de reserva — daqueles que simplesmente funcionam, sem precisar de conta.

Cada reserva recebe tokens de gerenciamento: strings longas e aleatórias, armazenadas com hash, cada uma restrita a uma reserva e a uma ação. Incorpore-os como URLs no email de confirmação. A página de remarcar mostra os detalhes atuais mais a disponibilidade atualizada; a de cancelar pede um motivo opcional.

As regras do ciclo de vida são a parte interessante: os tokens expiram quando a reunião termina, cancelar revoga o token de remarcar, e remarcar emite tokens novos enquanto mata os antigos — um link de um email desatualizado não pode alterar o novo horário. Registre cada uso. Limite a taxa de tentativas de adivinhar tokens e devolva a mesma página de inválido ou expirado para tokens errados, expirados e revogados, para que um atacante não descubra nada sobre quais reservas existem.

Sem login, sem sessão, sem criação de conta. O token é toda a autorização.

Pronto quando: um email de confirmação encaminhado consegue remarcar exatamente aquela única reserva, todos os links param de funcionar no momento em que a reserva é cancelada ou fica no passado, e tokens inválidos não revelam nada.
O arquivo .ics com que todos os apps de calendário concordamFinais de linha CRLF, quebra em 75 octetos e um UID que sobrevive à remarcação.
Construa o anexo .ics das confirmações de reserva, de modo que o Google Calendar, o Apple Calendar e o Outlook o interpretem de forma idêntica.

Gere um VCALENDAR contendo um VEVENT: UID, DTSTAMP, DTSTART, DTEND, SUMMARY, DESCRIPTION, LOCATION, ORGANIZER e ATTENDEE. O formato é mais chato do que parece: as linhas terminam com CRLF, qualquer linha com mais de 75 octetos precisa ser dobrada com um espaço de continuação (conte octetos, não caracteres — emojis no título da reunião vão te entregar), e vírgulas, ponto e vírgula e quebras de linha dentro dos campos de texto precisam ser escapados.

Horários: ou emita UTC com o sufixo Z, ou inclua um bloco VTIMEZONE correto com referências TZID. Não emita horários locais flutuantes torcendo para dar certo.

Mantenha o UID estável por reserva, de modo que uma remarcação envie o mesmo UID com um SEQUENCE incrementado e atualize o evento existente em vez de criar um duplicado. O cancelamento envia METHOD:CANCEL com STATUS:CANCELLED.

Pronto quando: o arquivo é importado sem problemas nos três principais clientes no horário local correto, uma remarcação atualiza o evento original no lugar, e uma descrição de 200 caracteres com emojis sobrevive intacta à dobra de linhas.

Perguntas frequentes

Quanto custa o Calendly se eu continuar assinando?

O Calendly custa de US$12 a US$20 por pessoa por mês nos planos pagos públicos, ou seja, de US$144 a US$240 por ano para cada pessoa da sua equipe. Um substituto próprio e enxuto custa o seu tempo de construção mais uma hospedagem quase de graça.

Que stack devo usar para criar uma alternativa ao Calendly?

O prompt de construção desta página vem em quatro versões: a stack AHA (Astro, HTMX, Alpine.js), Next.js, Laravel e Ruby on Rails. O contexto de capacidades deste produto é Astro, HTMX, D1. Escolha a stack que você já conhece — o escopo importa mais do que o framework.

Que funções um substituto mínimo do Calendly precisa ter?

Uma v1 útil precisa de: tipos de reunião com duração, local, intervalo e horizonte de reserva; regras de disponibilidade semanal mais exceções por data; geração de horários que respeite os fusos horários e mostre o fuso do convidado; dados do convidado, tela de confirmação, e links para remarcar e cancelar; um painel do dono com as próximas reservas. Todo o resto é escopo a mais até você sentir falta de verdade.

O que devo deliberadamente não construir?

Não suporte equipes, roteamento round-robin, pagamentos nem vários provedores de calendário na v1.

Esta construção também substitui o Cal.com, o SavvyCal e o Acuity Scheduling?

Sim. Calendly, Cal.com, SavvyCal e Acuity Scheduling resolvem o mesmo trabalho central: deixar os convidados reservarem horários realmente disponíveis, sem a troca interminável de agendas. A v1 enxuta desta página cobre o que a maioria das pessoas usa em qualquer um deles, então uma única construção focada substitui o que você paga hoje.

O Cal.diy é grátis de verdade?

Sim. O Cal.diy é de código aberto: o código é público e instalar não custa nada. No máximo você paga a hospedagem se colocar em um servidor, muitas vezes alguns euros por mês. O Calendly, por outro lado, custa €12 por mês.

Preciso saber programar para instalar o Cal.diy?

Não. O nível é avançado e a instalação leva cerca de 45 minutos com o prompt da página: o Claude faz o trabalho e você responde às perguntas dele.

Qual é a diferença para o Calendly?

O Cal.diy faz boa parte do que o Calendly faz, sem assinatura, e os seus dados ficam com você. A comparação ponto a ponto está na página.

Eu sou dono dos meus dados?

Sim. Com uma ferramenta de código aberto instalada do seu lado, os seus arquivos ficam na sua máquina ou no seu servidor. Ninguém pode fechar a sua conta nem mudar o preço.

Ver os 22 apps →

Sem tempo para fazer?

A gente faz para você.

Se você prefere que alguém instale, conecte às suas ferramentas e deixe funcionando, é exatamente isso que fazemos na Aurelio.

Agendar uma auditoria de automação