🌐 Live at: https://live-chat-bde08.firebaseapp.com.
Real time
- Messages are updated in real time for everybody.
Users authentication
- Users need to sign in. Auth state is managed in the context of the whole app.
Concurrent accounts
- Application handles any number of concurrent accounts.
Multiple categories
- Each user may write different messages in each.
Messages deletion
- Users may delete their own messages.
Mail any sender
- Clicking on a user's name starts the action of sending him a mail through G-Mail.
Nice to have
- Search categories bar, clear text button, auto scroll buttons.
Custom pages
- Custom Loading, Error and NotFound pages.
Dark theme
- Users may choose between light and dark theme. Choice is remembered between sessions.
Mobile ready
- Fully responsive UI which works well on any device.
I'm using Firebase for user's authentication, data storage(Firestore - NoSQL DB), and deployment.
Firestore provides rules for accessing the data and I've configured it as follows:
No data may be accessed
by anunauthenticated
user.Categories
areread-only
for allauthenticated
users. Only the admin may configure them.Messages
may becreated
anddeleted
only by thespecific authenticated
user who requested that(meaning, an authenticated user isnot capable
to create or delete messagesin the name of others
). Messages may be read by all authenticated users.
- Tailwind's
layers
wereextended
such as to have a small color palette and some base styling. - Dark mode is handled with a combination of Tailwind and
CSS variables
withvalues set
byCSS selectors
. - A
fancy scroll bar
was configured forwebkit
using -webkit-scrollbar.