---
title: "VizMail"
description: "Client email desktop MAUI .NET avec API HTTP pour agents IA — 34 fonctionnalités, 131 tests."
created: 2026-05-05T10:00:00+02:00
updated: 2026-05-13T18:46:00+02:00
tags: ["MAUI", ".NET", "Email", "API", "IA"]
url: ""
icon: "/images/icons/icon-envelope.svg"
image: "/images/projects/vizmail-cover.webp"
card: "/images/projects/vizmail-card.webp"
---

## Le projet

VizMail est un client email **desktop** construit avec MAUI .NET 10. L'objectif de départ était simple : un client mail local qui lit la boîte de réception, affiche les threads, gère les labels. L'objectif qui a émergé en cours de route était plus intéressant : exposer tout ça via une API HTTP pour que des agents IA puissent lire et traiter les mails sans passer par un navigateur.

Sans API, un agent est aveugle : il ne peut ni lire un mail entrant, ni archiver, ni répondre, ni déclencher une action. Avec une API propre, un agent peut faire tout ça de manière programmatique — et une application comme [Lain](/projects/lain) peut orchestrer ces flux sans intervention humaine.

## Stack technique

- **UI** : MAUI .NET 10 (Windows desktop natif)
- **Base de données** : SQLite via EF Core (messages, threads, labels, état de synchronisation)
- **Protocoles email** : IMAP (MailKit) + Outlook via Microsoft Graph API
- **API HTTP** : HttpListener .NET embarqué dans le processus MAUI, documenté via un skill Markdown servi par l'API elle-même
- **Tests** : xUnit, 131 tests couvrant services, handlers et endpoints API

## Fonctionnalités

34 fonctionnalités livrées, organisées en quatre domaines :

**Lecture et navigation**
- Boîte de réception unifiée avec pagination
- Vue thread (conversations groupées)
- Recherche full-text dans les messages
- Filtres par label, statut lu/non-lu, expéditeur

**Gestion des messages**
- Marquer lu/non-lu (individuel et en masse)
- Archiver, supprimer, déplacer
- Labels custom + labels système (inbox, sent, archive, trash)
- Gestion des pièces jointes (liste + téléchargement)

**API HTTP pour agents IA**
- Endpoints REST complets sur l'ensemble des opérations ci-dessus
- Authentification par token locale (pas d'OAuth externe à configurer)
- Documentation Markdown auto-servie par l'API (`/api/skill`), toujours à jour
- Réponse structurée JSON, conçue pour être consommée par un agent sans parsing fragile

**Synchronisation**
- Sync IMAP incrémentale (IDLE + polling fallback)
- Sync Outlook via Microsoft Graph (delta queries)
- Gestion des conflits et des états locaux hors-ligne

## Méthode de développement

VizMail a été développé entièrement via **agent-driven development** avec [KittyClaw](/projects/kittyclaw) comme orchestrateur. Chaque fonctionnalité était un ticket assigné à un agent `programmer`. L'agent écrivait le code, un agent `qa-tester` vérifiait, un agent `committer` poussait. Aucun code n'a été écrit à la main.

Ce mode de travail a permis de livrer 34 fonctionnalités avec 131 tests et 0 régression — sans aucune journée de debug en cascade, parce que chaque changement était testé avant d'être committé.

Le retex complet de la construction de l'API HTTP est disponible dans l'article [Comment j'ai construit l'API VizMail avec des agents IA](/blog/vizmail-api-retex).

## Résultats

| Métrique | Valeur |
|---|---|
| Fonctionnalités livrées | 34 |
| Tests automatisés | 131 |
| Régressions | 0 |
| Statut | Livré ✓ |

## Ce que ça démontre

VizMail n'est pas un projet "pour apprendre MAUI". C'est une preuve que l'agent-driven development fonctionne sur un domaine métier complexe (mail, synchronisation, protocoles réseau) avec une contrainte de qualité forte (0 régression, 131 tests). L'API HTTP n'était pas dans le cahier des charges initial — elle a émergé parce que l'outillage (KittyClaw + agents) permettait de l'ajouter sans friction.
