Introducing Chattt - an open source CLI chat client

in #utopian-io6 years ago (edited)


chattt_logo_256

GitHub: aviaryan/chattt and aviaryan/chattt-backend


So the past 2 months I was slowly working on my hobby project called "Chattt" and I just did the v0.2 release recently. It's quite ready for public use now so I thought I should share it with everyone.

So what is Chattt?

Chattt is an open source terminal based chat system. Its selling point is that it is very simple to use and it doesn't require much technical knowledge. I created it because I always wanted to have a simpler chat system that worked right from the terminal. I know you might say, "IRC does the same thing" but the thing is that I have always found IRC too complex. But that could be because I haven't given it much of a shot.

Well whatever be the reason here, I went ahead and did this project. I even published it on npm. Here is how you can install and use it.

$ npm install -g chattt
$ chattt


Once installed, it's ready to use. The video below shows a demo.

The Development

Chattt was developed entirely in JavaScript(JS) which also happens to be my new favorite language. I had to create two GitHub repositories for it since it required both a backend and a frontend part.

The backend part of Chattt is an ExpressJS server using socket.io for interacting with chat clients i.e. the Chattt CLI instances. For those who don't know, socket.io is a convenient library for using web sockets in your projects. Chattt uses the same concept to implement its core i.e. the chatting feature.

I also needed a place to host the backend. Since it was just a hobby project and I wasn't too sure about its success, I didn't want to spend money on a compute server. But then I learned about Glitch which allows hosting of NodeJS projects for free. I gave it a try and after a few attempts, I was able to host chattt's backend on it.

Coming to the frontend part, I had to make a CLI for Chattt. This was a real challenge for me because a CLI chat application requires a very dynamic command-line interface i.e. the command line window should update-in-place. I didn't know how to do such a thing. But then I stumbled upon blessed, a terminal interface library which allowed me to do just that. So excited, I started learning how to use it. Now this was quite challenging since blessed's documentation was massive and I didn't understand the keywords used there (since I hadn't done CLI programming before). But then I came upon gitter-cli which was an open-source CLI chat client for Gitter and it also used the blessed library. So after going through its codebase, I was able to pick up blessed's concepts better and this helped me to finally develop the chattt's user interface(UI).

Connecting the UI with the backend to display chats was fairly easy once we had the UI so I won't be talking about that. But in the end, I think I did an impressive job on the UI, the result of which it looks like this now.


screen shot 2018-05-07 at 12 49 15 pm

What's Next?

Glad you asked. Chattt is still in an early phase (only v0.2) and I plan to add some more features to it. The most notable ones are -

  • Feature to set custom backend server in the client [v0.3]
  • Feature to view active user list of a channel before actually joining it [v0.3]

I also plan to generalize the Chattt frontend to support other chat/communication providers like Telegram and Discord. Many users have suggested me this and I will give it a try after publishing [v0.3]. If you don't want to miss on these updates, I would suggest watching the GitHub repo.

Conclusion

Chattt is one of the many "hobby" open source projects of mine. I learned a lot of new things developing it. I would really appreciate if you can share your suggestions and ideas regarding it with me on my Discord (aviaryan#7504) or GitHub. Seriously, they mean a lot. And thanks for reading this far. Bye! 😊

👋🏻👋🏻👋🏻

Sort:  

Hi, as we talked to each other via Discord, we understood that the post could be suitable for our blog category. Please note that we might not be tolerant of similar cases in the future. Our rules and guidelines are defined and accessible at https://join.utopian.io/rules/. If you are not sure with anything and need advice, you are welcome to ask us in Discord.

I think that you managed it quite well and we are looking for future posts. A minor suggestion for you is that you could stop putting some words in `` as code but you could emphasize them either with italics or bold font.

Link to the Answers of the Questionnaire - Click here


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Hi @espoem. Thanks for your immense help in getting this contribution accepted. You have my regards. I understand what you say, thanks for considering my case this time. I shall make sure to triple check before posting a contribution from next time.

Your suggestion about the overuse of `` code blocks is spot on. I should probably be careful of that in my writings.

Best Regards,
Avi

Hey @the-dragon
Here's a tip for your valuable feedback! @Utopian-io loves and incentivises informative comments.

Contributing on Utopian
Learn how to contribute on our website.

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Thanks for the contribution!

Please keep in mind that in the development category we only take commits made in the last 14 days into account when reviewing contributions. This means that the only eligible commits are this one and this one - together they don't contain enough development.


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Hey @the-dragon
Thanks for contributing on Utopian.
We're already looking forward to your next contribution!

Contributing on Utopian
Learn how to contribute on our website or by watching this tutorial on Youtube.

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Congratulations @the-dragon! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the total payout received

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.032
BTC 60318.52
ETH 2983.06
USDT 1.00
SBD 3.78