Project Idea | (A Personal Assistant)

Project Title : Acolyte – a personal assistant

Introduction:
The basic idea behind this project is to create a simple stand-alone application
that helps less tech savvy people in the world to use the computer without feeling ignorant or computer illiterate.
Computers have became a very important devices and as well as less expensive over time.
The application works same like Siri/ Google Assistant etc. But the application deals with the computer itself mainly.
The U.I of the application is self-explanatory and minimal.
Currently it takes text as input as most of the people are not very good at speaking.

Constraints:
The application was built on and for an apple MacBook thus restricting it to the macOS alone. Acolyte is compatible with all the versions of the Apple macOS.
The system also assumes that the user has minimal english knowledge as of now.

Conceptual framework:

There is always scope for improvement. So the application was built using M.V.C architecture, incremental process design. These design structures follow the modular approach which makes it easy to add in new features to the system.

The system also implements the singleton pattern and the single responsibility principle which ensure the individual functioning of the modules.

Functions:
The system provides all the below stated functions.

    -displaying system information such as network usage, ram etc.
    -opening and closing an application
    -altering system brightness, volume
    -accessing bluetooth, WIFI
    -bookmarking a webpage
    -creating a new window or a tab in browser
    -going to the previous webpage on the web browser
    -reloading a webpage on the web browser
    -keylogging with keystrokes segregated according to the application and time stamps.
    -browser history tracking

Diagrams: 
UML Diagrams:
Use Case Diagram:
A use case is a set of scenarios that describe an interaction between a user and a system.  A use case diagram displays the relationship among actors and use cases.  The two main components of a use case diagram are use cases and actors.
Use Case Diagram
Activity Diagram:
Activity diagram is basically a flowchart to represent the flow from one activity to another activity. The activity can be described as an operation of the system.The control flow is drawn from one operation to another. This flow can be sequential, branched, or concurrent. Activity diagrams deal with all type of flow control by using different elements such as fork, join, etc
Activity Diagram
Sequence diagram
A sequence diagram is an interaction diagram that shows how objects operate with one another and in what order. It is a construct of a message sequence chart.
A sequence diagram shows object interactions arranged in time sequence. It depicts the objects and classes involved in the scenario and the sequence of messages exchanged between the objects needed to carry out the functionality of the scenario
Sequence Diagram

Algorithms:
Most of the algorithms used are custom designed, analysed and tested extensively for the project. We created most of them from scratch to make it as fast as possible.
The one which we have used as it is Naive Bayes theorem.

Naive Bayes theorem:
The Naive Bayes theorem was used to segregate the commands into 2 groups namely the capabilities and system commands.
Naive Bayes

Tools Used:
The project was mainly built using the Swift programming language from scratch according to the required functionalities to attain lightning speed and smooth execution. Some functionalities of the system had to be written in the obj-c and the scripting language AppleScript. The application uses the standard SQLite3 as the database.
The key logger we wrote is published in GitHub.

Application:
Acolyte was built to help the people with limited computer knowledge but it is also important to note that the other class of users might find some specific functionalities such as system logging useful.

The people who are not familiar getting around on their own on a computer can use this application as it abstracts away all the steps and presents only most important. Like they can just say to connect to a particular wifi or bluetooth, it will connect. Want to decrease screen brightness or volume? Want to open and close an application, file? Just say it as you would to a person, it will do the work for you.

Many parents are afraid about what their child is surfing in the internet. The application can notify their parents about the activity. Even if the child deletes all the history or uses incognito mode etc. The application logs every keystroke and website used by the child. Don’t worry as they wont leave any trace while running. It completely hides and doesn’t require any permissions to run.

It can also help with getting around web by opening, closing, bookmarking, reload, back, next etc a webpage just by saying it to do so.
*Data extraction and interacting with a webpage elements/nodes is still under working.

Finally, it the solution for monitoring the computer. It is the solution for the parents who got a computer from their son/daughter and can’t operate it to talk to them. It is the solution for the people who are willing to make a computer as their real assistant( not like fake so called assistants like Siri, Cortana etc ), just like Tony Stark?. Even if anyone uses it, you get complete stats about what he/she was doing, what did they connected etc.

Project Done By:
Sri Harish
Aravind Sriram

GATE CS Corner    Company Wise Coding Practice

Recommended Posts:







Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.