Within your course repository, create a directory "final". Commit and push to your remote repository.

cd <path_to_repo>
mkdir final
touch final/Dockerfile
touch final/app.py
touch final/project_url.txt
touch final/screencast_url.txt
git add final
git commit -m "initial commit for final"
git push

You will take the Cloud Run version of the web application developed previously and adapt it to be a front-end that utilizes APIs of your choice from those on Google Cloud (Vision, Text-to-Speech, Natural Language Processing, Speech-to-Text, Video Intelligence, Translate, Knowledge Graph, Firebase) to external APIs (e.g. Spotify, LiFX). Other API ideas can be found at https://rapidapi.com . For graduate students, a minimum of 2 API integrations must be implemented for a passing grade. For undergraduates, a minimum of 1 API integration per student must be implemented for a passing grade. Integrations will be graded on the level of functionality that has been leveraged from the API.

Project Ideas

Your development should be organized and incremental, with frequent commits into your git repository.

Upon completing your project, via a narrated screencast of no longer than 15 minutes, you will show the following in the exact order specified.

You may use screencast software of your choice. Options include video conferencing applications such as Google Meet and Zoom or dedicated programs such as OBS Screen Recorder, QuickTime (MacOS), Screencast-O-Matic (Windows), or RecordMyDesktop (Linux). In addition, CaptureSpace Lite is available via PSU's Media Space (https://media.pdx.edu).


All application code including the Dockerfile used to build the container should be pushed to your repository in the final directory. In addition to your code, the file final/project_url.txt should contain the URL that your container running on Cloud Run Your Cloud Run instance must be left up for a week after submission. If you need an additional coupon, request it now.


Upload your completed screencast on MediaSpace. Ensure that it is published as "Unlisted". To do so, visit MediaSpace and click on "My Media".

Click on the screencast video that has been uploaded. Then, in the tabs below, select the "Publish" tab, click on "Unlisted", and then "Save".

Then, update the file final/screencast_url.txt in your repository to contain the URL that your unlisted screencast on MediaSpace is located. Push the changes to your repository before the due date.

We will be using your screencast and git repository to evaluate your project.

Demo of the setup, building, and deployment of the application

Demo of fully functioning application

APIs implemented, level of functionality, and the creativity of the application and its integration

Code quality (clean with no unused code or variables, readable, modular, and documented with Docstrings and comments)

Walkthrough quality including Dockerfile, source code, and description of development history via git commits

Instructions followed properly including code submission in the specified repository files, sequencing of screencast, and the length of the screencast