# "Interface Capabilities" Exercise

## Learning Objectives

* Continue to practice installing and running existing Python applications.
* Gain familiarity with the ways users can interact with Python applications, to inform future self-directed "freestyle" project planning and design efforts.

## Instructions

Below is a list of Python applications which demonstrate various user interface capabilities.

For each application you're interested in, follow the instructions in its README document to install, configure, and run it. Also feel free to explore the application's directory structure and file contents as desired.

| App Name                                                                                  | Functionality Description                                                             | Interface Capabilities                                                                                                        | Deployment Capabilities                                                                                                                                                                                         |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Rock-Paper-Scissors](https://github.com/prof-rossetti/rock-paper-scissors-py)            | A basic game written in Python.                                                       | One version accepts user inputs through a command-line interface (CLI), while others accept user inputs through a native GUI. | Needs to be installed and run locally on the user's computer.                                                                                                                                                   |
| [Rock-Paper-Scissors (Flask)](https://github.com/prof-rossetti/rock-paper-scissors-flask) | A basic game written in Python and implemented as a web application.                  | Accepts user inputs through a web browser interface.                                                                          | Can be installed and run locally on the user's computer, or hosted on a remote server for public consumption over the Internet.                                                                                 |
| [Notification Service](https://github.com/prof-rossetti/notification-service-py)          | Sends emails, SMS messages, tweets, etc.                                              | Scripts are executed from the command-line (CLI), but don't require user inputs.                                              | Can be installed and run locally on the user's computer, or on a remote server where it can be scheduled to perform at regular intervals behind the scenes on behalf of the user (i.e. nightly background job). |
| [Voice Interface Demo](https://github.com/prof-rossetti/voice-interface-demo-py)          | A mock Amazon Alexa service which recognizes voice commands and responds accordingly. | Accepts voice inputs through a command-line interface.                                                                        | Needs to be installed and run locally on the user's computer.                                                                                                                                                   |

> FYI: some of these applications may require you to sign up for third-party services to perform the desired functionality (e.g. Sendgrid if you want to send an email, Twitter if you want to send a tweet, etc.). See the respective repository's README file for more details.
