User
- login · avatar_url
- is_admin · is_banned
- extension_connected_at
- n—n Conversation
- 1—n Message
- 1—n Subscription
Un canal de discussion sur chaque dépôt, issue, organisation et équipe GitHub.
Sur GitHub, la discussion autour d’un dépôt se disperse entre les commentaires d’issues, un Slack ou un Discord à part, et des messages privés. Ces outils ne savent pas qui a accès à quel dépôt : on ouvre un salon, puis on gère les accès à la main, et ils dérivent.
Relier messagerie d'équipe et workflows GitHub pour la collaboration développeur.
GitChat ajoute un onglet de discussion directement sur les pages GitHub : un salon par dépôt, par issue ou pull request, par organisation ou par équipe, et des messages directs sur les profils. Un salon n’est ouvert qu’aux personnes qui ont déjà accès à la page sur GitHub, et ce droit est revérifié auprès de GitHub à chaque requête. Une application Laravel sert le web et l’API ; une extension Manifest V3 injecte l’onglet et affiche le chat dans le panneau latéral.
En ligne, avec une extension pour Chrome et Firefox en trois langues, 19 types d’aperçus de liens, des notifications natives et un résumé quotidien par e-mail. L’exploitation est outillée : sonde de santé qui encode son verdict dans le code HTTP, deux battements de cœur, trois surveillants indépendants et un CHANGELOG généré depuis les tags.
Fondateur et développeur full-stack
Utilisateurs
Application
Services externes
L’utilisateur se connecte avec GitHub OAuth sur l’application.
Depuis la popup, « Connecter » ouvre une page qui crée un jeton Sanctum et un ticket à usage unique valable deux minutes.
Un content script lit le ticket dans une balise meta ; le service worker l’échange contre le jeton. Le ticket ne transite jamais par une URL.
Sur une page GitHub, l’extension déduit la portée — issue avant dépôt, équipe avant organisation — et ajoute l’onglet.
Le panneau latéral appelle l’API ; Laravel revérifie les droits auprès de GitHub. Un administrateur du dépôt crée le salon, les autres le rejoignent.
Le fil ouvert est interrogé toutes les trois secondes, l’extension toutes les minutes ; les salons dont le caractère public n’est pas établi sont caviardés.
Les entités principales, leurs champs clés et leurs relations.
Par dépôt, issue ou PR, organisation et équipe, plus des messages directs.
Réactions, mentions, réponses, modification, pièces jointes et GIF.
19 types de cartes : dépôt, issue, gist, discussion, comparaison, YouTube…
Natives dans l’extension, et résumé quotidien des non-lus par e-mail.
Avec un fournisseur de paiement interchangeable.
Export et suppression du compte.
ProblèmeLe fichier de tâches renvoyait une closure que Laravel 11 n’appelait jamais : aucune tâche planifiée ne tournait, sans aucune erreur.
SolutionTâches déclarées via la façade Schedule, et un test qui verrouille leur liste.
ProblèmeLa route /up répond 200 même quand la base est tombée.
SolutionUne route /health qui encode le verdict dans le code HTTP, et deux battements de cœur qui distinguent un worker inactif d’un worker mort.
ProblèmeTrois jobs de synchronisation journalisaient « synced » sans rien faire, faute de jeton utilisateur côté planificateur.
SolutionJobs supprimés au profit de lectures en direct avec le jeton de la personne connectée.
ProblèmeUne sonde planifiée toutes les heures n’a tourné que quatre fois en seize heures.
SolutionUn chien de garde lancé par cron, hors de Laravel, qui n’alerte qu’aux changements d’état.
ProblèmeAvec une limite de 10 par minute, les cartes suivantes retombaient en simple lien.
SolutionLimite portée à 60 par minute, les réponses étant déjà en cache.
Relevé dans le code source et l’historique Git du projet le 8 octobre 2026. Aucun chiffre d’usage ou de revenu n’est publié.
Disponible pour missions PHP / Laravel / WordPress / Silverstripe en Belgique et remote EU.