HelloWorld is a web application that retrieves the cheapest flight option based on users’ desired flight characteristics. The current supported list of flight characteristics include:
- origin and destination
- one-way vs. round-trip
- number of travelers
- cabin class
- departure date and return date.
* Our software allows users to enter multiple origin locations and destination locations. Our software provides users the option to bundle various groups together in a preset and tie those customized presets to their account.
Search feature allows users to toggle various origin and destination locations manually, or autofill the flight search interface with the locations presets tied to their account for ease of use. Based on the information the user provides, our software makes calls to the Amadeus Flight API and sorts the flights returned. We sort from lowest to highest price per flight duration. Each itinerary results reflects the users' inputs in the optimal sorting order (metrics is price/flight duration). The current supported list of each itinerary result include:
- total travel time
- layover information (duration, time stamps)
- airline carriers
With our software, users are able to sift through results returned to them and see flight numbers for each flight to allow them to lookup that flight on a flight purchasing website at ease.
Most modern operating systems (Windows, MacOS, Linux, etc.) with web browser
All modern browsers (Edge, Firefox, Chrome, Safari, etc.)
- Server environment: Node.js
- Package manager:
npm(preferred and included when you install Node) - Version control: git
All dependencies with their versions are listed in the metadata/configuration files in our project (backend dependencies here, frontend dependencies here). Important requirements are listed below:
To ensure the proper functionality of this project, you must configure the following keys:
For Firestore and Firebase Authentication, you need to set up your Firebase project and obtain your unique Firebase key. Follow these steps:
- Go to the Firebase Console.
- Create a new project or select an existing one.
- Navigate to the project settings and find your Web API Key.
- Place this key in your frontend/Firebase folder.
This project uses the Amadeus API to search for flights. You will need to obtain your API key by following these steps:
- Sign up for an account at Amadeus for Developers.
- Create a new application within your dashboard to receive your API credentials.
- You'll receive an API Key and API Secret—both of which you'll need to use the Amadeus services.
- Add the API Key and Secret to your backend/Amadeus folder.
First, ensure your operating system, and web browser requirements are met.
Second, install Node.js and npm with the appropriate installer to your OS. Development of this project is done using Node v18.14.1 and npm v9.3.1
Third, navigate to your directory of choice. Clone the repo and navigate there with
git clone https://github.com/tvay11/helloworld.git && cd helloworldWithin the helloworld directory, navigate to the frontend folder and install its dependencies locally 1
cd frontend && npm installReturn to project root in helloworld and navigate to backend folder and install its dependencies locally 1
cd ../backend/server/ && npm installOnce within HelloWorld folder...
- To run frontend,
cd frontendand then runnpm start - To run backend server,
cd backend/serverand then runnpm run dev
%%{ init : { "theme" : "forest"}}%%
graph LR;
Frontend & DB[(Firestore)] & API--> Server[Server];
Server--> Frontend & DB & API;
Firebase[(Firebase auth )] --> DB;
DB --> Firebase;
%%{ init : { "theme" : "forest", "graph" : { "curve" : "linear" }}}%%
graph TD
u{User} --takes action--> FlightSearch & Signup & Login & SaveFlightInfo
FlightSearch --searches flights---> Server(NodeJS Server)
Server --retrieves info---> API(Amadeus API)
subgraph flight search
FlightSearch
API
end
SaveFlightInfo --saves flight info ---> Server --retrieves info ---> DB[(Firestore)]
subgraph save
SaveFlightInfo
DB
end
Signup --creates a login ---> Server --authenticates user ---> FB[(Firebase)]
subgraph authentication
subgraph signup
Signup
end
subgraph login
Login
end
FB
end
Login --sends a login request ---> Server
Server --returns info ----> UI(User Interface)
%%{ init : { "theme" : "forest", "graph" : { "curve" : "linear" }}}%%
graph TD
Homepage --create account--> Creation(Account Creation Page)
Homepage --login to account--> Login(Account Login Page)
Creation -- login to newly created account --> Login
Homepage -- enter desired flight info --> Results(Results Entries)

