Do You Expect Me To Talk? (Third Year Project)

Overview

The Do You Expect Me To Talk? project is my third year project that I developed at Lancaster University. This project addresses key challenges in modern digital communication by creating an intuitive, no app based system that prioritises privacy, ensures universal accessibility, and provides a user friendly experience. The project provides users with a platform to engage in voice, video and text based communication as well as the ability to share files over a local network, all without requiring personal information or relying on centralised servers.

Created using HTML, CSS, JavaScript, Node.js and WebRTC, and then deployed on Heroku, the application enables multiple devices to form a Personal Area Network (PAN), allowing seamless peer to peer communication. This includes the exchange of messages, media files and real time video and voice streams. By using WebRTC to facilitate the media streams and data transfer, the system ensures that all data remains private, as it is transmitted directly between devices over a peer to peer connection without passing through a centralised servers.

The key aims of the project focus on the following aspects:

  1. Functionality: Allow users to securely create and manage a Personal Area Network (PAN) and enable communication within the network via text, voice, video and file sharing between trusted devices.
  2. Privacy: No personal information is required to use the application. The communication remains completely peer to peer, ensuring no data is stored on external servers.
  3. Universal Accessibility: A no app based system that is available to all digital devices given they have a web browser, removing the need for software installation and making the platform easily and widely accessible.
  4. Enhanced Usability: A user friendly interface that focuses on simple navigation and allowing the functionality to be performed effortlessly, addressing common frustrations with other third-party applications.

By focusing on these aims the project was able to provide a comprehensive, privacy focused and accessible solution to many of the complexities of modern communication systems.

System's WebRTC Configuration
System's WebRTC Configuration

Project Features

Personal Area Network Creation and Management:

Real Time Peer To Peer Communication:

File Sharing:

Interface:

No App Based System:

Privacy and Security:

System Structure

The Do You Expect Me To Talk? system is designed to enable secure, real time communication through the use of WebRTC. It allows devices to form Personal Area Networks (PANs) and communicate directly without the need for central servers. The architecture of the system revolves around a client side application that utilises WebRTC, which is served by a Node.js Express server, along with a Node.js signalling server. STUN servers assist in NAT traversal and WebRTC handles encrypted peer-to-peer communication including media streams and data channels.

Key Components

Client Application Server

The client application server, developed using Node.js and Express, is responsible for serving the client side application to the user when requested via a browser. This server acts as the gateway for users to access the application, delivering the necessary HTML, CSS and JavaScript files required to run the user interface and interact with the system.

Client Side Application

The client side application, created using HTML, CSS and JavaScript, is the user facing part of the system, allowing users to create and manage PANs, then engage in real time communication and media sharing. The application processes user input and interaction, enabling connections and communication with the signalling server through sockets. It also is responsible for creating offers, answers and ICE candidates to initiate WebRTC peer-to-peer connections with other devices enabling communication and sharing to occur.

Signalling Server

The Node.js signalling server is used for managing the signalling process that enables devices to exchange offers, answers and ICE candidates in order to establish WebRTC peer-to-peer connections. This server is also responsible for the creation and management of Personal Area Networks by transmitting and dealing with management messages such as new device connections, requests and device disconnects. The signalling server is used to manage PANs as it is more reliable than managing the PANs through only peer-to-peer connections, especially when handling device disconnects. Using SocketIO, the server automatically assigns user IDs, sets relevant non-personally identifiable information used later for PAN management. Importantly, no personal communication or media data is shared through the signalling server.

WebRTC Connections

Personal Area Networks (PANs)

Personal Area Networks form a core functionality of the Do You Expect Me To Talk? system, allowing users to securely connect multiple devices within their trusted network for real time communication and data sharing. Each PAN is dynamically created and managed through the client side application and the signalling server.

How Personal Area Networks work:

Communication Methods

Deployment

The system is deployed on Heroku, utilising mono-repo build packs to manage both the frontend and backend within a single repository. This setup streamlines the deployment process, making it easier to push updates and manage both aspects of the application from one central location. The system also uses Node.js build packs to facilitate the deployment of the Node.js Express server and then Node.js signalling server.

Demo

Here is a demonstration of using the Do You Expect Me To Talk? project where multiple devices (desktop, laptop and mobile) join a Personal Area Network (PAN) and interact over WebRTC peer to peer connections through text messaging, file sharing and real time video calls.

Conclusion

The Do You Expect Me To Talk? project successfully demonstrates a privacy-focused, no-app communication system built on modern web technologies like WebRTC, Node.js, and Express. By creating secure and dynamic Personal Area Networks (PANs), the system allows users to communicate in real time via voice, video, text, and file sharing, without the need for centralized servers or personal data storage. Overall, this project has deepened my understanding of JavaScript and WebRTC and expanded my knowledge about project development.