SnagTime é o código-fonte de um app de agendamento completo: disponibilidade, links públicos de booking, Google Calendar, e-mails e pagamentos em modo teste. Sobe local em cinco minutos, sem credencial nenhuma.

Um app de agendamento livre (licença MIT) e self-hostable. Em vez de assinar um SaaS de booking, você roda o seu — e customiza o que quiser.
Modo gratuito com SQLite, calendário local, caixa de e-mail local e pagamentos stub. Não chama Google nem Stripe.
Tipos de evento com várias durações, disponibilidade semanal, exceções por data, buffers, antecedência mínima, janela de agendamento e links públicos com fuso horário.
Arquitetura PostgreSQL 18 com row-level security forçada, credenciais separadas de app e worker, TLS verificado no banco e ingress autenticado.
O fluxo do organizador até o convidado — tudo dentro da sua instalação.
Cadastro, login, recuperação de senha, verificação de e-mail, membros, convites e troca de workspace.
Checagem de free/busy no Google Calendar e criação do evento no calendário do organizador.
Branding do workspace: cor de destaque, imagem de perfil e logo enviada por upload.
Para a demo local gratuita, só isso. Nenhuma conta de terceiro é necessária.
Node 24 é o runtime verificado do projeto.
node --version # v24.x
Vem junto com o Node; instala as dependências do monorepo.
npm --versionPara clonar o repositório.
git --versionComandos reais do repositório. Ao final você tem o app no localhost:3000 com login de organizador já criado.
Baixe o código e entre na pasta.
git clone https://github.com/inematds/snagtime.git cd snagtime
Cria um .env.local ignorado pelo git, gera segredos criptográficos independentes e imprime o login da demo uma vez.
npm run setup # ou com o seu próprio login de organizador: npm run setup -- --email voce@exemplo.com --password "SuaSenhaForte7!"
Um comando só: instala, aplica as migrações, popula o banco e sobe a demo gratuita.
npm run demo:free # abra http://localhost:3000
Valida a configuração local sem credenciais, se algo não subir como esperado.
npm run setup:check
Desenvolvimento, testes e build de produção.
npm run dev # servidor de desenvolvimento npm run test # testes unitários e de contrato npm run typecheck # TypeScript npm run lint # ESLint npm run build # build de produção do Next.js npm run ci:secret-scan # varre credenciais no código público
db:reset destrói o SQLite local — use só quando quiser uma demo limpa.
npm run db:generate npm run db:migrate npm run db:seed npm run db:reset # destrutivo
O repositório traz um prompt pronto para o Codex ou o Claude Code conduzirem a instalação, parando só nas etapas de conta que só você pode fazer.
# docs/AI-SETUP.md — copie o prompt do aluno e cole no assistente com: https://github.com/inematds/snagtime
O código vem inteiro. As integrações externas continuam sendo suas — e nenhuma delas é necessária para a demo local.
| Recurso | O que você fornece | Precisa na demo local? |
|---|---|---|
| Banco de dados | Nada para SQLite; PostgreSQL em produção | Não |
| Hospedagem pública | Domínio HTTPS + serviço Node e worker de longa duração | Não |
| Google Calendar | OAuth client ID e client secret | Não |
| E-mail transacional | Host SMTP, usuário, senha e domínio remetente verificado | Não |
| Pagamentos Stripe | Chave secreta de teste, publishable key e webhook secret | Não |
Callback URLs, variáveis de ambiente e verificação: docs/INTEGRATION-SETUP.md. Deploy público: docs/DEPLOYMENT.md.
Honestidade sobre o que é demo e o que é caminho avançado de self-hosting.