Interested in contributing to Messaging App?

Anyone interested in contributing to an open source Phoenix based team chat app, similar to Rocket.Chat? I have a pretty feature rich version thats already being used by our company. I’m going to release the source very soon. Would like help in all areas, especially some redesign of the front end.

I’ll post more details very soon. Let me know if you might be interested in contributing.


Ooo, is it built on phoenix? That’d be cool. :slight_smile:


@OvermindDL1 Yes!, Here are some additional details…

Architecture Notes

  • Elixir & Phoenix Backend
  • Light JS frontend
  • After initial page load, channels are used for UI rendering. HTML is rendered on the server and pushed to the client over channel
  • Originally build as a stand-a-lone single app.
  • In the process of refactoring it to be extensible through plugins
  • We will be using it for a client framework with initial support for the chat app and our commercial WebRTC soft phone (delivered as a plugin)

Current Features Implemented

  • Multiple channel types (public, private, direct messages)
  • Favourite channels
  • @mentions with audible and badge notifications
  • Presence with override
  • Message editing, pinning, starring, deleting
  • About 30 slash commands (create room, invite user, …)
  • Autolink and preview urls
  • Drag and drop file update with image and video preview
  • Emoji support with picker
  • Message reactions
  • Unread message handling
  • Customizable Role and Permission system
  • Some basic Bot experimental support
  • Code syntax highlighting
  • Profile editing and admin pages
  • Very configurable
  • and more …

Feature Roadmap

  • Peer to peer Video
  • Peer to peer Audio
  • Presence adapters for on-the-phone presence with Asterisk PBX
  • Mobile clients and Push notifications
  • Email and SMS notifications
  • OTR Conversations
  • Live chat feature
  • 3rd party integration (web hooks, Rest API)
    • BitBucket
    • Github
    • Jira
  • OAuth and LDAP
  • XMPP Integration
  • Internalization (Much of the UI uses gettext already)
  • UI theming
  • and more …

Huh, this would be nice to toss in to my existing system at work (if it is composable, I can PR if not) as a nice little bonus soon. :slight_smile:

We have both an onsite EMail (never touches the internet) and a hosted SMS Notification service at work, so I can test that the integrations work well. :slight_smile:

Yeah we use both of these at work so that would be nice. However I’ve built an entire login system that uses those as well as local Oracle database calls to perform logins so I will need some way to tie in to my system, I can try to PR things for that.

I’ve become exceptional the past few months at performing magic with CSS without needing javascript for a lot of things. ^.^

Would be nice to integrate with others as well, we have a PBX system here that, well, pre-dates Asterisk, but it does have API calls, so it would be nice to see if they’d let me call that here too. :slight_smile:


I’m preparing for github right now. I’m thinking about a two project approach. First, I’ll put working source (before introducing plugin model rearchitecture) into a temporary project that people can try. I’ll also create the project with my new architecture (also renamed it) which will be the main project moving forward.

I’m also going to throw up a live demo. Perhaps we can use the live demo for design discussions :slight_smile:


Does it permanently store messages for unlimited lookback? I’d definitely need that (not allowed to host anything that does not permanently store, well, everything).

Yes. All messages are persisted in the database. Right now, if you delete a message, it is removed from the DB. But I’m going to add a configuration that does not delete the message, but marks it deleted. Also need to deal with deleting channel, or user and what happens to those messages.

1 Like

Looks and amazing project, I have a question, have you any plan about security? Or simply TLS encryption, also messages encripted etc…

That would be perfect! I rarely ever delete anything, ever, rather I have, well, you know the timestamps that phoenix adds by default? I have a removed_at timestamp as well that is nullable (and null by default) and I just check if it is null in my queries, it is ubiquitous through-out . If something has a primary key that may be created again then I just primary key it with the removed_at when null (so it does not exist for calculations if removed_at is not null).


Right now, I think TLS is going to be enough for our customers. However, as an open source project, I’m expecting that we will be adding additional security measures like encrypting messages in the DB.

1 Like

Ok, I’ve pushed the source of the project (pre architecture change) to the UcxChat temporary repo. I’m working on hosting it now. Should have something soon.

Please be easy on me. There is some code in there I’m not proud of and needs to be refactored.


We all know how that goes! ^.^

1 Like

I have an instance available for anyone that wants to try it. Click on the Register a new account link to get an account. Let me know if you want temporary admin privileges after you login and I’ll grant it.

I do not understand this statement. AFAIK Rocket.Chat is already open source. So you want to have an open source version of an open source software?

Ya. I didn’t proof read that when I wrote it. Meant to say, "an open source Phoenix based team chat app, similar to Rocket.Chat. "



I’d like to see how admin is. I’m OvermindDL1 there, however when I try to log in I get Internal server error. ^.^;

1 Like

@OvermindDL1 I’ll check the server logs. BTW, your an admin now, once we get yet you logged in

@OvermindDL1 Just fixed syslog on the server. Can you try logging in again please

Went to main page, put in username, put in password, got Internal server error. :slight_smile:

@OvermindDL1 I’m not getting a timezone offset from your browser. I don’t validate the input and trying to convert “” to an integer. Can you try chrome for now. I need to do more cross browser testing.