Portfolio Overview

This project portfolio page documents my contribution to the team project TravelPal. The page includes an overview of the project, summary of the features I have implemented, and contributions to the User Guide and Developer Guide.

About our Project

The application TravelPal developed by our team is an all-in-one Trip Planner which provides casual travellers and leisure travellers a hassle free way to manage their trips before, during and after the trip! It comes with a highly customisable, intuitive and integrated trip management system. We aim to ease pre-trip planning process with features such as trip itinerary, trip inventory, bookings manager, and expense manager, and offer a platform for users to record their memorable trip highlights with our diary feature.

TravelPal has the feature of Command Line Interface (CLI) for keyboard input as it is a PC-based application. Furthermore, each CLI feature has a Graphical User Interface (GUI) alternative for richer user friendly experience.

In GUI, display includes panes, menus and message boxes. We believe such implementation makes our application more user-friendly and easy to use.

In our project, my role was to implement the Booking Manager feature. The following sections will elaborate on the enhancements related to Booking.

Summary of contributions

This section encompasses an overview of my contribution to the TravelPal application, including the summary of my code implementation and how they add value to the application in terms of functionality and user experience.

Major enhancements: Implementation of the Booking Manager feature

  • What it does: The Booking Manager allows users to manage all sorts of bookings, by mentioning the type in the name description. User can choose to manually add a new booking. All bookings will be displayed in a sequential order

  • Justification: Keeping track of a booking can be a hassle as some are pre-planned while some are scheduled on-the-go. Booking Manager intends to mitigate user’s troubles by providing a convenient way to keep a track of all the bookings. User can also note the expenditure associated with the booking apart from storing the contact details (mobile number, address, description, etc.)

  • Highlights: Managing the bookings is tricky in the sense that seemingly same looking booking might result in confusion, so the create feature will warn the user if same booking is being created, apart from convenient listing of all the bookings in a bug-free and efficient way.

  • Credits: I used the concepts and logic from the existing code of address book provided to us to enhance the features.

Other Contributions

  • Code contributed: [RepoSense Code][Github Pull Requests]

  • Idea generation:

    • Contributed main idea of TravelPal and its various sub-features (itinerary, bookings, contacts, etc.), along with their working diagrams during project discussion, partly inspired from my tribulations as well. (see travelpal idea generation google docs)

    • Kept a timeline of the features added to coordinate in a better fashion among the team members.

  • Enhancements to existing features:

    • Wrote test cases for Booking Manager and related classes.

    • Helped in testing of all the features, in general.

    • Updated UI, and logic of the code to make it user friendly as well as efficient.

  • Project management:

    • Reviewed and approved several PRs of my team members

    • Updated AboutUs page #18

Contributions to the User Guide

This section displays the excerpt of User Guide related to the usage of Booking Manager feature, created by me, and later revised along the application development.

Booking

Introduction

Welcome to the Booking feature of TravelPal!

The Booking feature is one of the main features that allows you to add all the bookings pertaining to your trip in one single place with a user defined name, contact and the expense of the booking. You can easily add, edit and cancel bookings during creation of any booking.

Furthermore, for almost every command, there is a GUI alternative using various buttons to execute the same operations.

The following section of the User Guide explains how to use the Booking feature of TravelPal.

Booking User Interface Overview

This section of the user guide explains how to view and manage your bookings using Booking Manager.

How to reach the Landing Page of Booking Manager

When inside a trip, the command bookings will bring you to the landing page (this command works from all pages of the trip).

ReachBookingManager
Figure 1. How to reach Booking Manager

Shown below is the landing page of the Booking Manager.

BookingManager
Figure 2. Overview of Booking Manager user interface

Bookings serve to assimilate all the activities which you have planned throughout your trip in a single convenient place Bookings are connected to your overall expenses and budget of the travel, activities or accommodation.

Commands

On the Booking Manager page, the following commands are available:

  • create: creates a new booking; can also be accessed by clicking the button Add Booking for a more user-friendly experience.

  • edit <index of the booking>: edits an indexed booking, if the index is valid; this command brings up the booking setup page.

  • delete <index of the booking>: deletes an indexed booking, if the index is valid.

valid: valid index implies that the index is lesser than or equal to the number of items so far created, i.e., you can edit or delete only an existing Booking. invalid index will not execute and show an error message

InvalidIndex
Figure 3. Error shown due to Invalid Index

Booking Setup

Booking setup creates/edits properties of a specified booking as per the choice of the user. To access the Booking Setup page, use create or edit <index of the booking> command on Booking Manager page.

