0 Replies - 550 Views - Last Post: 01 February 2019 - 09:33 PM

#1 navieko   User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 1
  • Joined: 01-February 19

Feedback for my Web App (Chat Room Site)

Posted 01 February 2019 - 09:33 PM

Hi guys - not sure if this is the place for this as it's more of an app than a website but here goes...

I've been working on this project (for myself) for the past month and a half primarily as a means of putting myself through a crash course in learning Vue.js and javascript framework sites in general (only knew some basics and only ever made generic Wordpress templated websites with a bit of custom PHP scripts here and there).

I thought a chat room site would be a good project for this purpose as it provides the framework to cover a lot of ground when it comes to coding in javascript and working with both front and back ends.

I'd decided to utilize Google's Firebase for hosting the site, as well as their Firestore service for storing the data (I also use their Realtime Database to assist with creating a functional user presence system), as well as their Cloud Functions service to run code on the back-end. Additionally I also make use of the Firebase Cloud Storage for hosting user file uploads. So pretty much everything housed neatly under the one umbrella on a pay-as-you-go plan -- which should be able to scale nicely.

So the idea of the web app is a place where anyone can quickly and easily go to create (or join) a chat room (public or private) without requiring email signup (though email can be inserted to assist with password recovery). Guests can choose whether to join a chat room as a guest (they'll be assigned a number as their display name which is auto-increment based on the number of participants within the room) -- or they can create a login (username/password) which is unique to that room, in which case their display name is their username (at this point I restrict everyone from being able to change their display name other than admins).

First person to join the room is admin (typically the creator of the room) and as such they have access to the 'Room Settings' popup where adjustments can be made. I will soon be adding the ability for the original admin to add other users into the list of admins, but at this point it's not possible.

To be honest I haven't participated in all that many website-based chat rooms so I've gone into designing the interface with a pretty fresh perspective.

In general it's pretty straight forward but I have incorporated a participants checklist system which I think may be a bit different from the others. In essence, anyone ticked is on the "recipients list" and will see your message. When someone is unticked, their messages are filtered out from your view. This allows group or private messaging to go on within the same room where there might potentially be hundreds of participants. It can also be used simply to block out the noise of those you find annoying. I have also added the ability for users to add participants to their "mute list" which is more a permanent solution (until unmuted). Private or group messages in which you're apart of are distinguishable from normal room messages via a small "PM" or "GM" icon to the left of the message. Hovering over this (as well as the initials) provides options to reply to this person or the recipients of that message (which when clicked will automatically adjust the participants checklist to filter out everyone else).

Apart from that, other features at this point include:

  • Emojis (via button/picker or short codes)
  • File upload (uploads to cloud storage and a clickable link is automatically generated/placed into the input box, max 5mb)
  • Ability to paste image links as well as Youtube and Vimeo links - which will render in the chat box
  • Admins are able to make a room public, which at this point only means it can be browsed/searched via the home page within the 'Public Rooms' table. They can add search tags to assist searches. Private rooms are not browseable/searchable and in addition, a "room access password" can be optionally set.
  • Admins are able to ban users (with option to delete all their messages) - at the moment based only on their user ID, however I will add option to ban based on public IP address.
  • Admins can lock the room from accepting new participants.
  • Admins can change the background image for the room.

I'll be looking to eventually add voice/video features, screenshare, possibly a "video presentation" mode (live or otherwise) which will adjust the layout so that participants can watch a video while chatting about it at the same time, not dissimilar to Twitch.

I'll also continue to add small features to keep/catch up with the modern chat room features that are present in other popular sites/apps -- as well as some more innovations of my own.

Other notes to consider:

  • Message background colors are randomly assigned on page load (client-side/different for everyone). Sometimes participants will get assigned the same/or similar color - color assignments can be re-shuffled via a small button at bottom-left of chat box area. Users are able to permanently set their message background and text colors via profile settings.
  • Rooms (and all data) will be permanently deleted from the server if no activity after 7 days. This is done via a cron job that runs daily.
  • Rooms can be deleted by the room creator via a button within the room settings popup (look for trash can icon, top left)
  • As for security/privacy, I have set what I think are pretty full-proof read/write rules on the database level to go hand-in-hand with security/limitations on the front-end... so I *think* it'll be okay, but will need to closely monitor usage/feedback over time to know for sure.

I haven't added any proper usage documentation or Q&As to the site yet as I'm still playing around with various features and also may make big GUI changes depending on feedback. I have started to create a Q&A document though and will be adding it to the site in the near future. For the time being I leave it up to the users to figure out via tooltips and experimentation.

So with all that out of the way... here she is!


This is the first place I've posted this link so as of this moment there are no other rooms or users apart from the one I've created to be used for testing/feedback.

Your honest feedback would be much appreciated. Please don't be afraid to test it in any way you like, if something breaks or you notice a security vulnerability - no worries that's on me but I'd appreciate knowing about it!



Is This A Good Question/Topic? 0
  • +

Page 1 of 1