Simple Group Chat Application built using MEAN stack and Socket.io for Zoho Project Contest 2017.
- Backend -
- Node.js
- Framework - Express.js
- Socket Connection - Socket.io
- Database - MongoDB
- ODM - Mongoose.js
- Templating - Handlebars
- Session Storage - Redis
- Authetication - Passport.js with Bcrypt for encryption
- Task Runner - Gulp
- Frontend -
- Framework - Angular 4
- CSS Preprocessor - SCSS
- CSS Reset - Normalize.css
- Angular Client Libraries -
- angular/material
- JQuery
- JQuery-UI
- angular2-notifications
- bootstrap
- twemoji
- Libraries used by non-angular client pages -
- materialize-css
- Babel with Browserify
- Install Node.js, MongoDB, and Redis
- Install Angular CLI
$ sudo npm install -g @angular/cli
- Clone the repository
$ git clone https://github.com/AravindVasudev/Yabber.git
cd yabber
- Install dependencies
$ npm install
- Build the angular client-side
$ cd client
$ npm install
$ ng build --base-href chat
$ cd ..
- Start MongoDB
$ sudo service mongod start
- Start the application
$ npm start
- The application is now running on
http://localhost:3000/
- Group Chat
- Instant Communication using web sockets
- Image Transfer
- Secure Authetication using passport.js and bcrypt
- Parses emoji in text into image for cross browser compactibility
- Emoji Tray for easy access to emojis
- Push notification when window not in focus
- alert sound when message received
- interfaced embedded progress bar to signify image upload progress
- Right click context menu overridden for accessibility
- Image full screen on click
Bugs:
- When new group is added, the window has to be manually freshed for the update.
- App crashes if any value is left blank on new group creation.
- Group icon, dp icon is read as link instead of providing upload functionality
P.S.: This application is built within a time limit and hence the bugs.
Documents prepared during the event are linked below:
- Login Screen
- Signup Screen
- Chat Demo
- Context Menu
- Emoji Tray
- Progress Bar
- Push Notification
You are always welcome to open an issue or provide a pull-request!
Built under MIT license.