Comp 152 Project 5:
Teams, APIs, third party libraries and a bigger project

Due:  Sun Dec 12th at 11:59pm (with Thanksgiving in between now and then, this is not that long away)

Intermediate deliverable Due Date: Nov 23rd/24th in class.


Summary:

This project will give you a chance to work with json, RESTful apis, windowed programs with JavaFX, and learn a bit from documentation.


Project:

You will work in groups of three (except for the odd numbered groups when the class size mod 3 isn't zero)

All students in a group need to be working on the same github version of the project. So the person setting up the project will need to invite the other group members as collaborators


Possible APIs and windows (each person in the group needs to pick one - not more than one per group can do the same one) You cannot use Alert or JAvaFX Dialogs for any of this. all the data collection and display must be on javaFX stage windows that you create in code or in FXML

Your group will only be using 3 (or maybe 4 for the one group) (depending on group size) of these 6 APIs.

  1. GDP comparison

    1. use these three api endpoints 
      1. http://api.worldbank.org/v2/countries/USA/indicators/NY.GDP.MKTP.CD?per_page=5000&format=json
      2. http://api.worldbank.org/v2/countries/CHN/indicators/NY.GDP.MKTP.CD?per_page=5000&format=json
      3. http://api.worldbank.org/v2/countries/IND/indicators/NY.GDP.MKTP.CD?per_page=5000&format=json
      4. the old versions are below.
      1. http://api.worldbank.org/countries/USA/indicators/NY.GDP.MKTP.CD?per_page=5000&format=json
      2. http://api.worldbank.org/countries/CHN/indicators/NY.GDP.MKTP.CD?per_page=5000&format=json
      3. http://api.worldbank.org/countries/IND/indicators/NY.GDP.MKTP.CD?per_page=5000&format=json
    2. Let your user choose a year, display that year and display the country name and GDP for these three countries (US, China and India) for that year
    3. allow the user to select another year and update the data to that new year.
  2. The Games of Thrones Book API https://anapioficeandfire.com/Documentation#books
    1. get the books information by default, display the name of the book, its ISBN number, the number of pages and a list of POV characters (show their names).
    2. when a POV character is selected, display when the character was born, when the character died and the actor(s) that played the character.
  3. Makeup
    1. use this makeup API http://makeup-api.herokuapp.com/
      1. allow your users to set values for at least three of the search parameters at the bottom of the api documentation page
      2. send the API information and put the result name into a list box, when the user selects the particular type of makeup from the listbox, display price, description, brand and at least one other piece of information in your UI
  4. International Phone Numbers

    1. use these two API endpoints: http://country.io/phone.json and  http://country.io/names.json to let your users look up the country codes for a country of their choice.
    2. let the user choose a country
    3. look up its phone code
    4. display the country name. country code (the two or three character ISO code) and the phone prefix
    5. allow the user to do the same again for another country
  5. A blast from the past, Chuck Norris Jokes
    1. use this API: https://api.chucknorris.io/
    2. First let your user choose a category. Pick ten of the categories here: https://api.chucknorris.io/jokes/categories (if you find a category that has inappropriate material - omit that one) I have only looked at about 5 of these so there is a possibility that there is something that is not appropriate - if so, omit that category.
    3. Once the user has picked a category, make another request for a random joke from that category and display it to the user.
  6. the Star Wars API
    1. use this star wars API: https://swapi.dev/documentation
    2. let your user search on  a character
    3. when the data comes back, follow the API links in the returned data to get the name of the character's home planet,   and the movies they were in. Also include the character's name, height, and birth year on display.

Intermediate Deliverable:

In class on Nov 23rd/24th, each group needs to pass in a one page summary which includes:

Extra requirements for the project


Comment your code.
Include comments at the top of your JavaFX Application class
    your name

    Anything you didn't get done

Make your commit/pull request messages informative, as per above, I will be assigning credit for good/descriptive messages.



Submission:

upload the entire project, including all of the Maven files needed to run on another machine to one student's github and make me a collaborator as before.