Public Lab Research note


Google Summer of Code 2019: Work Product

by namangupta | August 26, 2019 07:05 26 Aug 07:05 | #20670 | #20670

GSoC 2019 Work Product - Naman Gupta

Aim

To implement WebSockets for various real-time communication in the project such as sending real-time browser notifications to Desktop and Mobile Devices for various users Action and to build a Graph Plotting Library.

About Project

In this summer of code I was working on two projects. In major part of the summer i.e in last two phase I worked on WebSockets Implementation for real time interation using Action Cable. And in the first phase I worked on the setup of Graph Library from scratch. In the former project, I setup action cable for websocet connectivity in the project for real time communication which are currently being used to notify users via real time browser notification whenever a user comments or likes or being mentioned in the post. Most of the part in this projects goes to testing of action cable stream to action cable connection to various implementaion of action cable such as comments, like and mentioned. In the later project, I setup the data-grapher project from a single file structure to the standard node library file structure and divide the code into multiple files using oops design pattern. I have also added the feature of adding multiple graphs using multiple csv to the library. In the end, I also worked on some of bugs and issues outside my Google Summer of Code project i.e fixing issues related reply-by-mail and reply-by-tweet.

WebSocket Integration for Real Time actions such as Notification

Action Cable Setup

Pull Request: https://github.com/publiclab/plots2/pull/5744, https://github.com/publiclab/plots2/pull/6017, https://github.com/publiclab/plots2/pull/6023

Tasks Performed:
  • Setup of Config of Action Cable
  • Setup of redis to work with Action Cable to store the connected Sockets Information.
  • Implemented socket connection Authorization based on login type.
  • Created a basic channel where Admin can broadcast messages from their socket rooms.

Add different Channels for creating different rooms.

Pull Requests: https://github.com/publiclab/plots2/pull/5972, https://github.com/publiclab/plots2/pull/6003

Task Performed:
  • Added User channel, User Notification channel
  • Implemented Browser Notification for comment Addition for Computers.

Add Test For Action Cable Streams

Pull Request: https://github.com/publiclab/plots2/pull/5985

Task Performed:
  • Added action-cable-testing gem for testing Action Cable Streams
  • Wrote tests for Action Cable Streams

Add Action Cable Connection Unit Tests

Pull request: https://github.com/publiclab/plots2/pull/6032

Task Perfomed:
  • Added Action Cable Connection Unit Tests

Add Room Channel Tests

Pull Request: https://github.com/publiclab/plots2/pull/6034

Task Performed:
  • Added test for subscription of user Room Channel
  • Added test to check no broadcast when user is non admin
  • Added test to check broadcast when user is admin.

Add User Channel Tests

Pull request: https://github.com/publiclab/plots2/pull/6036

Task Performed:
  • Added test for no subscription of Websocket Connection when user is not logged-in.
  • Added test for subscription of Websocket Connection when user is logged-in.

Add Tests for User Notification Channel

Pull Request: https://github.com/publiclab/plots2/pull/6038

Task Performed:
  • Added test for no subscription of Websocket Connection to User Notification Channel when user is not logged-in.
  • Added test for subscription of Websocket Connection to User Notification Channel when user is logged-in.

Add UI Part for Browser Notification settings

Pull request: https://github.com/publiclab/plots2/pull/6105

Task Performed:
  • Added UI Part for Browser Notification settings

Add Browser Notification for like

Pull Request: https://github.com/publiclab/plots2/pull/6153/

Task Performed:
  • Added Browser Notification for like

Make Browser Notification Work on Mobile Phone

Pull Request: https://github.com/publiclab/plots2/pull/6158/

Task Performed:
  • Added Service worker for notification on mobile phones.
  • Handled notification on click events in service worker.

Added Action cable integration tests

Pull Request: https://github.com/publiclab/plots2/pull/6030

Task Performed:
  • Action cable integration tests for browser notification while posting comments
  • Added Fixtures
  • Added test for no broadcast when there is no comments request
  • Added test for no broadcast when user not logged-in
  • Added test for zero broadcast when user not logged-in
  • Added test for broadcast when user logged-in
  • Added test for number of broadcasts when user logged-in
  • Added test for broadcast to only users with particular tag.
  • Added test for no broadcast to no enganged user.

Make Browser Notification Work on Mobile Phone

Pull Request: https://github.com/publiclab/plots2/pull/6158/

Task Performed:
  • Added Service worker for notification on mobile phones.
  • Handled notification on click events in service worker.


Data Grapher Library

Project Setup

Pull Request: https://github.com/publiclab/simple-data-grapher/pull/5

Tasks Performed:
  • Setup of project using node.

Add Jquery, Papaparse and chart.js

Pull Requests: https://github.com/publiclab/simple-data-grapher/pull/7

Task Performed:
  • Added Jquery, Papaparse and chart.js dependencies

Implement Live Build and add browserify package for requiring different files

Pull Request: https://github.com/publiclab/simple-data-grapher/pull/10/

Task Performed:
  • Added npm script to watch changes and build on changes and added browserify package

Add testing Framework

Pull Request: https://github.com/publiclab/simple-data-grapher/pull/13

Task Performed:
  • Added Mocha, Chai and tests

Restructure whole project in oops based desgin pattern using es6 and add multiple graph feature.

Pull Request: https://github.com/publiclab/simple-data-grapher/pull/29, https://github.com/publiclab/simple-data-grapher/pull/36

Task Performed:
  • Restructured whole code from one single file to various files using oops based design pattern.
  • Implemented live requring of different files.
  • Added Live building of src/ into dist/.
  • Added Multiple Graph Feature from multiple columns.

Add project setup and run instruction

Pull Request: https://github.com/publiclab/simple-data-grapher/pull/62

Task Performed:
  • Added project setup and run instructions


Additional Links

Mentors

Special thanks to the Public Lab collaborators and following mentors.

  • Jeffrey Warren

1 Comments

I just reviewed your work. Code style is awesome. I have to learn a lot from you. Also thanks for collaborating with other GSoCers in their projects. This year GSoC projects are much harder and lengthier than they were last year. Still you completed it with great progress Naman. Thanks for being part of GSoC again

Reply to this comment...


Login to comment.