/sample-chat-electron

Socket.io based chat server and clients, implemented in NodeJS and distributed to Windows and MacOS.

Primary LanguageCSSMIT LicenseMIT

sample-chat-electron

Socket.io based chat server and clients, implemented in NodeJS for the Distributed Systems Course (MC714 1s2016), Prof. Leandro Villas in the Institute of Computing, UNICAMP. Inspired in the Example Chat Application from the Socket.io Official Documentation.

See the blog post about the project for the step-by-step guide.

Features:

  • Fully features single room chat application, based on a master Server and several slave Clients.
  • Online/offline and Typing real time updates
  • Multiple users in multiple windows easier testing

Core Technologies:

  • Server: NodeJS, Express and Socket.io
  • Client: Electron, Socket.io and AngularJS
  • Landing: NodeJS, Bootstrap and jQuery

Chat Specs:

  • Real-time bidirectional event-based communication based on Socket.io
  • WebSockets implementation backed by Engine.io
  • Fallbacks to: flashsocket, htmlfile, xhr-polling, jsonp-polling

Checkout the Sample Chat Server (hosted in Heroku).

Screenshots

Sample binaries running on Mac OSX and Windows 10:

Screenshot at OSX

Screenshot at Windows

Download Sample Binaries

You can test the chat application using the precompiled binaries. They all point to the Sample Server hosted in Heroku. To connect to your own server instance you'll need to build from the source. It's in the roadmap a simple command line script to make all the hard work for you.

Documentation

The full JSDoc Specification is planned in the Roadmap. For more technical details, refer to the Technical Specification.

Open Source Dependencies

This project was only possible because the work of thousands of independent developers and organizations. The full dependencies are listed in the package.json and bower.json files, but I want to specially thank:

Desktop app client UI by David (@retyui)

Adorable Avatars by Adorable.io (@adorableio)

Start Bootstrap Landing Page by Blackrock Digital

App Icon: Hipchat / Flat OSX Icons by drslash

Roadmap

  • v0.0.2

    • Notifications for incoming messages
    • Build sources for Linux major distributions: Ubuntu and Fedora
    • Change server in the initialization using ENVs or command line arguments
    • Running a server locally within a dedicated Window
    • Settings window for handling user profile and server configuration
  • v0.0.3

    • Automated buld system based on Gulp for handling deploy, tests and jsdocs
    • Build scripts for creating Rar SFX auto installer files for Windows from NPM command line.
    • Build scripts for creating Ubuntu deb files
    • Multiple rooms in single server
  • v0.0.4

    • Persistent user accounts based on credentials or hash
    • Multiple node servers forming a single network
    • Direct file transfer with progress
    • Unit testing in the server interface

Author

License

This project is fully open in the terms of the MIT License. For further information, checkout de full license text.