# MsgStack **Repository Path**: Weixiaojun666/msgstack ## Basic Information - **Project Name**: MsgStack - **Description**: 鸿蒙原生APP 信栈 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-17 - **Last Updated**: 2026-09-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 信栈 (MsgStack) 一个运行在 **HarmonyOS NEXT** 上的短信 / 来电聚合查看应用。它通过一个自托管的后端服务 (`msgstackapi`,见下文)把分散在多个手机号、被转发过来的短信与来电提醒,集中到一个 App 里统一 查看、管理与提醒。 - 包名:`cn.zzwei.msgstack` - 开发语言:ArkTS(DevEco Studio / hvigor 构建) - 许可证:**GPL-3.0**(强 copyleft,具有传染性) --- ## 功能特性 - **两种推送模式** - **直连模式(DIRECT)**:仅在本机存储与展示,不依赖任何服务器。 - **代理推送模式(SERVER)**:设备注册到自托管后端,由后端统一拉取 / 推送消息,支持多端同步。 - **品牌头像**:短信 / 来电按号码识别运营商、银行、保险等机构,用品牌色圆形 + 简称展示; 若后端下发了开源图标,则优先渲染图标(见「品牌头像与开源图标」)。 - **服务器上下线通知**:代理模式下,后端健康检查异常时以系统消息形式在列表内提示,便于排查。 - **本地优先**:所有消息默认落本地数据库,离线可用;代理模式仅作为增量同步通道。 ## 系统架构 ``` 手机 / 设备 自托管后端 (msgstackapi) +-------------+ +---------------------------+ | 信栈 App | HTTPS + X-Api-Key | msgstack-api (Go) | | (ArkTS) | <-------------> | /register /bind /message | | | SSE /stream | /push /brands /static | +-------------+ +---------------------------+ | | 本地数据库 (RdbStore) PostgreSQL / Redis / RabbitMQ ``` - **本仓库(msgstack)**:HarmonyOS NEXT 客户端,包含 UI、本地存储、推送调度、品牌头像渲染。 - **后端仓库(msgstackapi)**:`https://gitee.com/Weixiaojun666/msgstackapi` (部署于 `https://api.zzwei.cn/msgstack`)。负责设备注册、消息收发、SSE 推送与品牌图标下发。 > 两个仓库均为 GPL-3.0,属于同一开源项目的「客户端 + 服务端」。 ## 构建与运行 前置条件:DevEco Studio(含 HarmonyOS SDK)、hvigor。 ```bash # 在本仓库根目录 export DEVECO_SDK_HOME="C:/Program Files/Huawei/DevEco Studio/sdk" bash build_hap.sh ``` 构建产物为未签名的 HAP,安装到真机或模拟器后即可运行。 (本仓库 CI 说明:部分环境因安全策略无法在沙箱内完成 hvigor 构建,请在本地 DevEco Studio 验证。) ## 品牌头像与开源图标 头像 logo 的策略是 **「后端下发 + 本地缓存」**,App 仓库本身**不打包任何商标图样**: 1. 后端 `/brands` 接口返回品牌登记表(键 → 名称 / 简称 / 颜色 / 图标文件名)。 2. 图标文件由后端静态目录 `/static/brands/` 对外提供,App 拉取后缓存到沙箱 `/brands/.svg`。 3. 取不到图标时,App 回退到「品牌色圆形 + 简称」的自绘头像。 图标来源为 **simple-icons(CC0-1.0,公共领域)**,可在后端仓库通过脚本按需收集: ```bash # 在 msgstackapi 仓库内 STATIC_DIR=/var/www/msgstack/static ./tools/collect-brands.sh ``` 该脚本从 simple-icons 抓取与品牌登记表对应的 SVG,写入 `static/brands/` 并回填 `brands.json` 的 `logo` 字段。simple-icons 采用 CC0,与本项目 GPL-3.0 完全兼容且允许商用。 > **商标声明**:simple-icons 的 CC0 许可仅覆盖其版权,不授予任何商标权。各品牌 LOGO 仍归 > 其各自所有者所有,App 中以「指示性使用(nominative use)」方式展示,不构成商标授权。 ## 许可证 本项目以 **GNU General Public License v3.0(GPL-3.0)** 发布。任何分发(含修改后分发)须以相同 许可证开源——即具有「传染性」。详见仓库根目录 [`LICENSE`](./LICENSE)。 ``` Copyright (C) 2026 msgstack contributors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ``` ## 相关仓库 - 后端服务:`msgstackapi` —— https://gitee.com/Weixiaojun666/msgstackapi