Stickly: notas autocolantes em tempo real entre Windows, Android e o navegador, cifradas de ponta a ponta

Uma aplicação de notas autocolantes sincronizadas em tempo real entre Windows, Android e o navegador. No PC cada nota é uma janela no ambiente de trabalho ou um ícone na área de notificação; no telemóvel, um widget do ecrã inicial que se atualiza mesmo com a aplicação fechada. Checklists, cores, lembretes e partilha, com cifragem de ponta a ponta: o servidor guarda notas que não sabe ler.

O Stickly é uma aplicação de notas autocolantes que concebi e desenvolvi sozinho, do servidor às aplicações. Uma única aplicação Vue corre no navegador, dentro de uma camada Tauri no Windows e dentro de uma camada Capacitor no Android, e todas se sincronizam com o meu servidor, onde por agora se entra por convite. As imagens mostram notas de exemplo numa cópia de teste: as verdadeiras estão cifradas, e nem o servidor as consegue ler.

**O que faz**

- **No PC** cada nota tem a sua janela, sempre visível ou no ambiente de trabalho, onde fica mesmo depois de Win+D. Até seis ficam na área de notificação como ícones da sua cor; uma nota presa a uma aplicação só aparece quando essa aplicação está à frente, e «Invia a Claude» (enviar ao Claude) manda o texto para o chat da aplicação do Claude. - **No telemóvel** os widgets do ecrã inicial atualizam-se mesmo com a aplicação fechada, e os itens da checklist marcam-se no próprio widget. Há também notas por cima das outras aplicações, o mosaico «Nuova nota» (nova nota) nas definições rápidas e Partilhar → Stickly. - **Em todo o lado**: checklists, cores e emojis, formatação com atalhos de teclado, pesquisa, adiar com uma notificação quando a nota volta, reciclagem de trinta dias, histórico de versões, tema claro e escuro. No navegador instala-se como aplicação e abre mesmo sem rede. - **Em conjunto**: uma nota partilha-se por e-mail, com quem pode editar ou só ler, e as alterações dos outros aparecem enquanto escrevem. - **Acesso** com palavra-passe ou chave de acesso, bloqueio das aplicações com impressão digital ou Windows Hello, e e-mails do domínio para convites, confirmações e palavras-passe esquecidas.

**A parte difícil: cifrar sem perder o tempo real**

Cada nota é um documento Yjs. Uma alteração torna-se uma atualização que o dispositivo cifra com a chave da nota (AES-256-GCM) e envia pelo canal WebSocket a partir de uma fila local, que aguenta também sem rede. O servidor guarda e reencaminha blobs que não sabe abrir, numerados: um dispositivo que ficou para trás pede só os que lhe faltam. A chave de uma nota é selada para cada pessoa com a sua chave pública X25519: partilhar significa selá-la para mais alguém, e quando alguém sai, a nota muda de chave.

No widget do Android, um item marca-se sem abrir a aplicação: uma tarefa em segundo plano descarrega o documento cifrado, manda-o alterar pelo mesmo motor de sincronização, que ali corre no V8 de uma WebView sem página, e envia a atualização. E os widgets mantêm-se atualizados graças a uma ligação que a aplicação mantém sozinha com o servidor, sem Firebase nem outros serviços.

Vue 3 e TypeScript, Tiptap sobre Yjs, Fastify e PostgreSQL em Docker no meu servidor, Tauri 2 com Rust, Capacitor 8 com Kotlin; 244 testes automáticos em JavaScript, Rust e Kotlin.

Conceção, desenvolvimento full-stack e publicação · 2026

Vue.js, Fastify, Tauri, Capacitor, Yjs

Ver o site

Andrea Coppetta