Brevemente. As apps estarão online brevemente.

Os teus dados, em tua casa.

Caixote é uma família de cinco apps auto-alojadas — ficheiros, conversas, tarefas, agenda, feeds e um controlo de impressora. Quatro delas (Docs, Chat, Agenda e RSS) são binários únicos em Rust que se ligam entre si e partilham uma só conta; a sexta, o Caixote CC2, funciona sozinha.

RustSQLiteDocker / PodmanCifragem ponta-a-pontaSem frameworks no browser
A família

Cinco apps, quatro com uma só identidade.

A mesma ideia em todas: software pequeno, rápido e teu. Docs, Chat, Agenda e RSS partilham o mesmo visual e uma só conta e ligam-se entre si; o Caixote CC2 é a da oficina e não precisa de nenhuma delas. Usa só uma ou liga as quatro.

FicheirosBrevemente

Caixote Docs

Um navegador de ficheiros web que sabe o que está dentro deles. Aponta-o a uma pasta e pesquisa o texto de documentos e PDF, incluindo digitalizados. As imagens encontram-se pelo nome.

Experimentar a demo →

  • Pesquisa no conteúdo. Índice de texto integral (SQLite FTS5) sobre o texto de documentos de escritório, PDF e ficheiros de texto. Os resultados trazem excertos destacados.
  • OCR. Os PDF digitalizados são lidos com o Tesseract (opcional, instalado à parte) e também ficam pesquisáveis. As imagens em si não passam por OCR.
  • Editor incluído. Edita documentos Word (WordCraft), folhas de cálculo (GridCraft), apresentações (DeckCraft) e PDF (PDFCraft) directamente no browser; guarda a versão anterior (as últimas 10) antes de cada gravação.
  • Vê tudo sem descarregar. Vídeo em streaming, leitor de áudio, PDF e modelos 3D (STL/3MF) com rotação.
  • Partilha com ligação. Validade de 1 hora a sem limite, palavra-passe opcional; as pastas são servidas em ZIP (precisa da ferramenta zip no servidor).
  • Feito para usar. Menu de botão direito, cortar/copiar/colar, arrastar e largar, selecção múltipla, etiquetas, filtros, importar e exportar em ZIP.
  • Multiutilizador. Papéis admin, utilizador e leitor; palavras-passe PBKDF2 (600 000 iterações), limites de tentativas e registo de actividade.
  • Plano. Tarefas e calendário ligados aos próprios ficheiros: cada ficheiro mostra o que está agendado para ele. As vistas de Tarefas e Calendário aparecem quando as apps irmãs estão emparelhadas.
  • Instalável (PWA). Põe o Caixote Docs no telemóvel ou no computador como uma app. Ainda em teste; precisa de HTTPS e só a estrutura da app fica em cache, por isso funciona com ligação.
Linguagem Rust + JS simplesPorta 8099Licença AGPL-3.0+Interface EN / PT
caixote-docs · Documentos
DOC
Orçamento 2026.docx84 KB
PDF
Contrato arrendamento.pdf1,2 MB
STL
suporte-cabo.stl3,4 MB
PDF
recibo-scan.pdf · OCR640 KB
MP4
ferias-algarve.mp4212 MB
ZIP
arquivo-2025.zip1,8 GB
ConversasBrevemente

Caixote Chat

Um chat onde nem o servidor consegue ler. A criptografia corre no teu dispositivo; o servidor guarda texto cifrado (mas vê quem fala com quem, e quando).

Experimentar a demo →

  • Cifragem ponta-a-ponta. X25519 e Ed25519 para as chaves, AES-256-GCM para o conteúdo, tudo com o WebCrypto do browser. Mensagens assinadas por quem as envia. As chaves ficam protegidas por uma chave derivada da tua palavra-passe.
  • Ficheiros, imagens e vídeo. Cifrados em blocos de 1 MiB, enviados em partes e retomados do ponto onde pararam se a ligação falhar, enquanto a página fica aberta. Nome e tipo também vão cifrados.
  • Notas de voz e de vídeo. Grava e envia directamente da conversa.
  • Chamadas de voz e vídeo. WebRTC um-para-um com sinalização cifrada (sem chamadas de grupo). Para chamar entre redes diferentes, aponta o servidor para o teu STUN/TURN.
  • Conversas a sério. Grupos, responder, reencaminhar, recibos (enviada, entregue, vista), foto de perfil e da conversa, painel «Partilhado» com ficheiros e ligações. Dentro do Caixote Docs abre como painel lateral.
  • Verificação. Número de segurança de 60 dígitos por par de utilizadores nas conversas directas, para comparares em pessoa. Não há recuperação de palavra-passe, e retirar alguém de um grupo não roda a chave do grupo.
  • Personalizável. Tema claro/escuro, cor de destaque, balões e animações.
Linguagem Rust + JS simplesPorta 8200Tempo real SSEInterface EN / PT
caixote-chat · Casa
🔒 cifrada ponta-a-ponta
Já tens a planta final?Rita · 21:04
Sim, vai aqui.21:05 ✓✓
STL
suporte-cabo.stl3,4 MB · cifrado
Perfeito! Ligo já. 📹Rita · 21:06
Tarefas e agendaBrevemente

