AppStandard
Suite de 3 applications web de productivité (Calendar, Tasks, Contacts) basées sur les standards ouverts RFC 5545 et RFC 6350.
Galerie
Présentation
AppStandard est une suite de productivité composée de trois applications web : Calendar (agenda), Tasks (tâches) et Contacts (carnet d’adresses). Le projet implémente les standards ouverts RFC 5545 (iCalendar) et RFC 6350 (vCard) pour garantir l’interopérabilité avec les applications existantes.
L’objectif est de proposer une alternative respectueuse de la vie privée aux solutions propriétaires (Google Calendar, Apple Contacts), avec un code open source et la possibilité d’héberger soi-même ses données.
Le projet représente plus de 216 000 lignes de TypeScript, organisées en monorepo avec 19 packages partagés.
Objectifs, contexte, enjeu et risques
Contexte : Projet personnel développé en parallèle de mon alternance, né d’une frustration personnelle : impossible d’exporter proprement mes événements Google Calendar vers une autre application sans perdre des données.
Problématique : Les solutions de productivité existantes (Google, Apple, Microsoft) sont propriétaires et posent des questions de confidentialité des données. Les alternatives open source existantes étaient souvent incomplètes ou mal maintenues.
Objectifs : Créer une suite d’applications interopérables basée sur les standards ouverts RFC 5545 (iCalendar) et RFC 6350 (vCard), permettant à chacun d’héberger ses propres données.
Risques identifiés : Complexité de l’implémentation des standards RFC, volume de code important à maintenir seul, temps de développement conséquent.
Étapes – ce que j’ai fait
Phase 1 - Recherche et prototypage : Lecture approfondie des RFC 5545 et 6350 (plus de 200 pages de spécifications). Développement de prototypes pour valider la faisabilité du parsing.
Phase 2 - Architecture monorepo : Mise en place de l’architecture avec 19 packages partagés. Choix de Turborepo pour la gestion du build et le cache intelligent.
Phase 3 - Développement des parsers : Implémentation complète des parsers et sérialiseurs. Le plus complexe : gérer les récurrences d’événements (RRULE) avec toutes leurs exceptions possibles.
Phase 4 - Applications et UI : Création des trois applications avec React 19. Développement d’un design system partagé pour garantir la cohérence visuelle.
Phase 5 - Infrastructure : Backend Node.js, PostgreSQL, pipeline CI/CD GitHub Actions, et déploiement Docker avec docker-compose pour le self-hosting.
Équipe
J’ai travaillé seul sur l’intégralité du projet. Lecture des spécifications RFC, architecture monorepo, développement des parsers et des trois applications, publication des packages NPM et mise en place de l’infrastructure : tout a été réalisé en autonomie.
Résultats
- TypeScript à grande échelle : 216k+ lignes, ça forge
- Standards ouverts RFC 5545 et RFC 6350 : lus, compris, implémentés
- Architecture monorepo et publication de packages NPM
- React 19 et les pratiques frontend récentes
- Capable de lire une spec technique de 200 pages et de l’implémenter
- Trois applications fonctionnelles et interopérables disponibles en open source
- Packages NPM publiés et réutilisables (parsers RFC 5545, RFC 6350)
- Documentation technique complète pour faciliter les contributions
- Alternative open source et respectueuse de la vie privée aux solutions propriétaires