尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Frontend do sistema de gestão do escritório Fernandes Advocacia (criminal).
Next.js (App Router) + @supabase/ssr + Supabase Auth + Tailwind, deploy no Vercel.
Fase 1 = SOMENTE LEITURA. As páginas leem com a sessão do usuário para que o RLS valha. A
service_rolenunca vai para o cliente (e nesta fase nem é usada). Doutrina do manual: prazos penais em dias corridos · gatevalidado=false· nunca deletar ·segredo_justicasempre sinalizado.
proxy.ts.proxy.ts.Copie .env.example para .env.local e preencha:
NEXT_PUBLIC_SUPABASE_URL=https://yaqrfftsnqqecoaqssij.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_...
[email protected] # Rodolfo entra aqui depois
NEXT_PUBLIC_SITE_URL=http://localhost:3000 # só no dev; no Vercel pode omitir (auto-detecta o domínio)
No Vercel,
NEXT_PUBLIC_SITE_URLé opcional: o redirect do magic link detecta o domínio atual pelos headers (funciona em produção e em previews). Defina apenas se quiser forçar um domínio fixo. Opackage.jsonestá na raiz do repositório, então o Root Directory no Vercel fica no padrão (./).
npm install
npm run dev # http://localhost:3000
ALLOWED_EMAILS (Daniel e, depois, Rodolfo).
O gate é aplicado em três camadas: na ação de envio, no proxy.ts e no callback./auth/confirm trata tanto o fluxo
PKCE (?code=, template padrão) quanto o token_hash (template SSR).{{ .ConfirmationURL }} por:
{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=emailproxy.ts # renova sessão + gate de acesso (Next 16)
app/login/ # tela de login (magic link) + server action
app/auth/confirm/route.ts # callback do magic link (PKCE e token_hash)
app/auth/signout/route.ts # logout
app/(app)/layout.tsx # shell: sidebar + topbar + drawer (busca badges ao vivo)
app/(app)/painel/ # Painel — ritual matinal (LIGADO ao banco)
app/(app)/<modulo>/ # demais módulos (em construção na sequência da Fase 1)
lib/supabase/ # clients browser/server + proxy (padrão @supabase/ssr)
lib/queries.ts # leituras das views/tabelas (badges + painel)
lib/allowlist.ts # allowlist de e-mails
components/ # Sidebar, Topbar, Drawer, UI (semáforo, pills, gate)...
vw_pendentes_validacao, vw_prazos_abertos, vw_intimacoes_orfas, vw_agenda_semana,
vw_financeiro_pendente, vw_situacao_cliente, vw_relatorio_diario,
vw_movimentacoes_recentes, vw_andamentos_orfaos.
Gravação pela sessão do usuário (RLS): a migração v2.5 adicionou políticas
INSERT/UPDATE para authenticated (DELETE segue bloqueado por trigger; nunca
deletar) e tornou fn_auditar SECURITY DEFINER para a auditoria funcionar sob RLS.
Toda gravação passa por um resumo + confirmação (regime chat) e é auditada.
Operações disponíveis: validar prazo/audiência (gate validado), dar baixa em prazo
(+ andamento), cancelar prazo, providência/arquivar intimação, mover/criar tarefa,
registrar andamento, criar prazo, cadastrar intimação, marcar parcela paga, rodar
fn_marcar_atrasados, decidir sugestões do sistema.
Ao validar um prazo, o app cria o marcador fatal vermelho (e recolore o provisório);
ao criar prazo, lança o evento provisório (Tangerina); audiência validada vira evento.
Configure uma service account com acesso de escrita ao calendário e defina
GOOGLE_CLIENT_EMAIL, GOOGLE_PRIVATE_KEY, GOOGLE_CALENDAR_ID (ver .env.example).
Sem essas variáveis, a validação grava só no banco (degradação segura — nunca derruba a gravação).