尚未检测到更新。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).