Pronto Messenger
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.vscode
Pronto
UI Mockups
backend
se101-final-project
tiva
.DS_Store
.gitignore
README.md
SE101ProjectProposal.pdf
proposal_feedback.txt

README.md

SE 101 Project Proposal: “Pronto”

Motivation

You are a first year software student. You open your laptop to check today’s messages in your class’ Facebook chat and...THE HORROR: 467 unread messages. Any 1A student will confirm that this is no exaggeration. It is a silly yet serious problem we face every day. Should we read through 467 messages, most of which are nonsense, or ignore them all and risk missing out on genuinely useful information?

Our project will solve this issue. We are creating a system to simplify the viewing of important messages from a Facebook chat. Quite simply, we are creating a reddit-like system to filter and sort Facebook messages based on popularity amongst classmates, how new it is, and how similar it is to past popular messages.

Overview

There will be three main divisions of our software. First, we will have a FireBase backend which retrieves, stores, and sorts data on the messages such as upvotes, downvotes, and frequency of keywords. It will be written in Javascript, utilize the Facebook API to retrieve the messages, and apply machine learning algorithms like Naive Bayes text classification to rank a message’s importance. Second, there will be an android app, written in Java and XML, which presents the filtered and sorted messages and allows the user to upvote or downvote the posts. Since the upvote data is stored centrally, the sorting will become increasingly accurate as user participation increases. The app will also give the user the ability to bookmark messages for later viewing, search for messages relating to a specific topic, and send your own messages to the chat. Finally, we will use the Tiva, programmed in C, as a dedicated external device for viewing messages on the go.

Hardware Components

The hardware components of our project will be comprised of the Tiva, Orbit Booster Pack, and serial bluetooth module. Messages will be viewed on the Tiva booster pack’s OLED screen. If the message can not fit on the OLED screen, the text will be scrolled through. The buttons on the booster pack will be used to move through, upvote, and bookmark messages. To downvote a message, the user can shake the booster pack’s accelerometer. The Tiva will communicate with an Android phone using the serial bluetooth module. This will allow the Tiva to download the messages from the phone, and upload it’s rankings to the phone, which it forwards to the backend.

Challenges

The biggest challenges we anticipate will be reading from and posting to messenger group chats; and ​ implementing the Naive Bayes text classification algorithm to classify messages. Another challenge will be the Bluetooth communication between a phone and the Tiva (e.g. interfacing the Tiva and the Bluetooth module on the hardware level and developing a communication protocol).

Backend Config

function(doc) {
    if(doc.attachments.length >= 1)
    {
          emit(doc._id, {
            'author_id': doc.author_id,
            'timestamp': doc.timestamp,
            'text': doc.text,
            'msg_id': doc._id,
            'likes': doc.likes,
            'bookmarks': doc.bookmarks,
            'dislikes': doc.dislikes,
            'attachments': doc.attachments[0]['large_preview_url']
        });
    }
    else
    {
          emit(doc._id, {
        'author_id': doc.author_id,
        'timestamp': doc.timestamp,
        'text': doc.text,
        'msg_id': doc._id,
        'likes': doc.likes,
        'bookmarks': doc.bookmarks,
        'dislikes': doc.dislikes,
        'attachments': ''
    });
    }

}