Post

La Gazette : Journal familial numérique

Découvrez comment j'ai développé un réseau social et un journal familial auto-hébergé pour ma famille

La Gazette : Journal familial numérique

Il y a quelques années, ma famille a lancé une tradition pour rester en contact et partager régulièrement de nos nouvelles : une gazette familial. Chaque mois, chaque membre de la famille contribuait avec de courtes anecdotes, des photos et des mises à jour sur ce qu’il ou elle avait fait. Ces histoires étaient ensuite compilées, éditées et imprimées dans un journal physique, que nous envoyions à nos grands-parents. Une version PDF numérique était également partagée par e-mail, afin que tout le monde puisse profiter des mises à jour, peu importe où il se trouvait.

Ce projet est devenu une merveilleuse façon de préserver les souvenirs, d’animer les conversations et de partager des moments avec toute la famille. Cependant, cela impliquait également une charge de travail significative. Collecter les anecdotes par e-mail, trier les photos, tout formater dans un modèle, imprimer et envoyer (physiquement et numériquement) nécessitait du temps et des efforts de la part de chacun.

C’est pourquoi j’ai décidé de simplifier le processus en créant La Gazette, un journal familial numérique. Inspiré par l’idée d’un réseau social privé, La Gazette nous permet de :

  • Collecter les anecdotes et les photos directement dans l’application, éliminant ainsi le besoin d’échanges par e-mail.
  • Compiler automatiquement les mises à jour mensuelles dans un fil d’actualité numérique, rendant la consultation facile et agréable.
  • Accéder aux éditions précédentes et aux anecdotes dans une chronologie, afin qu’aucun souvenir ne soit jamais perdu.
  • Générer des versions PDF de chaque édition, préservant ainsi la tradition de partager un journal physique avec les grands-parents et les membres de la famille.

Application Web

Accessibilité pour tous

Ma priorité absolue était de m’assurer que l’application soit accessible à tous les membres de la famille, quel que soit leur appareil (PC, Android ou iOS), tout en gardant la configuration aussi simple que possible. Une application web était le choix naturel : aucune installation requise, juste un navigateur et un lien. Ainsi, même les membres de la famille les moins à l’aise avec la technologie pouvaient participer sans effort.

J’ai choisi Flutter pour le développement en raison de mon expérience précédente avec ce framework lors d’un projet embarqué où j’avais créé une application mobile. Les capacités multiplateformes et web de Flutter en faisaient l’outil idéal pour créer une expérience réactive et cohérente sur tous les appareils.

UX/UI

Cependant, comme le design web n’est pas mon point fort, j’ai commencé avec un modèle d’interface utilisateur Flutter appelé SocialV, conçu pour les réseaux sociaux. J’ai supprimé les fonctionnalités inutiles pour me concentrer sur ce qui comptait pour La Gazette et j’ai ajouté des fonctionnalités personnalisées là où c’était nécessaire. Le résultat est une interface propre et intuitive qui rend l’expérience simple et agréable pour tout le monde.

Fonctionnalités

Avec l’interface en place, l’accent a été mis sur le développement de la logique métier pour les fonctionnalités clés de La Gazette.

  • Fil d’anecdotes : La première fonctionnalité était un affichage de type fil d’actualité pour toutes les anecdotes, similaire aux plateformes de réseaux sociaux. Chaque anecdote est présentée avec le nom de l’auteur, sa photo de profil, la date de publication et les images jointes, ce qui facilite la consultation des mises à jour familiales.

Page du fil d'actualité Page du fil d’actualité

  • Soumission directe : Ensuite, j’ai développé un système pour ajouter de nouvelles anecdotes directement dans l’application. Chaque membre de la famille dispose d’un compte personnel, lui permettant de soumettre rapidement des histoires pour l’édition du mois suivant. Pour plus de flexibilité, j’ai également ajouté la possibilité de modifier ou supprimer les anecdotes soumises pour le mois en cours.

Page de soumission Page de soumission

  • Panneau d’administration pour la compilation : À la fin de chaque mois, toutes les anecdotes soumises sont rassemblées dans un panneau d’administration. Le membre de la famille responsable de la création du journal de ce mois peut alors accéder à ce panneau pour compiler le contenu. Initialement, cela impliquait de copier et coller manuellement le texte et les images dans un document pour générer le PDF, un processus qui, bien que fonctionnel, était encore chronophage.

Page d'administration Page d’administration

  • Génération automatique de PDF : Pour rationaliser davantage ce processus, j’ai développé un outil pour générer automatiquement le journal en PDF, complet avec toutes les anecdotes formatées et prêtes à être partagées. Cela élimine le travail manuel, rendant le processus plus rapide et plus efficace.

  • Archive des éditions : Un espace dédié est réservé pour stocker et consulter tous les anciens journaux en PDF, permettant aux membres de la famille de revisiter les éditions précédentes et de revivre les souvenirs à tout moment.

Page d'archives Page d’archives

Backend

Pour le backend, j’avais besoin d’une solution pour stocker toutes les anecdotes (texte, images et métadonnées), héberger les journaux PDF générés et gérer l’authentification des utilisateurs pour les membres de la famille. J’ai choisi PocketBase, un backend open-source et léger qui combine une base de données, un stockage de fichiers et une authentification en un seul package auto-hébergé.

PocketBase est conçu pour la simplicité et la scalabilité, ce qui en fait un choix parfait pour des applications de petite envergure comme La Gazette. Étant donné que ma famille ne va pas soudainement passer à des milliers d’utilisateurs, sa nature légère et sa facilité d’utilisation étaient idéales. Le panneau d’administration me permet de gérer directement les méthodes d’authentification, le schéma de la base de données et les paramètres sans configurations complexes.

PocketBase Panneau d’administration de PocketBase

Son installation minimale et son interface intuitive en ont fait le choix parfait pour ce projet.

Auto-hébergement

L’un des objectifs principaux de ce projet était d’auto-héberger l’ensemble de l’application, y compris le backend, afin de garder un contrôle total sur nos données et d’éviter les frais d’hébergement. Comme PocketBase supporte l’auto-hébergement, cela correspondait parfaitement à cet objectif.

Étant donné que j’avais déjà un serveur domestique en fonctionnement, le déploiement de La Gazette a été simple. J’ai simplement créé un nouveau conteneur Docker pour PocketBase et l’application web Flutter, et tout était opérationnel. Cette approche garantit que toutes les histoires et données de ma famille restent privées, sécurisées et entièrement dans mon propre infrastructure.

Si vous souhaitez en savoir plus sur mon serveur domestique, consultez mon article ici.

Conclusion

La Gazette est bien plus qu’un simple outil—c’est un projet amusant qui maintient ma famille connectée tout en réduisant considérablement la charge de travail manuel nécessaire à la création de notre journal mensuel. À ce jour, plus de 500 anecdotes ont été soumises et 29 éditions ont été créées, préservant nos souvenirs partagés de manière simple et agréable pour tous.

Je travaille toujours activement sur des améliorations, comme l’ajout d’une carte pour visualiser les anecdotes familiales à travers le monde et l’affichage de statistiques amusantes sur nos soumissions.

Si vous êtes curieux ou souhaitez créer quelque chose de similaire, l’intégralité du code source (y compris le fichier de schéma PocketBase) est librement disponible sur GitHub : https://github.com/nicopaulb/Gazette.

Cet article est sous licence CC BY 4.0 par l'auteur.