Pular para conteúdo

Primeiros Passos — Chronos

Pre-requisitos

  • Docker e Docker Compose
  • Java 21 (para desenvolvimento local)
  • Node.js 18+ (para o frontend)
  • MongoDB 7 (via Docker)
  • Servicos Haus rodando (OATH, Guild, Herald, Vault)

Subindo o Ambiente

1. Clone o repositorio

git clone <repo-url>
cd chronos-backend

2. Suba o MongoDB

docker compose up -d mongodb

MongoDB na porta padrao com database chronosdb.

3. Inicie o backend

./mvnw quarkus:dev

O backend inicia na porta 5050.

4. Inicie o frontend

cd ../chronos-frontend
npm install
npm run dev

O frontend inicia com Next.js App Router.

Primeiro Acesso

1. Criar conta

Acesse a pagina de login. O cadastro e feito via OATH.

2. Criar tenant (clinica/consultorio)

Apos o login, crie seu tenant:

  • Nome do negocio
  • Slug (URL da pagina publica: /c/{slug})
  • Descricao, telefone, email
  • Timezone

3. Cadastrar servicos

Em Servicos > Novo:

  • Nome do servico
  • Duracao (minutos)
  • Preco (centavos)
  • Categoria
  • Buffer entre agendamentos

4. Cadastrar profissionais

Em Profissionais > Novo:

  • Nome, email, telefone
  • Titulo (ex: "Dr.", "Psicóloga")
  • Especialidades
  • Servicos que atende
  • Foto (via Vault)

5. Configurar agenda

Em Agenda:

  • Selecionar profissional
  • Definir horarios por dia da semana
  • Modo INTERVALS (a cada X minutos) ou FIXED_SLOTS (horarios fixos)
  • Adicionar excecoes (ferias, feriados)

6. Ativar pagina publica

Em Configuracoes:

  • Ativar "Permitir agendamento online"
  • Configurar cor da marca
  • Definir janela de agendamento (ex: 90 dias)
  • Logo e descricao

A pagina fica acessivel em: http://localhost:3050/c/{slug}

Variaveis de Ambiente

Backend

QUARKUS_MONGODB_CONNECTION_STRING=mongodb://localhost:27017
QUARKUS_MONGODB_DATABASE=chronosdb
OATH_API_URL=http://localhost:5001
GUILD_API_URL=http://localhost:5002
HERALD_API_URL=http://localhost:5004
VAULT_URL=http://localhost:5006

Frontend

NEXT_PUBLIC_OATH_URL=http://localhost:5001
NEXT_PUBLIC_CHRONOS_API_URL=http://localhost:5050

Estrutura de Pastas

chronos-backend/
├── src/main/java/chronos/
│   ├── api/controllers/    # BFF + Webhooks
│   ├── application/
│   │   ├── services/       # Business logic
│   │   └── engines/        # Availability, Promotion
│   ├── domain/entities/    # MongoDB entities
│   └── infrastructure/
│       ├── clients/        # OATH, Guild, Herald, WhatsApp
│       ├── persistence/    # MongoDB Panache repos
│       ├── scheduler/      # Reminder, MessageSender
│       └── security/       # AuthFilter
└── pom.xml

chronos-frontend/
├── src/
│   ├── app/               # Next.js App Router
│   │   ├── (dashboard)/   # Area protegida
│   │   └── (public)/      # Booking publico
│   ├── actions/           # Server Actions
│   ├── components/        # Dashboard, Booking
│   ├── lib/               # API, utils, tenant
│   └── auth.ts            # NextAuth config
└── package.json

Comandos Uteis

# Backend
./mvnw quarkus:dev                    # Dev mode
./mvnw compile                        # Compilar
./mvnw clean package                  # Build

# Frontend
npm run dev                           # Dev server
npm run build                         # Production build

Testando o Booking Publico

  1. Crie tenant, servicos, profissionais e agenda
  2. Acesse /c/{slug} no frontend
  3. Selecione servico → profissional → data/hora
  4. Preencha dados do cliente
  5. Confirme o agendamento
  6. Verifique o email de confirmacao (Herald)