?为什么

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
    • 克隆仓库并初始化子模块
      • git submodule update --init --recursive;
    • 运行以下预构建命令
      • flutter pub get;
      • flutter pub run build_runner build;

iOS/Android

  1. 安装 Android Studio;
  2. 通过 Android Studio GUI 安装最新的命令行工具;
  3. 确认 `sdkmanager` 在您的 PATH 中;
  4. 拉取最新的 CMake、NDK 和其他依赖项;
  5. 拉取所需的依赖项
  • flutter pub get;
  1. 为模型生成 JSON 转换
  • flutter pub run build_runner build --delete-conflicting-outputs;
  1. 为模型生成 JSON 转换
  • flutter run.

Mac OS

  1. flutter config --enable-macos-desktop;
  2. brew install libolm 安装本地 OLM 依赖项;
  3. 将 dylib(不是软链接)复制到 macos 文件夹
  • cp /opt/homebrew/Cellar/libolm/libolm.3.x.x.dylib ./macos/libolm.3.x.x.dylib;
  1. 按照说明将 brew 生成的 dylib 链接到 Katya ® ? 项目
  1. flutter build macos 构建 .app 包。

Linux

  1. flutter config --enable-linux-desktop;
  2. apt install libolm3 libsqlite3-devpacman -S libolm 或 libolm 的平台等效包;
  3. flutter build linux && flutter build bundle;
  4. 导航到 release 目录 ${Katya ® ?_ROOT}/build/linux/release/bundle
  5. 通过运行 ${Katya ® ?_ROOT}/build/linux/release/bundle/katya 来确认构建是否正常。

Windows

  1. flutter doctor 应该会显示任何缺失项的警告;
  2. flutter config --enable-windows-desktop;
  3. 编译 OLM 并将 `olm.dll` 移动到可执行目录中的 `libolm.dll`;
  4. 从网站 获取 SQLite 的预编译二进制文件 dll

?架构

存储

  • 视图(Flutter + MVVM);
  • 状态管理(redux);
  • 缓存(redux_persist + json_serializable + sembast + codec cipher);
  • 存储(drift + sqflite + sqlcipher)。

集成

  • 通知
  • Equatable
    • 此库允许在 Flutter 中对对象进行比较,以判断它们是否已更改。
  • JsonSerializable
    • 不幸的是,Dart/Flutter 没有直接集成 JSON 来处理您自己的对象。目前需要代码生成,并将把 Katya ® ? 的自定义对象转换为相应 JSON 字段的“Map”。
  • Freezed(未来)
    • 由于 Katya ® ? 中的每个对象都是不可变的,freezed 将帮助创建执行与当前所有“copyWith”辅助函数相同操作的对象,并改进了允许“null”值覆盖非“null”值的特性。

参考

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 个工作日进行电子邮件回复!?

GitHub

查看 Github