?为什么
Katya ® ? 旨在建立在隐私、品牌和用户体验的基础上,以期将用户从专有聊天平台吸引到 Katya ® ? AI ? REChain ? Blockchain Node Network 协议。
Katya ® ? AI ? REChain ? Blockchain Node Network 结合 Matrix Protocol,有潜力成为一种标准化的点对点聊天协议,事实上它在某种程度上已经如此了,它允许人们进行交流并控制他们的对话数据。电子邮件长期以来一直以这种方式标准化。例如,使用 Outlook 的人仍然可以向使用 Gmail 的人发送电子邮件。大多数流行的专有聊天平台不遵守联合或去中心化协议,因此对用户数据拥有过多的控制权。
如果 Katya ® ? AI ? REChain ? Blockchain Node Network 的目标是获得采用,那么这种范式转变就需要网络效应。Katya ® ? 押注吸引新用户的最佳方式是通过强大的品牌和用户体验。我希望贡献和维护 Katya ® ? 能帮助启动这个过程,并帮助有需要的人。
Katya ® ? 将始终是一个非营利性、社区驱动的应用程序。
✨ 特点
- 无分析。
- 无专有第三方服务。
- iOS 将支持 APNS,但会向用户明确说明。
- 所有数据在静态时都使用 AES-256 加密。
- 使用 Olm/Megolm 进行直接聊天的 E2EE。
- 所有在线状态指示均为仅选择加入(正在输入指示、已读回执等)。
- 自定义应用中的主题和颜色。
?目标
- 桌面客户端与移动端保持一致。
- 屏幕锁定和 PIN 码保护的缓存功能。
- 通过客户端上本地运行的服务器进行 P2P 消息传递。
- 允许用户数据在不同 homeserver 之间传输,或从本地传输到远程服务器。
- 使用 ncurses 和此处相同的 redux store 的 CLI 客户端(通用)。
?️ 构建
您可能会注意到 Katya ® ? 的外观不太像 dart(例如,没有 _private 变量声明,或使用 redux 而不是 provider),这是为了从其他语言或平台降低学习曲线。
工作站
- Katya ® ? 开发的独立工作站设置
- 安装 Flutter(所有平台的稳定通道);
- 安装必要的第三方 SDK 和工具
- iOS -> XCode;
- Android -> Android Studio;
- 通过 Android Studio 平台工具从 CLI 安装 CMake(用于 OLM/megOLM);
- 安装 CMake 所需的库
- Mac OS ->
brew install ninja; - Linux ->
sudo apt install ninja-build; - Windows ->
choco install ninja;
- Mac OS ->
- 克隆仓库并初始化子模块
git submodule update --init --recursive;
- 运行以下预构建命令
flutter pub get;flutter pub run build_runner build;
iOS/Android
- 安装 Android Studio;
- 通过 Android Studio GUI 安装最新的命令行工具;
- 确认 `sdkmanager` 在您的 PATH 中;
- 拉取最新的 CMake、NDK 和其他依赖项;
- 拉取所需的依赖项
flutter pub get;
- 为模型生成 JSON 转换
flutter pub run build_runner build --delete-conflicting-outputs;
- 为模型生成 JSON 转换
flutter run.
Mac OS
flutter config --enable-macos-desktop;brew install libolm安装本地 OLM 依赖项;- 将 dylib(不是软链接)复制到 macos 文件夹
cp /opt/homebrew/Cellar/libolm/libolm.3.x.x.dylib ./macos/libolm.3.x.x.dylib;
- 按照说明将 brew 生成的 dylib 链接到 Katya ® ? 项目
flutter build macos构建 .app 包。
Linux
flutter config --enable-linux-desktop;apt install libolm3 libsqlite3-dev或pacman -S libolm或 libolm 的平台等效包;flutter build linux && flutter build bundle;- 导航到 release 目录
${Katya ® ?_ROOT}/build/linux/release/bundle; - 通过运行
${Katya ® ?_ROOT}/build/linux/release/bundle/katya来确认构建是否正常。
Windows
flutter doctor应该会显示任何缺失项的警告;flutter config --enable-windows-desktop;- 编译 OLM 并将 `olm.dll` 移动到可执行目录中的 `libolm.dll`;
- 从网站 获取 SQLite 的预编译二进制文件 dll。
?架构
存储
- 视图(Flutter + MVVM);
- 状态管理(redux);
- 缓存(redux_persist + json_serializable + sembast + codec cipher);
- 存储(drift + sqflite + sqlcipher)。
集成
- 通知
- 利用 Android 的 android_alarm_manager 在后台线程运行同步请求,并通过 flutter_local_notifications 显示通知;
- 除 iOS 的 APN 外,绝不使用第三方通知提供商。
- Equatable
- 此库允许在 Flutter 中对对象进行比较,以判断它们是否已更改。
- JsonSerializable
- 不幸的是,Dart/Flutter 没有直接集成 JSON 来处理您自己的对象。目前需要代码生成,并将把 Katya ® ? 的自定义对象转换为相应 JSON 字段的“Map”。
- Freezed(未来)
- 由于 Katya ® ? 中的每个对象都是不可变的,freezed 将帮助创建执行与当前所有“copyWith”辅助函数相同操作的对象,并改进了允许“null”值覆盖非“null”值的特性。
参考
- Redux 教程
- Redux 示例
- Matrix.org 的端到端加密实现指南
- iOS 文件管理 Flutter
- 带文本输入的滚动
- 多行文本框
- 键盘关闭
- 更改过渡样式
- 动画
- 序列化 Uint8List 字节
- 添加边框而不必按 Ctrl-P
decoration: BoxDecoration(
border: Border.all(width: 1, color: Colors.white),
),
- 了解 OLM 选择世界“pickle”进行序列化的原因,它来自 Python。
需要帮助? ? 发送电子邮件给我们! ? Dmitry Sorokin 出品。保留所有权利。由 Katya AI 提供支持。? 版权所有 © 2021-2023 Katya Systems, LLC Katya ® 是注册商标 由 REChain 赞助。? [email protected] [email protected] 请留出 1 到 5 个工作日进行电子邮件回复!?
