arkash55 / FullStack-Messenger-Project

A full stack real time messenger clone. Frontend is written in swift, and the backend is written in javascript.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FullStack-Messenger-Project

A full stack real time messenger clone. Frontend is written in swift, and the backend is written in javascript.

The Frontend...

  • MVC design pattern.
  • UI designed using a combination of programatic code and storyboard.
  • UI designed for text, photo and video messages.
  • Used protocols and delegates to pass information between view controllers.
  • Used notifications and observers to notify the app for changes in state (e.g logged_in, logged_out)
  • Vigorous error handling system
  • TypeAliases, Structs and Enums used to keep code more maintainable and DRY.
  • Deletion and Sorting algorithms used to show appropriate data. (Linear deletion and quicksort)
  • Used Cocoapods and SwiftPackageManager to access different utilities such as Amplify and SDWebImage.

The Backend...

  • REST API created with express js
  • Websockets implemented via socket io
  • Authentication implmented using json-web-tokens. ("npm jsonwebtoken")
  • Implemented Email verification on registration (needs to fixed after google made changes in SMTP and third party app rules.)
  • Implemented hashing and salting algorithms to store sensitive data with the aid of an cryptography package. ("npm crypto-js")
  • Used postgresql with the Sequelize ORM to store and manage relation data.
  • Used AWS S3 to store images and videos. Implemented S3 in the frontend to reduce request times and server stress.
  • Used redis to cache frequently called data, reducing database queries and increasing request speeds by up to 10 times.

Things I can add/improve on...

  • Add additional "prior-update_time" column to conversation table in the database. This will allow for deletion via binary search improving the time complexity to O(log2N) from 0(N). (Alternatively, I could use a binary search tree to store conversations, this will allow for binary search without needing to add a extra colomn in my dataabase.)
  • Push Notifications
  • 2FA Authentication

About

A full stack real time messenger clone. Frontend is written in swift, and the backend is written in javascript.


Languages

Language:Swift 86.5%Language:JavaScript 13.4%Language:Ruby 0.1%