ChatMate-GPT
ChatMate is a chat application based on Open AI GPT-3. Developed using React Native, supports Android and iOS.
Download on the testflight
Download Android
TODO
Features
- Chat with GPT in the form of conversation
- Supports multiple language settings
- Supports multiple interface theme settings
- Built-in ChatGPT-Shortcut prompt library
- Support chat session customization settings
- Highly customized API settings
- Support streaming message replies
- Supports MarkDown rendering for reply messages
- Supports reading of message content
- Supports exporting CSV to message content
- Support iCloud synchronization of chat sessions
- Support setting of multi-API Server settings
- Support query API cost
- Support URL Scheme
- Support message session list sorting
- Support chat font size settings
- Support real-time message session token and Cost display
- Chat prompt words support multiple keyword settings
- Supports replies message block rendering and copying
- ...
? Sponsors

302.AI is an AI supermarket that brings together world's top brands, using various types of AI with on-demand payment, zero monthly fees, and zero thresholds. Register to get a 1PTC free test limit. Learn about 302.AI open source tools.
Screenshots
Development
# clone repos
$ git clone https://github.com/funnyzak/ChatMate-GPT.git && cd ChatMate-GPT
# deps install
$ yarn
# 依赖包额外补丁
yarn postinstall
# ios pod install
yarn pod
# start react-native-debugger(only mac)
yarn debug
# iOS simulator start
yarn ios
# Android simulator start
yarn android
# plop generate template
yarn p
# print rn info
npx react-native info
# upgrade rn version
npx react-native upgrade
# iOS debug info start
npx react-native run-ios --verbose
# iOS release build
npx react-native run-ios --configuration Release
# iOS debug use special device
react-native run-ios --simulator= " iPhone 14 Pro "
# Android debug info start
npx react-native run-android --verbose
# Testing the release build
npx react-native run-android --variant=release
# build android release apk
cd android
# aab file
./gradlew bundleRelease
# apk file
./gradlew assembleRelease
npx react-native run-android --variant release
Structure
├── src # 源码目录
│ ├── App.tsx # app根组件
│ ├── actions # actions
│ ├── assets # 静态资源
│ ├── components # 组件
│ ├── config # 配置文件
│ ├── helper # 应用服务类
│ ├── hooks # 钩子
│ ├── i18n # 多语言支持
│ ├── navigation # 路由导航
│ ├── reducers # reducers
│ ├── store # store
│ ├── theme # 主题
│ ├── types # 类型定义
│ ├── utils # 工具类
│ └── api # API库
├── .editorconfig # 编辑器配置
├── .eslintrc.js # eslint的配置文件
├── .gitignore # 配置git提交需要忽略的文件
├── .husky # git钩子配置
├── .prettierrc.js # 代码格式化规则
├── .watchmanconfig # Watchman的配置文件,用于监控bug文件和文件变化,并且可以出发指定的操作
├── __tests__ # 测试
├── android # Android文件所在目录,包含AndroidStudio项目环境文件;
├── app.json #
├── babel.config.js # Babel的配置文件
├── global.d.ts # ts全局声明文件
├── index.js # 程序入口文件
├── ios # iOS文件所在目录,包含XCode项目环境;
├── metro.config.js
├── package.json # 项目基本信息(比如名称、版本、许可证等元数据)以及依赖信息(npm install安装的模块)等
├── tsconfig.json # typescript编译配置文件
└── yarn.lock # 依赖版本锁定文件
Contribution
If you have any ideas or comments, please feel free to mention Issue or PR.
Reference
- ChatGPT-Shortcut is a chatgpt prompt word library.
- environment setup to setup react-native development environment.
- running on device to run app on device.
- debugging to debug app.
- react native typescript to use typescript in react-native.
- react native cn to learn react-native.
- react-devtools to debug react component.
- fetch to use fetch in react-native.
- lodash is a modern JavaScript utility library delivering modularity, performance & extras.
- redux is a predictable state container for JavaScript apps.
- react-native-render-html is a performant, comprehensive, extended HTML/JS renderer for React Native.
- react-navigation is an extended yet easy-to-use navigation solution written in JavaScript.
- react-native-webview is a React Native wrapper for Apple's WKWebView or Google's Android WebView.
- async-storage is an asynchronous, persistent, key-value storage system for React Native.
- react-native-fast-image is a performant React Native image component.
- react-native-reanimated is a React Native library providing fluid, gesture and performance native animations.
- react-native-localize is a module to handle i18n/localization of your React Native app.
- react-native-device-info is a device information for React Native iOS and Android.
- react-native-skeleton-placeholder is a simple yet fully customized component made to achieve loading animation in a Skeleton-style.
- react-native-actions-sheet is a cross-platform React Native component that uses the native Apple and Android action sheet to create a universal actionsheet.
- react-native-numeric-input is a numeric input component for react-native.
- react-native-vector-icons is a React Native module supports using custom icon sets.
- qs is a querystring parser with nesting support.
- react-native-switch is a switch component for React Native.
- react-native-haptic-feedback is a React Native module for providing haptic feedback.
- gpt3-tokenizer is a tokenizer for OpenAI's GPT-3.
- react-native-uuid is a native UUID generator for React Native.
- react-native-animatable is a standard-compliant markdown parser.
- react-native-clipboard is a React Native Clipboard API for iOS and Android.
- react-native-gifted-chat is a React Native module for providing chat UI.
- react-native-restart is a React Native module for restarting the app programmatically.
- react-native-floating-label-input is a React Native module for providing floating label input.
- react-native-url-polyfill is a React Native module for providing URL polyfill.
- react-native-rate is a React Native module for providing rate app.
- text-encoding is a polyfill for the Encoding Living Standard's API.
- react-native-document-picker is a React Native module for providing document picker.
- react-native-cloud-store is a React Native module for providing cloud store.
- react-native-tts is a React Native module for providing text to speech.
- react-native-fs is a React Native module for providing file system.
- react-native-ios-context-menu is a React Native module for providing iOS context menu.
License
MIT License © 2023 funnyzak