DEV Community

ELLIOT ENTSIWAH
ELLIOT ENTSIWAH

Posted on Edited on AI-assisted

I'm building an open-source messenger for developers: This is what I have learned so far

Talking code in a regular chat app is frustrating. Snippets turn into walls of text. Pull request links get buried. And worst of all, people paste database URLs and API keys into chat, where they stay in the history forever.

So I started building Ack, an open-source messenger for developers.

What Ack does

Code blocks and diffs that look like they belong in an editor
Repo-linked rooms, so pull requests and CI results show up in the conversation

Secret vaults: the secret is encrypted in your browser and deleted after the recipient reveals it
Search that only finds people who have joined Ack, with an invite link for everyone else

Where it is today

Working now: sign in with GitHub, search for people who have joined Ack, send an invite link to anyone who hasn't, and chat one on one. Messages are stored in Appwrite and sync between devices. When a friend joins through your invite link, your chat opens automatically.

Still in progress: locking each conversation so only its two participants can read it, and making the secret vault delete the secret on the server, not just in the browser. Until both are done, please don't put real passwords or keys into Ack. Treat it as a test.

Using sample data for now: the pull request cards and the Reviews inbox. Real GitHub connections through a GitHub App come next.

Not built yet: voice and video calls and pair programming. They're designed, and they're switched off behind feature flags until they work for real.

Try it: https://project-ack.vercel.app
Repo: https://github.com/kingenious0/ACK

How I'm building it

I'm not a hand-coder, and I'm upfront about that. I research the idea, write a spec, hand it to an AI coding IDE, build in small phases, test each phase, and review what the AI produced. The stack is Vite, React 19, TypeScript, Appwrite for sign-in and the database, and Vercel for hosting. I have been doing this for about 2 years now and it is really helping me.

Three things I learned

1. A display name is not a username.
My first version guessed a person's GitHub handle from their display name, and the link led to a GitHub 404. Display name and login handle are different fields. The fix was to fetch the real profile from GitHub's API after sign-in and store GitHub's numeric user ID, which never changes.

2. Don't search all of GitHub.
I first let anyone message any GitHub username. That means messages can pile up for someone who never agreed to join, and a stranger can spam them. Now search only looks at people who have joined Ack. If someone isn't there, you get an invite link, and nothing is stored for them until they sign up.

3. Be honest about security from day one.
I removed "end-to-end encrypted" from the app because it wasn't true yet. Saying less and being right builds more trust than a big claim.

What's next

Real-time sync, connecting GitHub repos through a GitHub App so pull requests and CI results appear in chat, and then calls.

Thanks for reading. If you try Ack, tell me what breaks.

Top comments (0)