Assignment 2 - Airline Travel Assistant

Assignment 2 Instructions: here.

Due - Sunday, December 7, 2025

This is a group project of 2 or 3 students per group. You do not have to stay in the same group as for Assigment 1. The groups can be found in the document Assignment2_Groups.docx.

Business Case

You would like to create a web-page based travel assistant to assist travellers in flying from point A to point B. There are many options to consider when travelling. Certain options are more important than others, depending on the traveller. You need a programmable way of accessing the availability of such options, and to leverage such information in building your webpage.

Requirements Collection

You need to come up with a list of requirements for your webpage.
TASK 1: Come up with a list of requirements from your own input and from looking at existing webpages. Keep the list short. (1 mark)

But to build a truly successful webpage, you decide to solicit responses from possible clients. In dealing with potential clients, you will have to come up with prototypes of your user interface.
TASK 2: Show me three prototypes of your front end and how they were received by potential clients. (1 mark)
TASK 3: Show me a list of requirements derived from customer feedback. This is very important. (3 marks)

TASK 4: Take all these requirements and categorize them according to the MOSCOW method.
M - Must haves,
S - Should haves,
C - Could haves,
W - Won't haves.
These requirements form the basis of your webpage. (1 mark)

Architecture

TASK 5: According to the Software Architecture Tutorial of week 3, select an architecture for your webpage. If there are more than one, be sure to indicate the dominant architecture. (1 mark)

TASK 6: Discuss two alternatives to your architecture and why you rejected them. (1 mark)

Implementation

The Google Flights API has a free option for 250 searches/month. You will have to sign in and ask for an API Key to access its information.

React is an ideal development tool for this. A flight search webpage is a highly interactive, list-heavy, stateful UI. React's declarative components and state management make it somewhat simple to build, safe to extend, and smooth to use, rather than ad-hoc DOM scripting. For more on React, see the tutorials at SED500 React Tutorial and W3Schools React Tutorial.

This assignment steers you towards the Google Flights API for flight information, and React for web development. You do not have to use Google Flights, nor React.
TASK 7: For whatever API you choose, discuss an alternative API. (1 mark)
TASK 8: For whatever development languages you use, discuss an alternative language-set for webpage development. (1 mark)

TASK 9: Using whatever software development tools you have at your disposal, implement the must have requirements of your webpage. You might not have time to do all of these. If not, implement a few, and describe how you would implement the rest. Be sure to include a reference to all tools you used in developing your webpage. (4 marks)

TASK 10: Describe how you would implement the should have requirements of your webpage. (0.5 mark)

TASK 11: Describe how you would implement the could have requirements of your webpage. (0.5 mark)

The following code is a demo of the most basic functionality of the traveller assistant webpage. Feel free to use parts or all of this code in your implementation. You should find the airportCodes.json file very useful:
airportCodes.json - The airport code, airport name, city and country for all airports in the world.
styles.css - The styles CSS file,
index.html - The Flight Search static HTML file,
app.jsx - The dynamic REACT JSX file,
example.json - A sample JSON file returned from Google Flights,
server.py - A local server for testing your webpage.

In the above sample code, you can see that my API key is cbc5a8b98877e07122ae836f2edead974a9fe6d552e3e9aa4e9b54609fdfc740. Feel free to use this API if you have problems generating your own. Keep in mind that this API key is free and therefore restricted to 250 calls/month.

In the above sample code, you can run server.py from a command line to act as your own local server:
$ py server.py
You can then access your own webpage at the following address:
http://127.0.0.1:8080/index.html

Part of the output of the above sample code (travelling Vancouver to Beijing, leaving 24 December 2025 and returning 4 January 2026) can be seen below: Toronto to Beijing

Testing

TASK 12: Create and run a Selenium script for testing two of the requirements implemented on your webpage. See Automated Web-Page Testing with Selenium for a tutorial on how to use Selenium. (3 marks)

Security

TASK 13: Identify and describe three security holes in the demo webpage given above and how you might mitigate them. (1 mark)

Deployment

TASK 14: How would you deploy your program? What existing programs could you work with? (1 mark)

Marking Rubric

Note that this assignment partially fulfills two of the Canadian Engineering Accreditation Board graduate attributes that our engineering graduates should have:
- Design (DE.5),
- Economics & Project Management (EP.2).
Both attributes are assessed here.

All tasks have been embedded within the assignment. Assignment 2 is worth 20% of your final grade and as such is marked out of 20 as follows:

Does not meet expectationsSatisfactoryGoodExceeds Expectations

Requirements Collection
Tasks 1-4
(6 marks) DE.5
Does not meet requirementsMeets the most important requirementsMeets all requirements with minor errorsMeets all requirements with no errors

Architecture
Tasks 5,6
DE.5 (2 marks)
Does not meet requirementsMeets the most important requirementsMeets all requirements with minor errorsMeets all requirements with no errors

Implementation
Tasks 7-11
(7 marks) EP.2
Does not meet requirementsMeets the most important requirementsMeets all requirements with minor errorsMeets all requirements with no errors

Testing
Task 12
(3 marks)
Does not meet requirementsMeets the most important requirementsMeets all requirements with minor errorsMeets all requirements with no errors

Security
Task 13
(1 mark)
Does not meet requirementsMeets the most important requirementsMeets all requirements with minor errorsMeets all requirements with no errors

Deployment
Task 14
(1 mark)
Does not meet requirementsMeets the most important requirementsMeets all requirements with minor errorsMeets all requirements with no errors

Submission

Please email all material to: miguel.watler@senepolytechnic.ca

Late Policy

You will be docked 10% if your assignment is submitted 1-2 days late.
You will be docked 20% if your assignment is submitted 3-4 days late.
You will be docked 30% if your assignment is submitted 5-6 days late.
You will be docked 40% if your assignment is submitted 7 days late.
You will be docked 50% if your assignment is submitted 9-10 days late.
You will be docked 100% if your assignment is submitted over 10 days late.