Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/caiussord/svdt/archive/refs/heads/main.zipSvDt — Sistema de Agendamento para WordPress
O SvDt (Save the Date) é um plugin WordPress para agendamentos de profissionais autônomos e pequenas equipes. O cliente escolhe um serviço, um profissional disponível e um horário; o administrador organiza e confirma as solicitações no painel do WordPress.
O projeto combina uma interface responsiva com validação das regras de disponibilidade no servidor e prevenção de reservas simultâneas conflitantes.
Demonstração

O repositório apresenta capturas do fluxo público e do painel. Ainda não há uma demonstração online; a instalação permite testar o plugin em um WordPress próprio.
Funcionalidades
- Agendamento online por serviço, profissional, data e horário, com solicitação inicialmente pendente.
- Agendas individuais para vários profissionais, inclusive atendimentos simultâneos.
- Serviços com duração, intervalo após atendimento e vínculo com os profissionais.
- Expedientes, folgas individuais e bloqueios globais de datas.
- Calendário e filtros no painel, com ações de confirmar, cancelar e concluir reservas.
- Disponibilidade limitada aos próximos 90 dias e revalidada ao gravar a reserva.
- Interface responsiva, com etapas progressivas, estados de carregamento e navegação por teclado.
Tecnologias
WordPress, PHP, JavaScript, HTML, CSS, MySQL e WordPress REST API.
Capturas de tela
Escolha de horário

Agendamento pelo celular

Gerenciamento de reservas

Outras telas: equipe no desktop, equipe no celular, profissionais, serviços, expediente, serviço no celular, dados do cliente e confirmação.
Como funciona
- O cliente escolhe o serviço e, se houver mais de um profissional habilitado, seleciona quem vai atendê-lo.
- A agenda mostra datas e horários compatíveis com o expediente, a duração do serviço e as reservas existentes.
- O cliente informa seus dados e envia a solicitação. O horário fica reservado como pendente, aguardando decisão administrativa.
- No painel WordPress, o administrador confirma, cancela ou conclui a reserva.
Instalação
Requisitos: WordPress 6.2+, PHP 8.0+ e MySQL com suporte a GET_LOCK().
- Copie a pasta
svdtparawp-content/plugins/e ative SvDt no WordPress. - Em SvDt → Serviços, cadastre os serviços; em Profissionais, vincule cada pessoa aos serviços que atende.
- Em Disponibilidade, configure o expediente de cada profissional e o fuso em Configurações → Geral.
- Crie uma página com o shortcode
[svdt_booking]. O template opcional SvDt · Página de reservas reproduz a apresentação das capturas.
Uma instalação nova cria um profissional padrão, editável no painel. Para atualizar uma instalação antiga, faça backup e siga o guia de migração.
Arquitetura
O código separa persistência e migração, cálculo de disponibilidade, criação de reservas, API REST e administração. Consulte a arquitetura e a referência da API.
Segurança e testes
O servidor valida serviço, profissional, expediente e horário. A criação de reservas usa honeypot, limite de tentativas por IP e lock MySQL por profissional para evitar conflitos. As ações administrativas exigem autenticação, permissão e nonce quando feitas por formulários.
Os testes locais cobrem fluxo individual, equipe, concorrência, migração e instalação limpa. A verificação em hospedagem real continua pendente. Veja testes e resultados e o roteiro de homologação.
O ZIP de distribuição contém apenas os arquivos necessários do plugin. Backups, dados de clientes, testes, capturas e histórico Git ficam fora dele.
Limitações e próximos passos
Esta versão não inclui pagamentos, e-mails automáticos, integração com calendários externos, múltiplas unidades ou reagendamento pelo cliente. Fusos com horário de verão exigem validação adicional. O próximo passo antes do uso em produção é executar a homologação em hospedagem real.
Licença
Distribuído sob GPL-2.0-or-later. Este é um projeto demonstrativo; as reservas exibidas nas capturas usam dados fictícios.