{"id":48469449,"url":"https://github.com/furthersecrets24680/chemsearch-android","last_synced_at":"2026-04-07T06:01:35.191Z","repository":{"id":343248590,"uuid":"1176913461","full_name":"FurtherSecrets24680/chemsearch-android","owner":"FurtherSecrets24680","description":"A native Android chemistry app. Search any compound and instantly get chemical data from PubChem, 3D models, GHS safety data, elemental analysis \u0026 optional AI descriptions. Built with Kotlin \u0026 Jetpack Compose.","archived":false,"fork":false,"pushed_at":"2026-03-26T18:27:19.000Z","size":3956,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-27T05:23:14.827Z","etag":null,"topics":["android","cheminformatics","chemistry","jetpack-compose","kotlin","material3","pubchem","retrofit","stem"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FurtherSecrets24680.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-09T14:03:54.000Z","updated_at":"2026-03-26T18:27:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/FurtherSecrets24680/chemsearch-android","commit_stats":null,"previous_names":["furthersecrets24680/chemsearch-android"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/FurtherSecrets24680/chemsearch-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FurtherSecrets24680%2Fchemsearch-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FurtherSecrets24680%2Fchemsearch-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FurtherSecrets24680%2Fchemsearch-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FurtherSecrets24680%2Fchemsearch-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FurtherSecrets24680","download_url":"https://codeload.github.com/FurtherSecrets24680/chemsearch-android/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FurtherSecrets24680%2Fchemsearch-android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31501903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","cheminformatics","chemistry","jetpack-compose","kotlin","material3","pubchem","retrofit","stem"],"created_at":"2026-04-07T06:01:32.294Z","updated_at":"2026-04-07T06:01:35.185Z","avatar_url":"https://github.com/FurtherSecrets24680.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChemSearch for Android\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"app/src/main/res/drawable/chemsearch.png\" width=\"96\" alt=\"ChemSearch icon\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA native Android app for searching and exploring chemical compounds.\u003c/strong\u003e\u003cbr/\u003e\n  Built for students, researchers, and anyone curious about chemistry.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/FurtherSecrets24680/chemsearch-android/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/FurtherSecrets24680/chemsearch-android?style=flat-square\" alt=\"Latest Release\"/\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Android-8.0%2B-green?style=flat-square\u0026logo=android\" alt=\"Android 8.0+\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Kotlin-Jetpack%20Compose-blue?style=flat-square\u0026logo=kotlin\" alt=\"Kotlin\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square\" alt=\"MIT License\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://www.producthunt.com/products/chemsearch?embed=true\u0026amp;utm_source=badge-featured\u0026amp;utm_medium=badge\u0026amp;utm_campaign=badge-chemsearch\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg alt=\"ChemSearch - Chemistry Simplified. | Product Hunt\" width=\"250\" height=\"54\" src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1104309\u0026amp;theme=light\u0026amp;t=1774183145053\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Download\n- Grab the latest APK from [GitHub Releases](https://github.com/FurtherSecrets24680/chemsearch-android/releases).\n- Or build from source (see below).\n\n---\n## Features\n\n### Search\n- Search by common name, IUPAC name, CAS number, or CID via PubChem PUG REST\n- Real-time **autocomplete suggestions** as you type, with a scrollable dropdown (toggleable)\n- **Recent searches** tab to access recently searched compounds.\n- **Favorites** tab with filtering, A-Z and atom-count sorting, and manual reordering.\n\n### Compound Data\n- Compound header showing name, molecular formula, molecular weight, CID and CAS at a glance\n- Full identifiers card: IUPAC name, SMILES (full and connectivity), InChI, InChIKey, empirical formula, and formal charge (tap any value to copy).\n- **Info tooltips** on each card explaining what each identifier or data type means\n- Up to 8 **synonyms** displayed as chips\n- **Elemental analysis** with mass percentage bars for each element\n- Tap the formula to jump into the Isomer Finder\n\n### Structure Viewer\n- **2D structure** via PubChem PNG images with tap-to-zoom\n- **3D model** using a fully native Canvas-based engine:\n    - Drag to rotate, pinch to zoom, auto-spin with pause on touch\n    - CPK coloring for all 118 elements\n    - Ball-and-stick model with bonds connected to atom surfaces\n- **Download** 2D PNG or 3D SDF files directly to Downloads\n\n### Safety Information\n- GHS classification fetched from PubChem PUG View:\n    - Signal word badge (Danger / Warning) with color coding\n    - GHS pictograms (GHS01 through GHS09) with icons and labels\n    - Hazard H-codes\n\n### Descriptions\nThree switchable sources per compound:\n- **PubChem** for scientific descriptions\n- **Wikipedia** for general summaries\n- **AI** via Google Gemini or Groq, with a regenerate button. This is totally optional and it requires your API key from these providers to work.\n\n### Tools\nEleven chemistry tools accessible from the Tools tab:\n\n- **Custom 3D Molecule Viewer** : Load any `.sdf` or `.mol` file from your device and view it in the native 3D engine\n- **Molar Mass Calculator** : Enter any molecular formula (including parentheses groups and hydrate dot notation) to get the molar mass and a full elemental breakdown by mass percentage\n- **Oxidation State Finder** : Determine oxidation states for each element in a compound, with support for peroxides, superoxides, ozonides, metal hydrides, and interhalogen compounds. Enter the overall charge for polyatomic ions\n- **SMILES Visualizer** : Paste any SMILES string to look it up on PubChem and view its 2D structure and 3D model\n- **Reaction Balancer** : Balance any chemical equation using matrix-based Gaussian elimination with exact rational arithmetic. Includes quick-insert buttons and swap-sides control\n- **Isomer Finder** : Find up to 20 structural isomers by searching with a molecular formula\n- **Limiting Reagent** : Identify limiting reagent, ratios, and theoretical yield for a balanced equation\n- **Percent Yield** : Compare actual yield against theoretical yield for a target product\n- **Reaction Scaling** : Scale reactants for a desired product amount\n- **Dilution Calculator** : Solve C1V1 = C2V2 for solutions\n- **Ideal Gas Law** : Solve PV = nRT for gases\n\nTool categories include scrollable filter pills and manual tool reordering.\n\n### Customization\n- **Theme mode** dropdown (Light / Dark) in Settings\n- Configurable default description source\n- AI provider selection with per-provider API key management\n- Autosuggestions toggle (scrollable dropdown, toggleable)\n\n### Updates and Cache\n- Built-in update checks against GitHub releases, with optional notifications\n- Local compound cache to speed repeat searches, with clear + custom location controls\n- Cached results are labeled in the UI\n\n### Developer Options\nA hidden debug menu can be unlocked by tapping the build number in the 'About' card five times. It includes:\n- **Live log viewer** : Real-time in-app log buffer (up to 200 lines) capturing search events, API calls, errors, SDF loads, and more, with timestamps. Errors always captured; verbose logs toggle-gated\n- **Verbose logging toggle** : Writes detailed `D/ChemSearch` lines to Logcat and the live buffer\n- **SharedPreferences inspector** : Dumps all stored keys and values (API keys partially masked)\n- **Memory info** : JVM heap usage and system RAM from `ActivityManager`\n- **API endpoints** : Copies all five base URLs to clipboard for manual testing\n- **Wipe SharedPreferences** : Completely reset all the stored data\n- **Force crash** : Throws a deliberate unhandled exception to verify crash reporting (confirmation required)\n- **Hide debug settings** : Relock the developer menu until the next 5-tap unlock\n\n---\n\n## Screenshots\n|                                                    |                                                     |                                                     |\n|:--------------------------------------------------:|:---------------------------------------------------:|:---------------------------------------------------:|\n| \u003cimg src=\"screenshots/home_dark.jpg\" width=\"220\"/\u003e | \u003cimg src=\"screenshots/home_light.jpg\" width=\"220\"/\u003e | \u003cimg src=\"screenshots/3dmolecule.jpg\" width=\"220\"/\u003e |\n|                 Search (Dark mode)                 |                 Search (Light mode)                 |                 3D Molecule Viewer                  |\n| \u003cimg src=\"screenshots/favorites.jpg\" width=\"220\"/\u003e | \u003cimg src=\"screenshots/tools_page.jpg\" width=\"220\"/\u003e |  \u003cimg src=\"screenshots/iden_ea.jpg\" width=\"220\"/\u003e   |\n|                     Favorites                      |                     Tools Page                      |           Identifiers \u0026 Element Analysis            |\n| \u003cimg src=\"screenshots/syn_desc.jpg\" width=\"220\"/\u003e  | \u003cimg src=\"screenshots/ghs_safety.jpg\" width=\"220\"/\u003e |  \u003cimg src=\"screenshots/tool_mmc.jpg\" width=\"220\"/\u003e  |\n|               Synonyms \u0026 Description               |               GHS Safety Information                |                Molar Mass Calculator                |\n| \u003cimg src=\"screenshots/tool_osf.jpg\" width=\"220\"/\u003e  |  \u003cimg src=\"screenshots/tool_rb.jpg\" width=\"220\"/\u003e   |  \u003cimg src=\"screenshots/tool_sv.jpg\" width=\"220\"/\u003e   |\n|               Oxidation State Finder               |                  Reaction Balancer                  |                  SMILES Visualizer                  |\n\n---\n\n## Tech Stack\n\n| Component     | Technology                                             |\n|---------------|--------------------------------------------------------|\n| Language      | Kotlin                                                 |\n| UI            | Jetpack Compose + Material 3                           |\n| Networking    | Retrofit 2 + OkHttp                                    |\n| Image loading | Coil                                                   |\n| Async         | Kotlin Coroutines + StateFlow                          |\n| JSON          | Gson                                                   |\n| 3D rendering  | Custom native Canvas engine                            |\n| Storage       | SharedPreferences                                      |\n| Versioning    | Git tag-based version name + commit count version code |\n\n---\n\n## Data Sources\n\n| Source                                                             | Used for                                                               |\n|--------------------------------------------------------------------|------------------------------------------------------------------------|\n| [PubChem PUG REST](https://pubchem.ncbi.nlm.nih.gov/docs/pug-rest) | Compound lookup, properties, synonyms, descriptions, SDF, autocomplete |\n| [PubChem PUG View](https://pubchem.ncbi.nlm.nih.gov/docs/pug-view) | GHS safety classifications                                             |\n| [Wikipedia REST API](https://en.wikipedia.org/api/rest_v1/)        | Compound summaries                                                     |\n| [Google Gemini](https://ai.google.dev/)                            | AI descriptions                                                        |\n| [Groq](https://groq.com/)                                          | AI descriptions                                                        |\n| [GitHub Releases API](https://docs.github.com/en/rest/releases/releases) | Update checks                                                     |\n\n---\n\n## Requirements\n\n### For Users\n- Android 8.0 (Oreo) or higher (API 26+)\n- Internet connection for compound data and AI descriptions\n\n### For Developers\n- Android Studio Hedgehog (2023.1.1) or newer\n- JDK 11\n- Android SDK API 36\n\n---\n\n## Permissions\n\n- `INTERNET` for compound data, suggestions, descriptions, and update checks\n- `POST_NOTIFICATIONS` (Android 13+) for optional update notifications\n- `WRITE_EXTERNAL_STORAGE` (Android 9 and below) to save 2D PNG and 3D SDF downloads\n\n---\n\n## Building from Source\n\n```bash\ngit clone https://github.com/FurtherSecrets24680/chemsearch-android\ncd chemsearch-android\n./gradlew assembleDebug\n```\n\nOpen in Android Studio, sync Gradle, and run on a device or emulator (API 26+). Debug builds work without any API keys configured.\n\nTo install a debug build on a connected device:\n\n```bash\n./gradlew installDebug\n```\n\n### Release Signing\n\nRelease builds require a `keystore.properties` file in the project root:\n\n```properties\nstoreFile=path/to/your.keystore\nstorePassword=yourStorePassword\nkeyAlias=yourKeyAlias\nkeyPassword=yourKeyPassword\n```\n\nThen build via `./gradlew assembleRelease` or **Build → Generate Signed APK**.\n\n---\n\n## AI Descriptions (Optional)\n\nAI descriptions require a free API key from your chosen provider, entered in the app's Settings.\n\n| Provider      | Model                 | Get an API key                                                       |\n|---------------|-----------------------|----------------------------------------------------------------------|\n| Google Gemini | `gemini-flash-latest` | [aistudio.google.com/api-keys](https://aistudio.google.com/api-keys) |\n| Groq Cloud    | `openai/gpt-oss-120b` | [console.groq.com/keys](https://console.groq.com/keys)               |\n\nKeys are stored locally on your device and only sent directly to the respective provider.\n\n---\n\n## Privacy\n\n- Data is fetched directly from PubChem, Wikipedia, Gemini, Groq, and GitHub Releases. No intermediary servers are used.\n- API keys, search history, favorites, and cache settings are stored locally using `SharedPreferences`. Cached compound data is stored locally on device.\n- No analytics, tracking or telemetry of any kind.\n\n---\n\u003ca href=\"https://www.star-history.com/?repos=furthersecrets24680%2Fchemsearch-android\u0026type=timeline\u0026logscale=\u0026legend=top-left\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/image?repos=furthersecrets24680/chemsearch-android\u0026type=timeline\u0026theme=dark\u0026legend=top-left\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/image?repos=furthersecrets24680/chemsearch-android\u0026type=timeline\u0026legend=top-left\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/image?repos=furthersecrets24680/chemsearch-android\u0026type=timeline\u0026legend=top-left\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n---\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurthersecrets24680%2Fchemsearch-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffurthersecrets24680%2Fchemsearch-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurthersecrets24680%2Fchemsearch-android/lists"}