Utopian Messaging/Chat Application
Repositories
Backend:
https://github.com/tensor-programming/utopian-chat-server
Frontend:
https://github.com/tensor-programming/utopian-chat-client
New Projects
- What is the project about?
This application contains the back-end and front-end for the Utopian Messaging Module. This Module is a part of the Utopian Platform. This application adds a messaging service to the Utopian Platform so that users may communicate with one another directly and indirectly. The module will also let the platform serve notifications to users about the status of their projects and contributions.
There is a temporary authentication system which lets users sign in using only their username. The system then fetches the user's avatar from the steem images CDN. A user can then search for any other users that exist inside of the database. The user can then friend another user to add that user to their friends list. The user can select a user from their friends list to initiate a private message chat. If the other user is offline, or not focused on the private chat, they are served notifications which appear next to the sending user's avatar in their friends list.
Users can also search for and create chat groups. Each group has an avatar, which also is from the Steem Images CDN. This avatar will eventually be generated based on the Group name. Groups allow multiple users to join and chat with one another. If a group doesn't exist then a user may create a new group with that name. Other users are free to join that group with no restrictions currently. Groups track the users who are currently a part of the room and also keep track of the messages which have been sent into them.
Users may also send image messages through the chat front-end though the images will not be serve to the other user because the CDN for this service hasn't been fully implemented yet. They can also sign out of groups and unfriend users at their own leisure as well as sign in and out of the module. Currently, the module does not track the user's online status nor do uses have roles; that is to say that all users are equal in this service as it currently is.
- Technology Stack
This module was built using Node, Vue, Vuex, MongoDB, and Socket.IO. Rather then using a RESTful API which upgrades the requests to Web-socket requests, the Chat uses a pure web-socket architecture. The module also makes use of the PM2 a process manager which makes it easier to scale the application based on needs.
- Roadmap
In the future, this project will be integrated into the utopian v2 repository. Features that are being looked include a block list, user roles, group chat timeouts, message timeouts and messages to deal with notifications/chat bots.
- How to contribute?
If you'd like to contribute to this project, feel free to contact the Utopian staff members or myself. You may also create a PR on one of the repositories.
- Video Reference:
Well congratulations, this is awesome!
This is a solid basis that will be integrated in the utopian V2.
About the existing code I don't have much to say, it's well written and structured.
Nice video to show the functionalities
We'll add a few features for utopian v2 once we have decided on how to merge the existing database structure with the messaging system.
If this project continues to grow by itself, outside the integration in utopian, I think a nicer UI should be in the roadmap, as well as write a proper README with the install instructions.
Anyway,
Bravo!
Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.
To view those questions and the relevant answers related to your post, click here.
Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]
Thank you.
It is not very likely that this project will grow outside of the Utopian ecosystem since that was the main purpose of the application. That being said, I did write 5 iterations of this messaging application with different technologies. One of them will end up being used for another project at least.
Also, the UI was intentionally made to be bare bones since I knew that there are many much more skilled front-end developers on the team then myself. Its mainly just a mock front-end with some basic functionality to show off the features of the back-end.
Thank you for moderating my contribution.
Tensor
Thank you for your review, @gregory.latinier!
So far this week you've reviewed 1 contributions. Keep up the good work!
Hey, @tensor!
Thanks for contributing on Utopian.
Congratulations! Your contribution was Staff Picked to receive a maximum vote for the development category on Utopian for being of significant value to the project and the open source community.
We’re already looking forward to your next contribution!
Get higher incentives and support Utopian.io!
Simply set @utopian.pay as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).
Want to chat? Join us on Discord https://discord.gg/h52nFrV.
Vote for Utopian Witness!
Thanks guys. Was a little surprised I got staff picked but then again, not so much.
What happens to the golang WebRTC chat server?
Nothing really, I have the code still, just decided not to go with it. Throughout this process, I wrote 5 different chat systems. All of them are still around but this is the one I chose.
Oh, lovely open source project. I'll take a look :D
Congratulations! Your post has been selected as a daily Steemit truffle! It is listed on rank 25 of all contributions awarded today. You can find the TOP DAILY TRUFFLE PICKS HERE.
I upvoted your contribution because to my mind your post is at least 7 SBD worth and should receive 81 votes. It's now up to the lovely Steemit community to make this come true.
I am
TrufflePig
, an Artificial Intelligence Bot that helps minnows and content curators using Machine Learning. If you are curious how I select content, you can find an explanation here!Have a nice day and sincerely yours,
TrufflePig
Noice UI :)
I would say it would be nice to have some password protected group chats maybe. Hello future contributors 👋
And does all the messaging history lost when you unfriend someone, or does it stored somewhere (I can't watch videos without skipping). I mean is the messaging history come back if you unfriend and re-friend someone.
All the history is stored in Mongo. I am considering adding some kind of message timeout however to keep the mongo database small.
Also, with regards to password protected groups, I do have plans to add private groups for projects and github repositories etc. Groups that require invites and the like. This is mainly just a proof of concept for the others on the developer team to be able to see.
Hi, @tensor!
You just got a 5.58% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.
Hi @tensor!
Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your post is eligible for our upvote, thanks to our collaboration with @utopian-io!
Feel free to join our @steem-ua Discord server