Caixote Agenda

Tarefas e agenda numa só app, com um Plano que podes partilhar e sincronizar e uma agenda Privada que o servidor não consegue ler.

Experimentar a demo →

  • Dois sítios para os teus dias. O Plano fica em claro no teu servidor: lembretes, partilha e sincronização com o Caixote Docs. O Privado é uma agenda cifrada no teu browser com uma frase só tua: sem partilha, lembretes nem sincronização, de propósito.
  • Listas e subtarefas. Listas com títulos de secção, um nível de subtarefas, notas, etiquetas e prioridades; prazos, repetições e vista em quadro.
  • Partilha e colaboração (Plano). Convida pessoas como leitor ou editor, atribui tarefas, comenta e segue o histórico de actividade. As permissões são aplicadas no servidor.
  • Vistas de calendário. Mês, semana, dia, agenda e ano, com eventos de dia inteiro, recorrência com excepções, números das semanas opcionais e feriados de Portugal.
  • Escreve como falas. «Jantar amanhã às 20h30» na entrada rápida cria o evento. Entende português e inglês.
  • Mexe como num papel. Arrasta eventos entre dias e horas, redimensiona, botão direito para mais. No telemóvel, toque longo.
  • Compatível. Importa e exporta ficheiros .ics; um endereço de calendário secreto por utilizador para as tuas tarefas com prazo.
  • Módulos por utilizador. 15 módulos — notas, subtarefas, prioridade, etiquetas, quadro, calendário… — que cada pessoa liga ou desliga nas Definições.
Linguagem Rust + JS simplesCifra do Privado PBKDF2 + AES-GCMLíngua PT / ENSubstitui Todo + Cal
caixote-agenda · Outubro 2026
MonTueWedThuFriSatSun
12
13Meeting
14
15
16Dinner
17
18
19
20Dentist
21
22Cinema
23
24Market
25
26
27
28Deadline
29
30
31Party
1
LeituraBrevemente

Caixote RSS

Um leitor de feeds que não faz barulho: as tuas subscrições, as tuas regras, e nada a decidir o que deves ler a seguir.

Experimentar a demo →

  • Subscreve o que quiseres. RSS, Atom e JSON Feed. Cola o endereço de um site e ele encontra o feed; organiza em pastas; importa e exporta OPML.
  • Pesquisa, etiquetas e regras. Pesquisa no texto de todos os artigos. As regras marcam como lido, põem estrela, etiquetam ou descartam antes de os veres.
  • Texto completo quando precisas. Feeds que só mandam um resumo? Obtém o artigo inteiro com um clique, ou liga-o para o feed todo.
  • Seguro de ler. O HTML dos artigos é limpo no servidor e outra vez no browser; as imagens vêm desligadas e, quando as ligas, passam por um proxy que esconde o teu endereço e a página de origem ao site de onde vêm.
  • Guardar e recomendar. Guarda ligações para ler depois e recomenda um artigo a outro utilizador do mesmo servidor.
  • O teu próprio feed. Os artigos com estrela podem ser publicados num feed com endereço secreto, que podes mudar ou desligar.
  • Enviar para outra app. De qualquer artigo: cria uma tarefa ou um evento no Caixote Agenda, ou, pelo Caixote Chat, uma mensagem; o Caixote Docs pode guardá-lo como tarefa, evento ou nota. Cada um pergunta antes de guardar.
  • À tua maneira. Dez módulos que ligas ou desligas, actualizações em directo, temas, densidade, PT/EN.
Linguagem Rust + JS simplesPorta 8340Testes unitários, API e interface
caixote-rss · Por ler · 7
Counting parrotfish at dawn★Field Notes from the Reef · 3 h
Parsing a config file in 80 linesSmall Rust Things · 1 h
Issue 212: the terminal is not deadThe Weekly Terminal · 5 h
Why the faintest galaxies are the most honestThe Slow Telescope · 35 min
OficinaBrevemente

Caixote CC2

A tua impressora 3D, na tua rede. Pausa uma impressão do sofá, vê que bobina está a acabar e deixa uma IA vigiar a câmara — sem nenhuma nuvem do fabricante pelo meio.

Experimentar a demo →

  • Tudo à vista. Progresso, tempo restante, temperaturas e a câmara em direto; pausar, retomar e parar; luz, velocidade e ventoinhas. O movimento manual fica bloqueado durante a impressão.
  • As tuas bobinas, contadas. Vê as quatro bobinas do Canvas e o auto-refill, diz que bobina está em cada ranhura e cada impressão desconta os seus gramas. As bobinas quase vazias ficam a vermelho. (Os gramas são uma estimativa do slicer.)
  • Começa impressões pelo telemóvel. Percorre os ficheiros da impressora com miniaturas, associa cores às ranhuras do Canvas e carrega em iniciar.
  • Um segundo par de olhos (opcional). Um contentor no teu servidor olha para a câmara durante a impressão e pergunta a um modelo de imagem se algo está a correr mal. Desligado por omissão; usa a tua chave de API, ou um modelo local para nenhuma foto sair de casa.
  • Instala-se como app. Uma PWA para o telemóvel servida pelo teu servidor; fala diretamente com a interface local da própria impressora.

