{"id":13468523,"url":"https://github.com/ganeshrvel/openmtp","last_synced_at":"2025-05-13T21:07:59.048Z","repository":{"id":37546210,"uuid":"161636751","full_name":"ganeshrvel/openmtp","owner":"ganeshrvel","description":"OpenMTP  - Advanced Android File Transfer Application for macOS","archived":false,"fork":false,"pushed_at":"2024-11-12T06:02:58.000Z","size":117993,"stargazers_count":4575,"open_issues_count":124,"forks_count":170,"subscribers_count":37,"default_branch":"master","last_synced_at":"2025-04-28T13:59:47.188Z","etag":null,"topics":["android","electron","file-transfer","macos","mtp","nodejs","openmtp","react","reactjs"],"latest_commit_sha":null,"homepage":"https://openmtp.ganeshrvel.com","language":"JavaScript","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/ganeshrvel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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},"funding":{"custom":["https://paypal.me/ganeshrvel","https://buymeacoffee.com/ganeshrvel"]}},"created_at":"2018-12-13T12:34:15.000Z","updated_at":"2025-04-28T10:14:23.000Z","dependencies_parsed_at":"2022-07-31T23:38:47.819Z","dependency_job_id":"e442278a-9cc7-4ba2-8f90-a80129d08dca","html_url":"https://github.com/ganeshrvel/openmtp","commit_stats":null,"previous_names":[],"tags_count":61,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshrvel%2Fopenmtp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshrvel%2Fopenmtp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshrvel%2Fopenmtp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshrvel%2Fopenmtp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ganeshrvel","download_url":"https://codeload.github.com/ganeshrvel/openmtp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254028916,"owners_count":22002281,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","electron","file-transfer","macos","mtp","nodejs","openmtp","react","reactjs"],"created_at":"2024-07-31T15:01:12.808Z","updated_at":"2025-05-13T21:07:54.016Z","avatar_url":"https://github.com/ganeshrvel.png","language":"JavaScript","readme":"# OpenMTP | Android File Transfer for macOS\n\n- Author: [Ganesh Rathinavel](https://www.linkedin.com/in/ganeshrvel 'Ganesh Rathinavel')\n- License: [MIT](https://github.com/ganeshrvel/openmtp/blob/master/LICENSE 'MIT')\n- System Requirements: macOS 11.0 (Big Sur) or higher\n- Website URL: [https://openmtp.ganeshrvel.com](https://openmtp.ganeshrvel.com/ 'https://openmtp.ganeshrvel.com')\n- Repo URL: [https://github.com/ganeshrvel/openmtp](https://github.com/ganeshrvel/openmtp/ 'https://github.com/ganeshrvel/openmtp')\n- Contacts: ganeshrvel@outlook.com\n\n## Introduction\n\n### Advanced Android File Transfer Application for macOS.\n\nTransferring files between macOS and Android or any other MTP devices has always been a nightmare. There are a few File Transfer MTP apps which are available online but most of them are either too expensive or come with bad UI/UX. The official \"Android File Transfer\" app for macOS from Google comes with bugs, innumerable limitations, some of which include - not being able to transfer files larger than 4GB, frequent disconnections, unable to rename the folders or files on the android/MTP devices. Most of the other apps available online uses either WiFi or ADB protocol to transfer the files, which is an extremely time-consuming process.\n\nCountless searches to find an app to solve these problems and failing to find one made me restless. So, I took the leap and decided to create an app for us that could help us have a smooth and hassle-free file transfer process from macOS to Android/MTP devices. Created with the objective of giving back to the community, we can all use this app for free in this lifetime.\n\n### Features\n\n- Safe, Transparent and Open-Source\n- Plug and Play via USB. No hassles, easy and instant connection.\n- Select between Internal Memory and SD Card\n- Transfer multiple files which are larger than 4GB\n- Dark mode\n- Drag-and-drop support\n- Split pane views for both Local Computer and Android device\n- Choose between Grid and List view.\n- Use Keyboard Shortcuts to navigate through your files.\n- No collection of personally identifiable information.\n\n### Kalam Kernel\n\nOpenMTP 3.0 features a new MTP kernel and it was written from the scratch. It promises a file copy speed of 30 to 40 MB/s on low and mid range devices and 100 to 120 MB/s on higher end devices. The all new and powerful MTP kernel is named after [Dr. A. P. J. Abdul Kalam](https://en.wikipedia.org/wiki/A._P._J._Abdul_Kalam 'Dr. A. P. J. Abdul Kalam')\n\nDo checkout the Go package which I've written to build Kalam Kernel: [github.com/ganeshrvel/go-mtpx](https://github.com/ganeshrvel/go-mtpx 'https://github.com/ganeshrvel/go-mtpx'). Feel free to raise PRs.\n\n### System Requirements and Support\n\n- To support macOS version below Big Sur the Kalam kernel needs to be compiled on an older macOS machine everytime there is an update, which is practically very difficult\n- Only the latest 3 versions of macOS will receive the `Kalam` Kernel updates, which includes new device supports, fixes, stability improvements. macOS Big Sur (11.0) or above will receive the above said updates\n- We have now officially retired the support for `Kalam` Kernel on macOS 10.13 (OS X El High Sierra) and lower. Only the \"Legacy\" MTP mode will continue working on these outdated machines.\n- We will continue releasing the updates for both `Intel` and `ARM64` machines\n\n### Installation\n\n- Download the [Mac Apple Silicon](https://openmtp.ganeshrvel.com/?downloadApp=github\u0026release=stable\u0026platform=mac\u0026arch=arm64 'Mac Apple Silicon') version\n- Download the [Mac Intel Silicon](https://openmtp.ganeshrvel.com/?downloadApp=github\u0026release=stable\u0026platform=mac\u0026arch=x64 'Mac Intel Silicon') version\n- Using Homebrew Cask\n\n```shell\n  # newer versions:\n  brew install openmtp --cask\n  # older versions:\n  brew cask install openmtp\n```\n\n- Find the latest _dmg_ file from [GitHub Releases](https://github.com/ganeshrvel/openmtp/releases 'GitHub Releases')\n\n### Screengrabs\n\n![OpenMTP File Explorer](https://github.com/ganeshrvel/openmtp/raw/master/blobs/images/file-explorer-bluebg.jpg 'OpenMTP File Explorer')\n\n![OpenMTP File Transfer](https://github.com/ganeshrvel/openmtp/raw/master/blobs/images/file-transfer-bluebg.jpg 'OpenMTP File Transfer')\n\n### Keyboard Shortcuts\n\n| Command                                           | Keyboard Shortcut                                                            |\n| ------------------------------------------------- | ---------------------------------------------------------------------------- |\n| Delete                                            | \u003ckbd\u003ebackspace\u003c/kbd\u003e                                                         |\n| New Folder                                        | \u003ckbd\u003ecommand (⌘)\u003c/kbd\u003e+\u003ckbd\u003en\u003c/kbd\u003e                                          |\n| Copy                                              | \u003ckbd\u003ecommand (⌘)\u003c/kbd\u003e+\u003ckbd\u003ec\u003c/kbd\u003e                                          |\n| Copy to Queue                                     | \u003ckbd\u003ecommand (⌘)\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003ec\u003c/kbd\u003e                         |\n| Paste                                             | \u003ckbd\u003ecommand (⌘)\u003c/kbd\u003e+\u003ckbd\u003ev\u003c/kbd\u003e                                          |\n| Refresh                                           | \u003ckbd\u003ecommand (⌘)\u003c/kbd\u003e +\u003ckbd\u003er\u003c/kbd\u003e                                         |\n| Folder Up                                         | \u003ckbd\u003ecommand (⌘)\u003c/kbd\u003e+\u003ckbd\u003eb\u003c/kbd\u003e                                          |\n| Select All                                        | \u003ckbd\u003ecommand (⌘)\u003c/kbd\u003e+\u003ckbd\u003ea\u003c/kbd\u003e                                          |\n| Rename                                            | \u003ckbd\u003ecommand (⌘)\u003c/kbd\u003e+\u003ckbd\u003ed\u003c/kbd\u003e                                          |\n| Switch Tab                                        | \u003ckbd\u003ecommand(⌘)\u003c/kbd\u003e+\u003ckbd\u003e1\u003c/kbd\u003e                                           |\n| Open                                              | \u003ckbd\u003eenter\u003c/kbd\u003e                                                             |\n| Navigate Left                                     | \u003ckbd\u003eleft\u003c/kbd\u003e                                                              |\n| Navigate Right                                    | \u003ckbd\u003eright\u003c/kbd\u003e                                                             |\n| Navigate Up                                       | \u003ckbd\u003eup\u003c/kbd\u003e                                                                |\n| Navigate Down                                     | \u003ckbd\u003edown\u003c/kbd\u003e                                                              |\n| Select Multiple Items Forward **(in Grid View)**  | \u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003eleft\u003c/kbd\u003e                                             |\n| Select Multiple Items Backward **(in Grid View)** | \u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003eright\u003c/kbd\u003e                                            |\n| Select Multiple Items Forward **(in List View)**  | \u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003eup\u003c/kbd\u003e                                               |\n| Select Multiple Items Backward **(in List View)** | \u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003edown\u003c/kbd\u003e                                             |\n| Select Multiple Items **(with mouse)**            | \u003ckbd\u003ecommand (⌘)\u003c/kbd\u003e+\u003ckbd\u003eclick\u003c/kbd\u003e or \u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003eclick\u003c/kbd\u003e |\n\n## Building from Source\n\nRequirements: [Node.js v16](https://nodejs.org/en/download/ 'Install Node.js v16'), [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git 'Install Git') and [Yarn package manager](https://yarnpkg.com/lang/en/docs/install/ 'Install Yarn package manager')\n\n### Clone\n\n```shell\n$ git clone https://github.com/ganeshrvel/openmtp.git\n\n$ cd openmtp\n\n# install yarn\nnpm install -g yarn\n\n# install sentry cli\nnpm -g i @sentry/cli\n```\n\n```shell\n$ yarn\n```\n\n### Run\n\nA fresh clone might throw _undefined state_ error. Run the following commands once to fix the issue.\n\n```shell\n# For Mac and Linux\n$ UPGRADE_EXTENSIONS=1 npm run dev\n\n# For Windows\n$ set UPGRADE_EXTENSIONS=1 \u0026\u0026 npm run dev\n```\n\n```shell\n# Development\n$ yarn dev\n\n# Pre-production\n$ yarn start\n\n```\n\n### Debugging a Packaged app\n\n```shell\n# On terminal run\n$ \"/path/to/OpenMTP.app/Contents/MacOS/OpenMTP\" --remote-debugging-port=6363\n```\n\n- Open a Chromium browser\n- Input \"about://inpsect\" into the URL bar\n- Add a new connection `localhost:6363`\n- Inpect OpenMTP @ port `6363`\n\n### Publishing using CI/CD:\n\n- CodeMagic.io\n  - Create a new App (Choose others -\u003e Enter Electron)\n  - Environment variables:\n    - `APPLEID`: `\u003cApple developer account username\u003e`\n    - `APPLE_APP_SPECIFIC_PASSWORD`: `\u003cApp-Specific Password\u003e`\n      - Log into your [Apple Account](https://appleid.apple.com/account/manage 'Apple Account')\n      - Goto **Sign-In and Security \u003e App-Specific Passwords**\n      - Click on **Generate Password...**, enter a password label and click _Create_\n      - Copy the displayed _app-specific-password_\n    - `APPLE_TEAM_ID`: `\u003cApple Team ID\u003e`\n      - To get Team ID, go to your [Apple Developer Account](https://developer.apple.com/account#MembershipDetailsCard)\n      - Then click on \"Membership details\", and there you will find your Team ID.\n    - `SENTRY_URL`: `https://sentry.io/`\n    - `SENTRY_ORG`: `\u003cSentry Organization Name\u003e`\n    - `SENTRY_PROJECT`: `\u003cSentry Project\u003e`\n    - `SENTRY_TOKEN_ID`: `\u003cSentry Auth Token\u003e`\n      - Find it from here: [Auth Tokens](https://sentry.io/settings/account/api/auth-tokens)\n      - Scopes: `event:admin, event:read, member:read, org:read, project:read, project:releases, team:read`\n    - `GITHUB_TOKEN`: `Personal access token`\n      - There are two options available:\n        1. **Fine-grained personal access tokens**\n        - https://github.com/settings/tokens?type=beta\n        - Permissions: `Contents - (Read and Write access to code)`\n        2. **Personal access tokens (classic)**\n        - https://github.com/settings/tokens\n        - Scopes: `admin:gpg_key, admin:public_key, repo, user, workflow`\n    - `CSC_LINK`:\n      - Keychain -\u003e `Default Keychains` menu in the left -\u003e Login -\u003e My Certificates\n      - Search for `Developer ID Application` in the top search bar\n        - If there are no results for the `Developer ID Application`, for the organization, create one from here: [Apple Developer Certificates](https://developer.apple.com/account/resources/certificates/add)\n        - Follow these steps to get the Apple Developer certificated installed in the local machine [Obtaining-an-Apple-Developer-ID-Certificate-for-macOS-Provisioning](https://forums.ivanti.com/s/article/Obtaining-an-Apple-Developer-ID-Certificate-for-macOS-Provisioning?language=en_US\u0026ui-force-components-controllers-recordGlobalValueProvider.RecordGvp.getRecord=1)\n      - Search for `Developer ID Application` in the top search bar\n      - Expand `Developer ID Application: \u003cUser Name\u003e (XXXYYYZZZ)`\n      - See if the private key's name matches this: `Mac Developer ID Application: \u003cUser Name\u003e`\n        - Else rename the private key as (right click -\u003e get info) `Mac Developer ID Application: \u003cUser Name\u003e`\n        - Close the window\n      - Right Click on the private key -\u003e `Mac Developer ID Application: \u003cUser Name\u003e`\n      - Export `Mac Developer ID Application: \u003cUser Name\u003e`\n      - File name: `CERTIFICATE_PRIVATE_KEY.p12`\n      - Enter Password. This is the `CSC_KEY_PASSWORD`, note this down\n      - Run (this step doesnt work if you are using fig or ohmyzsh, use raw terminal):\n        - `base64 -i CERTIFICATE_PRIVATE_KEY.p12 -o CERTIFICATE_PRIVATE_KEY.txt`\n      - Copy the whole content of the file `CERTIFICATE_PRIVATE_KEY.txt`\n      - Paste the content as the value for the field `CSC_LINK`\n    - `CSC_KEY_PASSWORD` is the password from the above step\n    - `CODEMAGIC_AUTH_TOKEN_ID`: `\u003cCodeMagic API Token\u003e`\n      - Find it from here: [Sidebar -\u003e Teams -\u003e Personal Account -\u003e Integrations -\u003e Codemagic API](https://codemagic.io/teams)\n    - `CODEMAGIC_INTEL_X64_WORKFLOW_ID_PROD`: `\u003cProd codeMagic workflow id\u003e`\n      - Find the relevant workflow id from `codemagic.yaml`, (mostly `macos-intel-x64-build-prod`)\n    - `CODEMAGIC_INTEL_X64_WORKFLOW_ID_DEV`: `\u003cDev codeMagic workflow id\u003e`\n      - Find the relevant workflow id from `codemagic.yaml`, (mostly `macos-intel-x64-build-dev`)\n    - `PUBLISH_PROD_REPOSITORY`: `\u003cRepository to publish the production app\u003e`\n    - `PUBLISH_DEV_REPOSITORY`: `\u003cRepository to publish the dev app\u003e`\n    - `CODEMAGIC_PUBLISH_PROJECT_ID`: `\u003cCodemagic intel project id\u003e`\n    - `PUBLISH_EMAIL`: `Email address to receive the updates on publish`\n    - References:\n      - [https://www.electron.build/code-signing.html](https://www.electron.build/code-signing.html)\n      - [https://docs.codemagic.io/yaml-code-signing/signing-macos/#saving-the-api-key-to-environment-variables](https://docs.codemagic.io/yaml-code-signing/signing-macos/#saving-the-api-key-to-environment-variables)\n\n### Packaging (locally) and Publishing\n\nSetup the _code signing_ to build, package (locally) and publish the app.\n\n**App Notarization for macOS** (skip this section for non macOS builds)\n\n- Rename _sample.env_ file as _.env_\n- To update `APPLEID` and `APPLE_APP_SPECIFIC_PASSWORD` in _.env_ file\n- Log into your [Apple Account](https://appleid.apple.com/account/manage 'Apple Account')\n- Goto **Sign-In and Security \u003e App-Specific Passwords**\n- Click on **Generate Password...**, enter a password label and click _Create_\n- Copy the displayed _app-specific-password_\n- Run\n\n```shell\nsecurity add-generic-password -a \"\u003capple-developer-account-username\u003e\" -w \u003capp-specific-password\u003e -s \"APPLE_APP_SPECIFIC_PASSWORD\"\n```\n\n- Log into your [Apple App Store Connect Account](https://appstoreconnect.apple.com/agreements/# 'Apple App Store Connect Account') and accept the presented terms and conditions\n- The statuses shall turn _Active_\n\n**Sentry**\n\n- Auth Tokens Settings page: [https://sentry.io/settings/account/api/auth-tokens/](https://sentry.io/settings/account/api/auth-tokens/)\n\n```shell\nnpm install -g @sentry/wizard\nsentry-wizard --integration electron\n\n# Upload Debug Information\n# Everytime the electron.js version is upgraded run:\nnode sentry-symbols.js\n\nsentry-cli login\n```\n\n**Packaging**\nInstructions: [https://www.electron.build/code-signing](https://www.electron.build/code-signing 'https://www.electron.build/code-signing')\n\n```shell\n$ export GH_TOKEN=\"\u003cgithub token\u003e\"\n```\n\n```shell\n# For local platform\n$ yarn package\n\n# For multiple platforms\n$ yarn package-all\n```\n\n### Technical Features\n\n- Built using Electron v17 and React v18\n- Loadables, Dynamic Reducer Injection, Selectors for code splitting and performance optimization\n- Hot module reload (HMR) for instant feedback\n- Inbuilt error logging and profile/settings management\n- Industry standard state management\n- JSS, SASS/SCSS styling\n- Port assigned: **4642**\n\n### Configurations\n\n- _config/env/env.dev.js_ and _config/env/env.prod.js_ contain the PORT number of the app.\n- _config/dev-app-update.yml_ file holds the GitHub repo variables required by _electron-updater_.\n- _config/google-analytics-key.js_ file contains the Google Analytics Tracking ID.\n- _package.json_ **build.publish** object holds the values for publishing the packaged application.\n- _app/constants_ folder contains all the constants required by the app.\n\n### Debugging\n\n#### **Debugging Guide**\n\n[https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/400](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/400 'Debugging Guide')\n\n#### **Dispatching redux actions from the main process**\n\n[https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/118](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/118 'https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/118')\n\n[https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/108](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/108 'https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/108')\n\n#### **VM112:2 Uncaught TypeError: Cannot read property 'state' of undefined error**\n\n```shell\n# For Mac and Linux\n$ UPGRADE_EXTENSIONS=1 npm run dev\n\n# For Windows\n$ set UPGRADE_EXTENSIONS=1 \u0026\u0026 npm run dev\n```\n\n### Troubleshooting\n\n#### Your device is not recognized\n\n#### **node-mac-permissions** throws `Speech framework is not compatible with macOS \u003c 10.15`\n\n- On macOS \u003c= 10.14.x (mojave) the `yarn install` will throw a npm-rebuild error\n- To \"test\" or \"debug\" the app on macOS mojave:\n  - remove the `node-mac-permissions` dependency from `package.json`\n  - Add the ignorePlugin line to `default.plugins` in the file `webpack/config.base.js`\n    - `new webpack.IgnorePlugin({ resourceRegExp: /^(node-mac-permissions)$/u }),`\n  - WARNING: **DO NOT commit** these changes to the upstream!!\n- The `NODE_MAC_PERMISSIONS_MIN_OS` constant defines the minimum os version that is required to show the macos usage access permission popup\n- For distribution make sure to build the app on a machine which is at least 10.15 (Catalina)\n\n[https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on](https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on 'https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on')\n\n- Raise an issue if your device is undetected: https://github.com/ganeshrvel/openmtp/issues/new?template=contribute.md\n\n#### The app goes blank while trying to connect a Samsung device\n\n- Uninstall Samsung SmartSwitch, if installed: [https://farazfazli.medium.com/how-i-reverse-engineered-keis-and-sidesync-and-fixed-mtp-8949acbb1c29](https://farazfazli.medium.com/how-i-reverse-engineered-keis-and-sidesync-and-fixed-mtp-8949acbb1c29 'https://farazfazli.medium.com/how-i-reverse-engineered-keis-and-sidesync-and-fixed-mtp-8949acbb1c29'), [https://github.com/ganeshrvel/openmtp/issues/212](https://github.com/ganeshrvel/openmtp/issues/212 'https://github.com/ganeshrvel/openmtp/issues/212').\n\n#### **Notarizing Electron apps throws - “You must first sign the relevant contracts online. (1048)” error**\n\n[https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on](https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on 'https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on')\n\n### More repos\n\n- [npm: electron-root-path](https://github.com/ganeshrvel/npm-electron-root-path 'Get the root path of an Electron Application')\n- [Electron React Redux Advanced Boilerplate](https://github.com/ganeshrvel/electron-react-redux-advanced-boilerplate 'Electron React Redux advanced boilerplate')\n- [Tutorial Series by Ganesh Rathinavel](https://github.com/ganeshrvel/tutorial-series-ganesh-rathinavel 'Tutorial Series by Ganesh Rathinavel')\n\n### Credits\n\n- A special thanks to [CodeMagic](http://codemagic.io/ 'Codemagic - CI/CD') and [Kevin Suhajda](https://www.linkedin.com/in/kevinsuhajda 'Kevin Suhajda') for sponsoring their CI/CD VMs, thus making the app releases more streamlined and much easier now. 🎊🎊 Do checkout their [products](https://codemagic.io/integrations 'Codemagic - integrations') section for more.\n\n- Special shoutout to [@CodyJung](https://github.com/CodyJung 'CodyJung') for adding the [Fujifilm](https://github.com/ganeshrvel/go-mtpfs/pull/2) and [Garmin](https://github.com/ganeshrvel/go-mtpfs/pull/1) devices support. 🔥🔥\n\n- Thanks to Ms [Ayushi Bothra](https://www.linkedin.com/in/ayushi-bothra-3103/ 'Ayushi Bothra') for contributing to the documentation and pages.\n\n- App logo was contributed by [Shubhendu Mitra](https://www.linkedin.com/in/shubhendum/ 'Shubhendu Mitra - LinkedIn'). Make sure to check out more of his works on [Behance](https://www.behance.net/soponhara 'Shubhendu Mitra - Behance').\n\n- Thanks to [Vladimir Menshakov](https://github.com/whoozle 'Vladimir Menshakov') for [android-file-transfer-linux](https://github.com/whoozle/android-file-transfer-linux 'android-file-transfer-linux') (the MTP legacy Kernel)\n\n- Shoutout to [@yennsarah](https://github.com/yennsarah 'yennsarah'), [@h0tk3y](https://github.com/h0tk3y), [@riginoommen](https://github.com/riginoommen 'riginoommen'), [@AjithKumarvm](https://github.com/AjithKumarvm 'AjithKumarvm'), [@kiranshaji555](https://github.com/kiranshaji555), Dick Cowan, Kjell Dankert, Thorolf E.R. Weißhuhn and to all other community members who helped me test the application.\n\n- This app was built upon [https://github.com/ganeshrvel/electron-react-redux-advanced-boilerplate](https://github.com/ganeshrvel/electron-react-redux-advanced-boilerplate 'https://github.com/ganeshrvel/electron-react-redux-advanced-boilerplate') which is a heavily modified fork of [https://github.com/electron-react-boilerplate/electron-react-boilerplate](https://github.com/electron-react-boilerplate/electron-react-boilerplate 'https://github.com/electron-react-boilerplate/electron-react-boilerplate').\n\n- The icons used in the app were made by [flaticon](https://www.flaticon.com), [good-ware](https://www.flaticon.com/authors/good-ware) and [kiranshastry](https://www.flaticon.com/authors/kiranshastry) which is licensed under [CC 3.0 BY](https://creativecommons.org/licenses/by/3.0/ 'Creative Commons BY 3.0').\n\n- The \"no image found\" icon was made by [Phonlaphat Thongsriphong](https://www.iconfinder.com/phatpc 'Phonlaphat Thongsriphong').\n\n### Contribute\n\nIf you are interested in fixing issues and contributing directly to the code base, please see the [guidelines](https://github.com/ganeshrvel/openmtp/blob/master/CONTRIBUTING.md 'guidelines').\n\n### Support OpenMTP\n\nHelp me keep the app FREE and open for all.\n\n- Support us via PayPal: [paypal.me/ganeshrvel](https://paypal.me/ganeshrvel 'https://paypal.me/ganeshrvel')\n- Buy Me A Coffee (UPI, PayPal, Credit/Debit Cards, Internet Banking): [buymeacoffee.com/ganeshrvel](https://buymeacoffee.com/ganeshrvel 'https://buymeacoffee.com/ganeshrvel')\n\n### Contacts\n\nPlease feel free to contact me at ganeshrvel@outlook.com\n\n### License\n\nOpenMTP | Android File Transfer for macOS is released under [MIT License](https://github.com/ganeshrvel/openmtp/blob/master/LICENSE 'MIT License').\n\nCopyright © 2018-Present Ganesh Rathinavel\n","funding_links":["https://paypal.me/ganeshrvel","https://buymeacoffee.com/ganeshrvel","https://paypal.me/ganeshrvel'","https://buymeacoffee.com/ganeshrvel'"],"categories":["JavaScript","File Management Tools","android"],"sub_categories":["Android"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fganeshrvel%2Fopenmtp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fganeshrvel%2Fopenmtp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fganeshrvel%2Fopenmtp/lists"}