Stickly : des post-it synchronisés en temps réel entre Windows, Android et le navigateur, chiffrés de bout en bout

Une application de post-it synchronisés en temps réel entre Windows, Android et le navigateur. Sur le PC, chaque note est une fenêtre sur le bureau ou une icône dans la zone de notification ; sur le téléphone, un widget qui se met à jour même application fermée. Checklists, couleurs, rappels et partage, avec un chiffrement de bout en bout : le serveur garde des notes qu'il ne sait pas lire.

Stickly est une application de post-it que j'ai conçue et développée seul, du serveur aux applications. Une seule application Vue tourne dans le navigateur, dans une coque Tauri sous Windows et dans une coque Capacitor sous Android, et toutes se synchronisent avec mon serveur, où l'on entre pour l'instant sur invitation. Les images montrent des notes d'exemple sur une copie de test : les vraies sont chiffrées, et même le serveur ne les lit pas.

**Ce qu'elle fait**

- **Sur le PC**, chaque post-it a sa propre fenêtre, au premier plan ou sur le bureau, où il reste même après Win+D. Jusqu'à six se rangent dans la zone de notification, en icônes de leur couleur ; un post-it accroché à une application n'apparaît que lorsqu'elle est devant, et « Invia a Claude » (envoyer à Claude) envoie son texte dans le chat de l'application Claude. - **Sur le téléphone**, les widgets de l'écran d'accueil se mettent à jour même application fermée, et les éléments de la checklist se cochent depuis le widget. Il y a aussi les notes par-dessus les autres applications, la vignette « Nuova nota » (nouvelle note) des réglages rapides et Partager → Stickly. - **Partout** : checklists, couleurs et emoji, mise en forme avec raccourcis, recherche, report avec une notification quand la note revient, corbeille de trente jours, historique des versions, thème clair et sombre. Dans le navigateur, elle s'installe comme une application et s'ouvre même hors ligne. - **À plusieurs** : une note se partage par e-mail, avec qui peut la modifier ou seulement la lire, et leurs modifications apparaissent pendant qu'elles écrivent. - **Connexion** par mot de passe ou clé d'accès, verrouillage des applications par empreinte ou Windows Hello, et e-mails du domaine pour invitations, confirmations et mots de passe oubliés.

**Le plus difficile : chiffrer sans perdre le temps réel**

Chaque note est un document Yjs. Une modification devient une mise à jour que l'appareil chiffre avec la clé de la note (AES-256-GCM) et envoie sur le canal WebSocket depuis une file locale qui tient même hors ligne. Le serveur conserve et relaie des blobs qu'il ne sait pas ouvrir, numérotés : un appareil resté en retard ne demande que ceux qui lui manquent. La clé d'une note est scellée pour chaque personne avec sa clé publique X25519 : partager, c'est la sceller pour une personne de plus, et quand quelqu'un s'en va, la note change de clé.

Depuis le widget Android, un élément se coche sans ouvrir l'application : une tâche en arrière-plan télécharge le document chiffré, le fait modifier par le même moteur de synchronisation, qui tourne là dans le V8 d'une WebView sans page, et envoie la mise à jour. Et les widgets restent à jour grâce à une connexion que l'application garde seule avec le serveur, sans Firebase ni autre service.

Vue 3 et TypeScript, Tiptap sur Yjs, Fastify et PostgreSQL dans Docker sur mon serveur, Tauri 2 avec Rust, Capacitor 8 avec Kotlin ; 244 tests automatisés en JavaScript, Rust et Kotlin.

Conception, développement full-stack et mise en ligne · 2026

Vue.js, Fastify, Tauri, Capacitor, Yjs

Voir le site

Andrea Coppetta