Frontend oficial do Certy, construído com SvelteKit + TypeScript e deployado no Cloudflare Workers.
- Site: https://certy.com.br/
- Repositório: https://github.com/CertyBR/certy.com.br
- Patrocinador: ZeroCert
- SvelteKit 2 + Svelte 5
- TypeScript
- Vite 7
- Adapter Cloudflare (
@sveltejs/adapter-cloudflare) - Bun 1.3+
| Rota | Descrição |
|---|---|
/ |
Home — form de emissão, benefícios, FAQ |
/emitir |
Acompanhamento de sessão em andamento |
/verificar |
Ferramenta de verificação de certificados SSL |
/termos |
Termos de Uso e Política de Privacidade |
/* |
Página de erro/404 customizada |
O frontend se comunica com o backend via proxy Cloudflare Worker (PUBLIC_API_BASE_URL).
Endpoints usados:
| Método | Rota | Descrição |
|---|---|---|
POST |
/api/v1/certificates/sessions |
Criar sessão de emissão |
GET |
/api/v1/certificates/sessions/{id} |
Consultar sessão |
POST |
/api/v1/certificates/sessions/{id}/verification-code |
Reenviar código |
POST |
/api/v1/certificates/sessions/{id}/verify-email |
Verificar código de e-mail |
POST |
/api/v1/certificates/sessions/{id}/dns-check |
Pré-checar DNS |
POST |
/api/v1/certificates/sessions/{id}/finalize |
Finalizar emissão |
GET |
/api/v1/certificates/check?host=example.com |
Verificar certificado SSL de qualquer site |
Crie .env.local a partir de .env.example:
cp .env.example .env.local| Variável | Descrição | Obrigatória |
|---|---|---|
PUBLIC_API_BASE_URL |
URL base do proxy/API | ✓ |
PUBLIC_EMAIL_VALIDATION_API_URL |
Endpoint Likn para validação de e-mail | — |
PUBLIC_TURNSTILE_SITE_KEY |
Chave pública do Cloudflare Turnstile | — |
Em desenvolvimento local (com bun run dev), aponte PUBLIC_API_BASE_URL para o wrangler dev do proxy:
PUBLIC_API_BASE_URL=http://localhost:8787
PUBLIC_TURNSTILE_SITE_KEY=1x00000000000000000000AAA chave
1x00000000000000000000AAé a chave de teste oficial da Cloudflare — sempre aprova o desafio sem exibir captcha.
Em deploy via wrangler, as variáveis públicas são lidas do wrangler.jsonc (seção vars). O TURNSTILE_SECRET_KEY (sem prefixo PUBLIC_) pertence ao backend, não ao frontend.
Pré-requisitos:
- Bun 1.3+
- Backend rodando (Docker Compose recomendado)
- Proxy wrangler dev rodando (
cd proxy && bunx wrangler dev)
bun install
cp .env.example .env.local
# Edite .env.local com as URLs locais
bun run devA stack completa local usa as portas padrão:
- Frontend:
http://localhost:5173 - Proxy:
http://localhost:8787 - Backend:
http://localhost:3000
bun run dev # servidor de desenvolvimento (Vite)
bun run w:dev # servidor de desenvolvimento (Wrangler — emula Cloudflare Workers)
bun run check # checagem de tipos Svelte/TypeScript
bun run build # build de produção
bun run preview # preview local da build
bun run deploy # build + deploy no Cloudflare WorkersEste frontend usa Cloudflare Workers via adapter SvelteKit.
bunx wrangler login
bun run deployVariáveis públicas de produção estão em wrangler.jsonc (seção vars). Segredos (ex.: TURNSTILE_SECRET_KEY) devem ser configurados diretamente no Cloudflare Dashboard ou via wrangler secret put.
Pipeline em .github/workflows/frontend-ci-cd.yml:
- Roda em
push,pull_requesteworkflow_dispatch - Etapas:
bun install --frozen-lockfile→bun run check→bun run build
Variables recomendadas no GitHub (Repository Variables):
PUBLIC_API_BASE_URLPUBLIC_EMAIL_VALIDATION_API_URLPUBLIC_TURNSTILE_SITE_KEY
src/
lib/
api/certy.ts ← cliente HTTP da API (todos os endpoints)
toast.ts ← sistema de notificações
routes/
+layout.svelte ← layout global (tema, toasts, context menu)
+page.svelte ← home (form de emissão + Turnstile)
+error.svelte ← página de erro/404
emitir/
+page.svelte ← acompanhamento de sessão
verificar/
+page.svelte ← verificação de certificado SSL
termos/
+page.svelte ← termos de uso e privacidade
app.css ← estilos globais
app.html ← HTML base (inclui loading screen)
hooks.server.ts ← security headers + cache-control
static/
favicon.svg
logo.svg
og/certy-og.svg
robots.txt
sitemap.xml
cursors/
Guia completo em CONTRIBUTING.md.
Este projeto está sob a licença MIT. Veja LICENSE.