User
- login · avatar_url
- is_admin · is_banned
- extension_connected_at
- n—n Conversation
- 1—n Message
- 1—n Subscription
A chat channel on every GitHub repository, issue, organisation and team.
On GitHub, discussion around a repository is scattered across issue comments, a separate Slack or Discord, and private messages. Those tools don’t know who can access which repository: you open a channel, then manage access by hand, and it drifts.
Bridge team chat and GitHub workflows for developer collaboration.
GitChat adds a chat tab right on GitHub pages: one channel per repository, issue or pull request, organisation or team, plus direct messages on profiles. A channel is only open to people who already have access to the page on GitHub, and that right is re-checked with GitHub on every request. A Laravel application serves the web app and the API; a Manifest V3 extension injects the tab and shows the chat in the side panel.
Live, with an extension for Chrome and Firefox in three languages, 19 link-preview types, native notifications and a daily e-mail digest. Operations are tooled: a health probe that puts its verdict in the HTTP status, two heartbeats, three independent watchers and a CHANGELOG generated from tags.
Founder & full-stack developer
Users
Application
External services
The user signs in to the app with GitHub OAuth.
From the popup, “Connect” opens a page that creates a Sanctum token and a single-use ticket valid for two minutes.
A content script reads the ticket from a meta tag; the service worker exchanges it for the token. The ticket never travels in a URL.
On a GitHub page, the extension works out the scope — issue before repository, team before organisation — and adds the tab.
The side panel calls the API; Laravel re-checks permissions with GitHub. A repository admin creates the channel, others join it.
The open thread is polled every three seconds, the extension every minute; channels whose public status isn’t established are redacted.
The main entities, their key fields and their relations.
Per repository, issue or PR, organisation and team, plus direct messages.
Reactions, mentions, replies, editing, attachments and GIFs.
19 card types: repository, issue, gist, discussion, compare, YouTube…
Native in the extension, plus a daily e-mail digest of unread messages.
With a swappable payment provider.
Account export and deletion.
ProblemThe schedule file returned a closure Laravel 11 never called: no scheduled task ran, and nothing reported it.
FixTasks declared through the Schedule facade, and a test that locks their list.
ProblemThe /up route answers 200 even when the database is down.
FixA /health route that puts the verdict in the HTTP status, and two heartbeats that tell an idle worker from a dead one.
ProblemThree sync jobs logged “synced” while doing nothing, as the scheduler had no user token.
FixJobs removed in favour of live reads with the signed-in user’s token.
ProblemAn hourly scheduled probe ran only four times in sixteen hours.
FixA cron watchdog, outside Laravel, that only alerts on state changes.
ProblemWith a limit of 10 per minute, later cards fell back to plain links.
FixLimit raised to 60 per minute, as responses were already cached.
Taken from the project’s source code and Git history on 8 October 2026. No usage or revenue figures are published.
Available for PHP / Laravel / WordPress / Silverstripe missions in Belgium and remote EU.