Stickly: post-it sincronizzati in tempo reale fra Windows, Android e browser, cifrati end-to-end

App di post-it sincronizzati in tempo reale fra Windows, Android e browser. Sul PC ogni nota è una finestra sul desktop o un'icona nella tray, sul telefono un widget nella home che si aggiorna anche ad app chiusa. Checklist, colori, promemoria e condivisione con altre persone, con la cifratura end-to-end: il server conserva note che non sa leggere.

Stickly è un'app di post-it che ho progettato e costruito da solo, dal server alle app. Una sola app Vue gira nel browser, dentro un guscio Tauri su Windows e dentro un guscio Capacitor su Android, e tutte si sincronizzano con il mio server, dove per ora si entra con un invito. Le immagini mostrano note d'esempio su una copia di prova: quelle vere sono cifrate, e nemmeno il server le legge.

**Che cosa fa**

- **Sul PC** ogni post-it ha una finestra sua, in primo piano o sul desktop, dove resta anche con Win+D. Fino a sei stanno nella tray come icone del loro colore; uno agganciato a un'app compare solo quando lei è davanti, e «Invia a Claude» ne manda il testo nella chat dell'app di Claude. - **Sul telefono** i widget nella home si aggiornano anche ad app chiusa, e le voci della checklist si spuntano dal widget. Ci sono anche le note sopra le altre app, il riquadro «Nuova nota» e «Condividi → Stickly». - **Ovunque**: checklist, colori ed emoji, formattazione con le scorciatoie, ricerca, «Posticipa» con la notifica quando la nota torna, cestino di trenta giorni, cronologia delle versioni, tema chiaro e scuro. Nel browser si installa come app e si apre anche senza rete. - **Insieme**: una nota si condivide per email, con chi può modificare o solo leggere, e le modifiche degli altri compaiono mentre le scrivono. - **Accesso** con password o passkey, il blocco delle app con l'impronta o Windows Hello, e le email del dominio per inviti, conferme e password dimenticata.

**La parte difficile: cifrare senza perdere il tempo reale**

Ogni nota è un documento Yjs. Una modifica diventa un aggiornamento che il dispositivo cifra con la chiave della nota (AES-256-GCM) e manda sul canale WebSocket da una coda locale, che regge anche senza rete. Il server conserva e inoltra blob che non sa aprire, numerati: un dispositivo rimasto indietro chiede solo quelli che gli mancano. La chiave della nota è sigillata per ogni persona con la sua chiave pubblica X25519: condividere vuol dire sigillarla per qualcuno in più, e chi esce fa cambiare chiave alla nota.

Dal widget di Android una voce si spunta senza aprire l'app: un lavoro in background scarica il documento cifrato, lo fa modificare allo stesso motore di sincronizzazione, che lì gira nel V8 di una WebView senza pagina, e manda l'aggiornamento. E i widget si aggiornano grazie a un collegamento che l'app tiene da sola con il server, senza Firebase né altri servizi.

Vue 3 e TypeScript, Tiptap su Yjs, Fastify e PostgreSQL in Docker sul mio server, Tauri 2 con Rust, Capacitor 8 con Kotlin; 244 prove automatiche in JavaScript, Rust e Kotlin.

Progettazione, sviluppo full-stack e pubblicazione · 2026

Vue.js, Fastify, Tauri, Capacitor, Yjs

Vedi il sito

Andrea Coppetta