App: Search PubChem
Developer: Jae-Seung Lee
Genres: Education, Reference

The app allows to search compounds through ‘PubChem’ and helps to keep information on solutions made of those compounds.

I. Compounds Tab
Search the open chemistry database 'PubChem' at the National Institutes of Health (NIH) for chemical compounds. The app helps to find a compound by name from the collection of more than 111 million compounds. It downloads and stores the molecular formula, weight, and structure.

Compounds
1. Selecting the "Compounds" tab will present a list of compounds.
  - If there are any solutions made of a compound, a 'droplet' will appear next to the compound's name.
2. When a compound is selected, a view with the detailed information will appear. Follow the instruction in "Details for a compound".
3. When the "+" button is selected, a view for search will appear. Follow the instruction in "Search for a compound".

Details for a compound
1. Click "Compounds" to return back to the table of compounds.
2. Click the 'magnifier' icon to open the compound's PubChem page in the user's default web browser.
3. Click the 'trashcan' icon to delete the compound. This function may not be available if there is a solution made of the compound.
4. Click one of the solutions made of the compound to display the information. See "Details for a solution" below.
5. Click '3D' to display a 3D structure. Use pan and pinch gestures to rotate and zoom the scene.

Search for a compound
1. Select “Compound Name” (“CID”) and type a compound name (PubChem CID).
2. Click "Search" to connect to PubChem. An activity indicator will appear until the search is finished.
  - If the search succeeds, the downloaded information will appear.
  - If the search fails, an alert will appear.
3. Click "Save" to store the information about a compound.
4. Click "Cancel" to dismiss the scene.

II. Solutions Tab
Choose compounds downloaded from 'PubChem' and make a solution. The app allows to record a list of compounds with amounts dissolved in a solution. For the saved solutions, the app displays their compositions in gram and mol.

Solutions
1. Selecting the "Solutions" tab will present a list of solutions.
2. When a solution is selected, a view with the detailed information will appear. Follow the instruction in "Details for a solution".
3. When the "+" button is selected, a view for search will appear. Follow the instruction in "Making a solution".

Details for a solution
1. Click "Solutions" to return back to the table of compounds.
2. Click the 'action' icon to share a csv file containig the information about the solution.
3. Click the 'trashcan' icon to delete the solution.
4. Choose between 'actual' and '%' to display the actual or percent amounts of individual compounds.
5. Choose the unit among 'gram’, ‘mg’, ‘mol’, and ‘mM’.
  - If 'gram’ (‘mg’) is selected, 'actual' displays the amounts in the unit of gram (mg) or '%' does in the percentage of weights.
  - If 'mol' (‘mM’) is selected, 'actual' displays the amounts in the unit of mol (mM) or '%' does in the percentage of the number of molecules.
6. Select one of compounds to display its structure and formula. See "Mini details for a compound" below.

Making a solution
1. Click "Add Compounds" to bring a collection of compounds. See "Compounds collection" below.
2. The names of the compounds selected from "Compounds collection" will be displayed as “Solution Label”. A user can edit “Solution Label”.
3. The unit for the amount can be chosen among gram, mg, mol, and mM.
4. The amount may be entered.
5. Click "Save" to create and add a new solution.
6. Click "Cancel" to dismiss the scene.

Compounds collection
1. Select or deselect compounds by clicking the images of compounds.
2. Selected compounds will be displayed.
3. Click "Done" to return back to "Making a solution".
5. Click "Cancel" to dismiss the scene.

Mini details for a compound
1. Click the image to dismiss the scene.

Release notes:
- Support spotlight search: A user can turn the feature on/off through Settings.
- The 3D structure display can be reset to go back to the original viewpoint.