PROJECT: TravEzy

Introduction

TravEzy is a desktop application that allows travellers to plan their trips, managing their expenses and relieving their favourite moments. The application aims to revolutionize your travelling experience by simplyifying your travel planning process.

Reading the document

Formatting What it means

Italics

Application focused keywords

bold

All important information

Code

Indicates that the text is a piece of code

[ ]

Optional parameters for a particular command

CAPS

Parameters for a particular command

lowercase

Lower case words in a code block denotes user input

bjhoohahaInfoIcon

Additional useful information

bjhoohahaWarningIcon

Denotes warning

bjhoohahaLightBulbIcon

Useful tips or shortcut

Components inside TravEzy

Travezy is a one-for-all desktop application that consist of the following features:

The different components inside TravEzy Application

bjhoohahaTravezy

AddressBook

An address book containing all of your contact information.

Achievements

An achievements page that details all your progress within the application.

Calendar

A calendar that allows you to add a commitment, holiday, school break or trip.

Diary

travel diary to capture all your favourite moments.

Financial Tracker

A financial tracker to keep track of your expenses while travelling.

Itinerary

An itinerary to plan and organize your events.

Summary of contributions

Out of the 6 different components of the TravEzy application, I was responsible for the development of the Achievements and enhancing the Address Book.

Major enhancement:

The achievements component of the TravEzy application. The achievements page generate statistics from the 5 different existing features: address book, calendar, diary, itinerary and financial tracker.

What it does:

Upon navigating to the page, the achievements page generates the statistics for each feature. Thus this allows you to keep track of their progress within the application and provides a nice summary for each feature by looking at its statistics.

For instance, if an input delete 2 is entered in the address book, which deletes the 2nd person in the list. The achievements page will reflect the following changes:

bjhoohahaAchievementChanges
Any recent changes in the other pre-existing feature of Travezy namely: address book, calendar, diary, financial tracker and itinerary will update the Statistics inside the Achievements Page.To find out more what statistics are generated for each feature, you can look here.

By looking at your overall progress, this feature aims to:

  • Motivate you to travel more during your free time

  • Provide insights on your travelling habits

  • Provide insights on your expenditure habits

Highlights

The Achievements feature is live and up to date to reflect the latest statistics for each feature. To find out more what statistics are generated for each feature, you can look here

Minor enhancement:

In the address book component, I added a country field to the person in address book.

AddressBookInterface

What it does

When adding a person into the address book, you can specify the person’s country. The contact’s country will be displayed in the persons list panel.

Justification

A traveller travelling to many different country would have multiple contacts from different foreign countries. A specialized address book that specifies a country field for the added contact can better help to tailor to travellers need to better manage their contacts in the address book.

Credits

  • Asfal, Genuine Coder : reused code for fade in and fade out transitions when navgiating between user interface of different features

Other contributions

  • Project management:

    • Managed release v1.3 on GitHub

  • Refactoring:

    • Refactor TravEzy by moving address book into a new package and reorganize packages (Pull request #53)

    • Refactor to seperate main window from individual pages and implemented MainLogic, MainModel, MainParser to execute commands in the MainWindow (Pull request #169)

  • User Interface enhacements:

    • Designed the GUI template for TravEzy adapted by other team members (Pull request #83)

    • Updated the Address Book GUI to match the calendar and new color scheme (Pull request #87)

  • Fixing of Issues:

    • Fix Ui resizing issues during full screen mode (Pull request #169)

    • Implemeted saving of GuiSettings into Storage for all the pages inside TravEzy (Pull request #169)

    • Fix Ui resizing issues for Diary Book (Pull Request #172)

  • Documentation:

    • Updated UML diagrams for TravEzy in the Developer Guide: (Pull Request #73)

{you can add/remove categories in the list above}

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.

Achievements

You dream to become a top traveller travelling far and wide.. You have used TravEzy extensively and would want to keep track of your travel progress. From each of the different features inside Travezy, you are curious to find out the progress of the goals you have set for yourself. This will allow you to gain insights about your travelling and spending habits to motivate yourself to travel more, spend less and record all your favourite moments!

TravEzy application consist of 5 different features: Address Book, Calendar, Diary, Financial Tracker and Itinerary. For each of the different feature, TravEzy gives you a walkthrough of what statistics you can see for each feature when you are at the achievements page itself.

Interface

Navigating around the achievements interface:

AchievementsInterface
The statistics for each feature is generated and displayed on the scroll pane upon arriving at the achievements page

Statistics

The scroll pane contains the statistics for:

  • Address Book Statistiscs

  • Calendar Statistics

  • Diary Book Statistics

  • Financial Tracker Statistics

  • Itinerary Statistics

Address Book Statistics

In the scroll pane you will be able to see the statistics of the address book feature comprising of the following components:

AchievementsAddressBook
If the number of contacts in the address book has past the target goal of 200, the progress bar will show 100% instead of the actual percentage.

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.

Achievements

Logic Component

AchievementsLogicClassDiagram
Figure 1. AchievementsLogic Diagram of the Achievements feature

The AchievementsLogic is responsible for generating statistics for the different components in Travezy

  1. AchievementsLogicManager uses the Supplier<StatisticsModel> to supply the StatisticsModel.

  2. Getting the StatisticsModel from the Supplier<StatisticsModel> constructs a new StatisticsModel that gets the statistics data from a Model from another feature e.g. AddressBookModel that is visible within ModelManager

  3. AchievementsLogicManager returns the resultant data from the StatisticsModel that is lazily created.

The AchievementsLogic parses Command as well to enable navigation to other Page within Travezy.

  1. AchievementsLogicManager uses the AchievementsParser class to parse the user command.

  2. This results in a Command object which is executed by the AchievementsLogicManager.

  3. The command execution can affect the Model (e.g. adding a person).

  4. The result of the command execution is encapsulated as a CommandResult object which is passed back to the Ui.

  5. In addition, the CommandResult object can also instruct the Ui to perform certain actions, such as displaying help to the user.

The StatisticsModel does not allow mutations and is immutable. Passing the StatisticsModel into AchievementsLogic does not mutate the original StatisticsModel
Generate a new StatisticsModel to reflect the newly updated data from each logic by supplying a new StatisticsModeL from the StatisticsModelSupplier in AchievementsLogic

Given below is the sequence diagram for generating the StatisticsModel lazily:

AchievementsPage
Figure 2. Sequence Diagram of the Statistics Model