Projeto não oficial, sem ligação à Elegoo. Os comandos vão para uma máquina que aquece e se move: usa por tua conta e risco.

Funciona sozinha não precisa de outra app CaixoteLicença AGPL-3.0-or-laterPorta 8088 / 8447 (https)
caixote-cc2 · A imprimir 38%
Benchy-4-coloursA imprimir · faltam 1 h 29 min
Bobina 2 · PLA Laranja515 g · carregada
Bobina 3 · PETG Branco88 g · quase no fim
Melhor juntas

Ligadas pelo browser, não pelos servidores.

As apps não falam umas com as outras nos bastidores. Quem as emparelha és tu, no browser, e elas trocam mensagens validadas. O servidor do Caixote Chat continua a guardar só conteúdo cifrado.

Caixote Docs Caixote Chat Caixote Agenda Caixote RSS O teu browser postMessage origens validadas caixote-proto (wasm)

Caixote Docs ↔ Caixote Chat

Painel de chat dentro do Caixote Docs: «Enviar no chat…» a partir de um ficheiro e «Guardar no Caixote Docs» ao receber.

Chat ↔ Agenda

Partilha uma tarefa ou um evento numa conversa, como um cartão que remete para a app.

Tarefas e calendário no mesmo sítio

No Caixote Agenda, as tarefas com prazo aparecem no calendário da própria app (o módulo calendário).

Feeds → tudo

De um artigo no Caixote RSS, envia uma mensagem para o Caixote Chat, ou uma tarefa, um evento ou uma nota para o Caixote Docs. O receptor mostra o que chegou e pergunta antes de guardar. Os artigos a que dás estrela viram ficheiros Markdown numa pasta Notícias do Caixote Docs, pesquisáveis com tudo o resto (num só sentido: tirar a estrela apaga o ficheiro intacto; um ficheiro que editaste fica).

Uma só conta

As apps emparelham-se com um código de uso único, cada conta escolhe as apps que liga, e o início de sessão é partilhado por bilhete assinado, com desbloqueio automático opcional. A palavra-passe nunca circula entre apps.

Por baixo do capot

Pequenas, rápidas, auditáveis.

Cada uma das quatro apps ligadas é um binário Rust com poucas dependências, uma base SQLite e uma interface em JavaScript simples, sem frameworks e sem pedidos a terceiros por parte das quatro apps ligadas (as fontes são locais). As excepções são o que pedes: o Caixote RSS a obter feeds e imagens, e o email opcional. O Caixote CC2 pode mostrar ícones de marcas de filamento obtidos nos sites das próprias marcas (esses sites passam a ver o teu endereço); a opção vem ligada na app e desligada na demo.

AppServidorDadosSegurançaEstado de desenvolvimento
Caixote DocsRust · HTTP próprioFicheiros + SQLite (FTS5)Sessões, PBKDF2, CSRF, limites de tentativasem uso PWA em teste
Caixote ChatRust · SSE · WebRTCSQLite + blobs cifradosE2EE: X25519, Ed25519, AES-256-GCMfuncional PWA em teste · apps nativas a seguir
Caixote AgendaRust · rusqlite · SSESQLitePermissões no servidor, SSO por bilhete; agenda Privada cifrada no browser (PBKDF2 + AES-GCM)funcional PWA instalável, ainda sem modo offline
Caixote RSSRust · curl do sistemaSQLite (FTS5)HTML limpo duas vezes, proxy de imagens assinado, protecção SSRF, SSO por bilhetefuncional
Caixote CC2nginx · JS simples (+ Python para a verificação por IA)Um ficheiro JSON no servidorSem nuvem; a chave da IA fica no servidor (modo 600) e nunca é devolvidafuncional verificação por IA ainda não testada numa impressão real

Honestidade sobre os limites

A cifragem do Caixote Chat ainda não tem forward secrecy por mensagem (planeado: Double Ratchet / MLS), e o servidor vê metadados, como quem fala com quem e quando. Tudo o que está no Plano do Caixote Agenda, sincronizado com o Caixote Docs ou não, fica em claro no servidor (é o que permite lembrar, partilhar e sincronizar), por isso não tem cifragem de ponta a ponta; só a agenda Privada tem, e não se pode partilhar. Os limites do Caixote Chat estão escritos nas suas notas de desenho.

Testadas a sério

As funcionalidades entram com testes unitários, de API e de interface num Firefox real. Há ficheiros Docker para todas as apps, mas só o do Caixote Docs foi testado e ainda não há nada publicado.

Arrancar o Caixote Agenda sozinho (quando for lançado)

# Caixote Agenda → http://localhost:8350
podman run -d -p 8350:8350 -v caixote-agenda-data:/data caixote-agenda