Dora Goczi

Software Engineer

Work Collection

DineShare

DineShare

DineShare

Github Repos

Overview

An Android application designed to combat loneliness during the Covid-19 pandemic by enabling users to socialize while eating without having to physically meet.

Approach

Android application written in Kotlin, using AWS services (Cognito, AppSync, DynamoDB) and Agora for WebRTC communication. A Flask server calculates matches with the Stable Roommate Algorithm, while a Node server handles matching and token management.

High-Level Architecure

Introduction

DineShare is an innovative mobile application designed to address the social isolation exacerbated by the COVID-19 pandemic. The app facilitates social interactions during meals through video calls, enabling users to connect without physical proximity. This summary outlines both the technical and non-technical aspects of the project, focusing on its architecture, components, and implementation strategies.

High-Level Description

Motivation

The COVID-19 pandemic significantly increased social isolation, with a study showing that 80% of young adults experienced significant depressive symptoms. DineShare aims to combat this by providing a platform for digital socialization during meals, a unique approach compared to other apps focusing on in-person meetings.

Project Objective

DineShare's primary goal is to allow users to socialize over meals without physical presence, thereby reducing loneliness and fostering a sense of community.

Technical Aspects

Architecture

The architecture of DineShare consists of several interconnected subsystems, each with distinct roles:

  1. Android Application: Includes the User Interface (UI), Application Controller, REST API, and Real-Time Communication (RTC) signaling component.

  2. Core Infrastructure Subsystem: Manages database access, user matching, and security.

  3. Recommendation/Discovery Subsystem: Generates user matches based on interests and preferences.

  4. Databases: Comprise user information and conversation storage.

  5. Video Streaming Protocol Design: Utilizes WebRTC for real-time video communication.

Backend Design

Core Infrastructure

WebRTC Signaling Design: Handles user matching and communication setup using Node.js and WebSockets for signaling, ICE, STUN, and TURN for NAT traversal.

  • API Service Design: Implements REST API using Node.js to manage client requests, backend logic, and security.

Server Hosting

AWS was chosen as the hosting solution due to its comprehensive free-tier offerings, flexibility, and cost-effectiveness, making it ideal for the project's development and demonstration needs.

Database Design

DineShare employs a combination of relational (MySQL) and non-relational (AWS DynamoDB) databases:

  • User Database: A relational database (MySQL) stores structured user information, ensuring consistency and relational integrity.

  • Conversation Database: A non-relational database (AWS DynamoDB) stores unstructured conversation data, providing flexibility and scalability.

Android Application Subsystem

User Interface

The UI design is split into functional and aesthetic parts. The functional UI ensures user navigation and interaction, while aesthetic elements enhance user experience. Error handling is integrated to display alerts and send analytic data.

Application Controller

Handles data management, separating logic from the UI. It uses persistent storage for local data and a network layer to communicate with backend services.

Network Layer

Implements REST API for backend communication and RTC Client Component for WebRTC signaling and peer-to-peer media streaming.

Security Features

DineShare plans to implement RSA key encryption for secure client-server communication and SHA-2 family hashing for data security, ensuring user data is protected.

Evaluation and Use of Advanced Knowledge

The project leverages advanced knowledge from various engineering courses, including database management, optimization techniques, and mobile app development. The design choices reflect careful consideration of performance, scalability, and user experience.

Conclusion

DineShare represents a comprehensive approach to addressing social isolation through innovative technology. The detailed design covers all aspects, from user interface to backend infrastructure, ensuring a robust and scalable application. By combining advanced technological solutions with thoughtful design, DineShare aims to make a significant impact on users' social well-being.