Visão geral
O TermoBucket é o micro serviço de arquivos da Termotubos. Os apps guardam, listam, baixam e apagam arquivos no Cloudflare R2 pela API de arquivos , cada um com sua chave de acesso; as credenciais do R2 ficam só aqui ( Buckets do R2 ). O painel cadastra os apps, mostra o consumo de cada um e mantém os colaboradores, as permissões e os logs.
O sistema tem duas metades, no padrão de projeto da Termotubos:
| Parte | Endereço em dev | O que faz |
|---|---|---|
| Frontend (SvelteKit) | http://localhost:51120 | O painel dos colaboradores (/painel) e a landing page |
| Backend (Rust + Axum) | http://localhost:51121 | A API |
| PostgreSQL (local) | localhost:5432 | Banco do app, no schema termobucket |
O que existe no painel
| Área | Rota | O que faz |
|---|---|---|
| Aplicativos | /painel/aplicativos | Cadastro dos apps que usam a API de arquivos: slug, limites de tamanho e tipo, chave de acesso e consumo |
| Colaboradores | /painel/colaboradores | Cadastro dos colaboradores e das permissões de ler, criar, editar e deletar |
| Configurações | /painel/configuracoes | Logs das requisições à API |
Acesso
O login é do TermoAuth: o frontend manda a pessoa para o /handoff do TermoAuth, recebe o JWT em /painel#token= e o envia em Authorization: Bearer a toda chamada. O backend valida o token offline pelo JWKS do TermoAuth e libera só quem tem cadastro ativo na tabela auth (e-mail, perfil colaborador, ativo e termoauth_id). Não existe senha no TermoBucket.
Rodando localmente
| Serviço | Porta | Como subir |
|---|---|---|
| Frontend | 51120 | Configuração frontend do .claude/launch.json |
| Backend | 51121 | Configuração backend do .claude/launch.json |
| Documentação | 51122 | Configuração docs-projeto do .claude/launch.json |
| Diagrama do banco (ERD) | 51123 | Configuração database-erd do .claude/launch.json |
| Drizzle Studio | 51124 | Configuração database-studio do .claude/launch.json |
| PostgreSQL | 5432 | Serviço local do PostgreSQL; .claude/preparar-banco.sh cria o banco e aplica as migrations |
Esta é a primeira página da documentação do TermoBucket. As próximas páginas entram em docs/projeto/src/routes/docs/<pagina>/+page.md, e o menu lateral é definido em docs/projeto/src/navegacao.json.