It is necessary for a booking to have a:

  • Name: can be of any length; it can also include short description

  • Contact: a varied input field which can store alphanumeric characters to satisfy contact number, email address or referencing words.

  • Budget: all the bookings have a pre-assigned expenditure involved with it; it should be a cost estimated upto two decimal places (automatically stored in SGD)

The following commands are available on Booking Setup page.

  • edit <prefix>/<value> …​ : edit the respective field of the booking to be created/edited.

  • done : confirm and save the changes, and go back to the booking manager page.

  • cancel : go back to the booking manager page without saving the changes.

The prefix in edit <prefix>/<value> …​ refers to editing each fields as follows:

  • n/ Name of the booking

  • c/ Contact details of the booking

  • b/ The amount of expenditure, in Singaporean dollars.

Example Usage for create command:

To add a booking SampleBooking with contact details 98989898, DisneyLand with an expenditure of $80 SGD, use the following command:

edit n/SampleBooking c/98989898, DisneyLand b/80

CreateBooking
Figure 4. Overview when create a Booking
If two bookings have the same information of Name, Contact and Budget, second will not be saved but the user can still make changes. The user can use sequential naming (Booking1, Booking2, …​.) to differentiate between the two bookings.
Example Usage for edit command:

To edit the previous created booking to with same name and contact details but with an expenditure of $100 SGD, use the following command:

edit b/100

EditBooking
Figure 5. Overview of edit of the name of a Booking
You can choose to edit any number of fields any number of times. You can also choose to cancel the editing or creation of any booking at any time by typing cancel command or clicking the Cancel button.

After adding your Bookings, beforehand or on-the-go, Booking Manager looks like this:

Finally
Figure 6. Overview of the Bookings Manager Screen

Contributions to the Developer Guide

This section displays the excerpt of Developer Guide showing the logic, model and user interface implementation of the Booking manager, created by me, and later revised along the application development.

[Booking] Booking Manager

The Booking Manager is one of the main features of TravelPal. It maintains a list of Booking stored in a BookingList.

Booking Manager displays all the Bookings in one place with Name, Contact details and expenditure in the form of Budget.

Aspect : Model

BookingModelClassDiagram
Figure 7. Class diagram showing the booking model
Booking

Booking is a class storing Booking model.

It has three compulsory fields, the name of booking, the contact details of booking and the expenditure of booking (in budget). These fields are used to store information related to a booking.

They are implemented as instance of class Name, Contact and Budget respectively.

BookingList

BookingList is a class that stores the Booking models. It supports wrapper methods around the underlying ObservableList to facilitate the use in the logic components.

Aspect : UI

BookingUiClassDiagram
Figure 8. Class diagram showing the user interface of booking

The UI of Booking Manager mainly consists of two Page: BookingsPage and EditBookingsPage.

BookingsPage is the component in charge of displaying all the information of the booking: name, contact details and associated expenditure.

It has a list of BookingCard, a component that contains individual booking details. BookingsPage extends PageWithSidebar as it contains navigation bar that helps user to navigate between different main features.

EditBookingsPage is the main page for creating and editing of booking. Both BookingsPage and EditBookingsPage have access to Model and Logic of the application, for handling of stored data and parsing commands.

Aspect : Logic

Create a booking

The creation of a new Booking is done by calling EnterCreateBookingCommand, which brings user to a Booking Setup Page.

Edit a booking

Editing of booking can be accessed from BookingsPage. The execution of command is handled by BookingsManagerParser and the command accesses the model through Model#getPageStatus() method.

The details of execution is similar to Edit trip/day/event feature (see [Edit-Trip])

All the fields, namely name, contact and budget, of a Booking can be edited with an edit command. When done command is executed the Booking in BookingList will be updated.

The following sequence diagram shows the sequence of method call when DoneEditCommand#execute(model) is called in LogicManager.

UI Diagram shows the calling of various other classes (via FXML pages) which are linked to creation of Booking.

Edit a Booking
EditBookingDiagram
Figure 9. Activity diagram showing the edit functionality of Booking
When error is thrown, the user is expected to use a valid index.
Delete a Booking
DeleteBookingDiagram
Figure 10. Activity diagram showing the delete functionality of Booking

Deletion of booking is similar to the Delete Trip/Day/Event feature (see [Delete-Trip]).

The DeleteBookingCommand in logic checks for index of deletion. Below is the sequence diagram of deleting an expense:

BookingDeleteSequenceDiagram
Figure 11. Activity diagram showing the execution of deleting an expense

Achievements and Learnings

Development of TravelPal is one of my first brown-field software engineering projects. During the process, I have gained many insights, project work ethics and presentational skills apart from useful programming knowledge. I also learned how to work on a large code base while working on my feature.

Knowledge was gained not by the mere end-product but during the collaborated team journey and educational experience.