PROJECT: ConTAct


Overview

ConTAct is a desktop application designed to aid teaching assistants by providing them with features that is catered specifically for their use while still managing to be all-purpose enough to serve a variety of needs.

Tutors interact with the application through the CLI, and the GUI is implemented using JavaFX. The app itself is written in Java.

Summary of contributions

  • Code Contributed: RepoSense Report

  • Major enhancement: added the Graph feature in ConTAct

    • What it does: Allows the tutor to graph the attendance and understand the ratio of students present and absent through the use of search keywords or tags.

    • Justification: This feature significantly improves the product by offering a means for the tutor to understand the attendance of his classes or groups of students at a glance and take actions if needed.

    • Highlights: This feature adds the graph command as ways for the user to interact with the graph, while integrating existing commands such as tag to be able to search and produce graphs by tag. The design considerations were significant to ensure that the calendar was implemented effectively. The graph used has a clean and responsive design. Visually representing the data sets very well.

    • Credits: The initial addressbook-level4 provided a good starting platform for the implementation of this feature.

  • Other contributions:

    • Project management:

      • Assisted team member in Email functions with respect to RESTful API and outlook API

    • Community:

      • Updated documentation and sequence diagrams (Pull requests #153 #160 #166)

      • PRs reviewed: (Pull requests #4 #33 #34)

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

Updated UML diagrams

width"800"
GraphSD

Graph feature

Current implementation - Graphing attendance of a group of students

The graph feature leverages on d3 graph for the responsiveness and asthetics of displaying data.

This feature uses query strings to make server-client communication to draw and display the graph data. This is made so that it can be compatible with exporting of data to other applications in the near future. Future iterations of this feature can be made to RESTful API for better compatibilty with 3rd party applications

The graph command get the set of users Set<Student> to query for the attendance status and then returns an array of data to be graphed on a d3 graph.

Commands relating to the manipulation of the Set data of students are parsed by GraphCommandParser, which then returns the appropriate graph to be shown.

This architecture is planned such that the feature has low coupling which allows for future integration with 3rd party applications are easy.

The commands adhere to the following pattern:

 graph KEYWORD [KEYWORDS]`
or
 graph t\TAGS`

Sequence Diagram

The sequence diagram below shows how the components interact for the scenario where the user issues the graph command.

GraphSD
Figure 1. High level Sequence Diagram for graph command
GraphCI
Figure 2. Sequence Diagram for graph command

Design Considerations:

For displaying of the data a donut graph is to display the 3 main attendance states as mentioned in AttendanceEnum class. The donut graph allows more room to display more data points in future should there be a need to as well. The labels used instead of a legend as legend can be confusing when there are many colors/data available on the graph as well.

GraphMockup
Figure 3. Rendering of the Attendance Graph

Use Cases:

A tutor can graph and understand the attendance information of students in various tags or names.

Original Use Case:

find alan
<see attendance record of alan>
find bob
<see attendance record of alan>

Using graphs:

graph alan bob
<graph of attendance statistics is displayed>
graph t/cs2103
<graph of attendance statistics of all students with the cs2103 tag is displayed>

[Proposed] Data Encryption for v2.0

Data Encryption can be done using by encrypting the contents addressbook.xml and other data files with the tutor’s generated asymmetric key (2048-bit RSA keys). The private key would be safely stored with the tutor while the data.xml files will be encrypted and unaccessable by anyone else other than the tutor themselves.

We would incorporate the javax.crypto and java.security packages to perform the keypair generation, encrypting and decrypting.

For future use cases we would consider AES 256 for faster symmetric encyption for more frequent operations.