ChatMate-GPT
ChatMate 是一个基于 Open AI GPT-3 的聊天应用。使用 React Native 开发,支持 Android 和 iOS。
TODO
- Android 适配优化
- 新版本提示
- 置顶会话
Features
- 以对话的形式跟 GPT 聊天
- 支持多种语言设置
- 支持多种界面主题设置
- 内置 ChatGPT-Shortcut 提示词库
- 支持聊天会话自定义设置
- 高度自定义的 API 设置
- 支持流式消息回复
- 支持对回复消息 MarkDown 渲染
- 支持对消息内容进行内容朗读
- 支持对消息内容进行导出 CSV
- 支持对聊天会话进行 iCloud 同步
- 支持设置多 API Server 设置
- 支持查询 API 花费
- 支持 URL Scheme
- 支持消息会话列表排序
- 支持聊天字体大小设置
- 支持实时消息会话 Token、Cost 显示
- 聊天提示词支持多个关键词设置
- 支持回复消息代码块渲染、复制
- ...
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
如果你有任何的想法或者意见,欢迎提 Issue 或者 PR。
Reference
- ChatGPT-Shortcut is a chatgpt prompt word library.
- enviroment 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, extensible HTML/JS renderer for React Native.
- react-navigation is an extensible 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 customizable 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