Skip to content

ds-project-team/csc2720_Project

Repository files navigation

Datastructures Group Project


Objective: We are building a Web Chat Application that will contain a smooth user interface similar to a mordern SMS/Texting Application. Our build will use the standard iOS texting app as a design guide, as it was built using S.O.L.I.D Object Oriented Design Principles. When sending messages to the recipient, we will communicate data from the front-end to the back-end using an Application Protocool Interface (API). Upon initially viewing the chat app for the first time, a user should be able to select the option to login or quickly create a user account. We will allow users to login with other social media accounts such as: Facebook, Twitter, Gmai, etc.

Features:

  • encoding the originial human readable message. This not only allows the opportunity to showcase profficient usage of data structures, but also allows the opportunity for our team of developers to explore the basics of encryption/decryption, and implementing our own proof of concept algorithms.
  • Voice recognition & speech recognition. Voice Recognition Allows for users to be authenticated via distict wave patterns, speech recognition allows for speech to text transcription. This feature invovles more advanced concepts of Computer Science, touching sub-topics like Artificial Intelligence. Implementing Speech API's shows a fundumental understanding of practical, real world usage of today's cutting edge Software Technologies.

SideNote: Documentation and maintenance for the Java Encryption Server is currently being maintained in a seperate repository. If you are here for that, please see the javaChatDataServer repo.


Documentation

Client-Side Usage

The UI is Currently in BETA 1 testing phase, and does not have all of the visual features that would complement using the Private Messenger. Therefore, there are certain guidelines to use it until more UI has been added.Currently, this application is experiencing bugs in the Safari browser. This issue is being investigated.
  • Initial Load:

    The landing page: https://chatappproject.herokuapp.com, load a blank chat interface, simply because no user or recipient has been entered into the search query parameters of the URL. This is not an error.
  • Adding A User:

    To add a user to the private messenger you must download Postman , and send a POST request to the url: [domain]/api/users/createUser/:userId. Remember to add the sender, and recipient user.
  • Starting a Chat:

    In order to start a chat between two users, you must type both users into the corresponding query parameters: user, recipient of the url address: https://chatappproject.herokuapp.com?user=senderId&recipient=recipientId
  • Mobile Usage:

    While you are able to load the chat website on a mobile device, because it is not configured for touch events the send button will not respond, rendering the application unusable on mobile platforms. This will soon change with an update, but is currently the case.

Messaging API: [type of api method call]

A New User [Post]

/api/users/createUser/:userId

Add Voice Recognition ID tag to a specified existing user [PUT]

/api/users/voiceRecognition/:userId/:voiceId

Create A Conversation Between the current user, and recipient user. DO NOT try to add messages to to a user's conversation with-out creating calling this end-point. [POST]

/api/privateChat/createConvo/:userId/:recipeintId

Add a message to a conversation between two users [PUT]
This route will likely be modified to serve a better implementation

/api/privateChat/addMessage/:userId/:recipientId/:message

Response format for all API Calls:

Successfull

{
  "error": boolean,
  "success": booleam,
  "msg": String,
  "obj": JSON Object
}      

Error / Unsuccessful

{
  "error": boolean,
  "success": booleam,
  "msg": String
}      

Database Method Signatures

The method signatures below will present the name of the function, the data type of each argument and the name of the argument as it appears in the database file. The response code block will not be the response to the user, but the object that is created in response to the database call.
  • Creates a private conversation between two users

    createPrivateConvo(String sender,String recipeint,Object response)

        call: createPrivateConvo("WiseNN", "TaslimD", res)
        response: 
           {
           	"_id" : "WiseNN",
            "privateConvos" : [
                                {
                                  "recipientId" : "Nommel",
                                   "_id" : "WiseNN",
                                   "messages" : [ ]
                                }
                           	],
            "__v" : 1
           }
    
  • Delete a private conversation between two users

    deletePrivateConvo(String sender, String recipeint, Object response)

        call: db.deletePrivateConvo("WiseNN", "TaslimD", res);
        response: (succeeds silently)
    
  • Add a user to the database

    addUser(String userId, String res)

        call: addUser("WiseNN");
        response: { "_id" : "WiseNN", "isActive" : true, "__v" : 0 }
    
  • Add a voice recognition token to the specified user

    addVoiceRecognitionId(String userId, String voiceId, Object res)

        call: addVoiceRecognitionId("WiseNN","kjdns89d8dshcsiudIWEUHIUWE", res);
        response:
            {
            	"_id" : "WiseNN",
               	"isActive" : true,
            	"__v" : 0,
            	"voiceId" : "kjdns89d8dshcsiudIWEUHIUWE"
            }
    
  • Remove a user from the database

    removeUser(userId, response)

        call: removeUser("WiseNN");
        response: (succeeds silently)
    
  • Add a message to a conversation between two users

    addMessage(sender, recipient, msg,response)

        call: db.addMessage("WiseNN", "TaslimD", "Hey What's Up!");
        response: (re-constructing)
    

Utility Database functions

  • Reads the contents of a database document. Pass in a database Schema, and the function will log all documents present
      readDb(db)
    
  • Saves newly created database documents. Pass in a database document, or a newly created object out of a database Schema, and a response object, to respond to the client. The response Parameter can be: `null`
     saveDb(doc, response)
    
  • Sends the client a JSON response and status code, depending on the request. Pass in the response object, an http status code, and the json content that needs to be sent back to the client. Do Not Modify
    sendJSONresponse(res, status, content)
    

## CSC 2720 Datastructures Group Project Members
  1. Adobah

    Github:

    LinkedIn:

    Website:

  2. Brandon

    LinkedIn:

    Github:

    Website:

  3. Nommel Djedjero

    LinkedIn: https://www.linkedin.com/in/nommeldjedjero/

    Github: https://github.com/NommelDjedjero

    Website:

  4. Taslim Dosunmu

    LinkedIn: https://www.linkedin.com/in/taslimdosunmu/

    Github: github.com/JayDosunmu

    Website:

  5. Hasan Raza

    LinkedIn:

    Github:

    Website:

  6. Norris Wise

    LinkedIn: https://www.linkedin.com/in/norris-wise-jr-57352189/

    Github: https://github.com/WiseNN

    Website:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages