Synoid
Un registre collaboratif de liens auto-hébergeable pour conserver, retrouver et discuter ses ressources depuis le web et le mobile.
Galerie
5 capturesContexte
Synoid est un registre collaboratif de liens auto-hébergeable. Il permet de conserver des ressources web, de les retrouver et d’en discuter sans déléguer la maîtrise des données à une plateforme centralisée.
Conception
Le projet sépare un client commun Next.js, disponible en PWA et sur Android avec Capacitor, des instances API NestJS indépendantes. Chaque instance possède sa base PostgreSQL, ses utilisateurs et son stockage local. Un même client peut conserver plusieurs connexions à ces instances.
Les contrats TypeScript sont regroupés dans un package partagé. Kysely porte les requêtes SQL et Drizzle les migrations. Un worker séparé traite l’enrichissement des liens via une file PostgreSQL et Chromium headless.
Fonctionnalités
- Création et édition de liens avec visibilité privée, partagée ou publique
- Partage explicite avec d’autres utilisateurs et permissions sur les ressources
- Classification par tags et recherche full-text PostgreSQL
- États personnels de lecture, favoris et archives combinables avec les filtres
- Commentaires en fils, réponses, mentions et activité des ressources
- Enrichissement asynchrone des métadonnées et captures de pages
- Interface responsive avec thèmes clair et sombre
- Déploiement auto-hébergé avec Docker Compose
Contraintes
L’isolation repose sur chaque instance API. La recherche et la détection des doublons doivent respecter la visibilité des ressources. Le traitement des URL externes s’effectue dans un pipeline d’enrichissement sécurisé, distinct des requêtes interactives.
La PWA propose une lecture hors ligne dégradée. Les modifications de ressources et de commentaires nécessitent une connexion et un nouvel essai explicite en cas d’échec.