An App Inventor app consists of a collection of components and a program that specifies the behavior of the components. Components include visible items in the user interface (e.g., buttons, images, and text boxes) and non-visible items used in the app (e.g., camera, GPS sensor). The program is written in a visual blocks-based language in which the programmer connects code fragments that are shaped like puzzle pieces