# community-project-app-reactnative **Repository Path**: EightDoor/community-project-app-reactnative ## Basic Information - **Project Name**: community-project-app-reactnative - **Description**: 社区app react-native - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-07 - **Last Updated**: 2026-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 如意乡 · React Native Expo 社区 App 基于 Expo 模板演进的社区 App「如意乡」,目标平台 iOS + Android。内置中英文、认证流程、邻里圈 / 消息 / 生活圈 / 我的四 Tab、EAS 构建与 OTA 更新、单元测试。 ## 技术栈 - Expo SDK 57 / React Native 0.86 / TypeScript strict - Expo Router 文件路由(`src/app` 仅放路由) - axios 统一网络层,含业务信封解包与 401 会话过期处理 - zustand 管理认证与设置状态 - i18next + react-i18next 中英文,key 完整性由类型约束保证 - expo-secure-store 持久化 token、用户与设置 - expo-localization 首启动根据系统语言决定默认语言 - vitest 单元测试;ESLint + Expo 推荐配置 ## 快速开始 ```bash npm install npx expo start # 本地开发(默认连接 Expo Go) npx tsc --noEmit # 类型检查 npm run lint # 静态检查 npm test # 单元测试 ``` ### 运行平台 - **Expo Go**:`npx expo start --go`。Android 下远程推送(Expo Push)在 SDK 53+ 已被剥离,应用可正常启动但不会拿到 token;`src/utils/push.ts` 会按 `Constants.expoGoConfig` 自动跳过。 - **本地 development build**(推荐用于真机/模拟器推送验证): ```bash npm run run:android # 首次会自动 prebuild 并安装到模拟器 npx expo start # 之后只改 JS 时直接启动 ``` - **EAS 云构建**:`eas login && npm run eas:build:dev -- --platform android`,完成后用 Expo Orbit 或 `adb install` 装载。 ## 派生新项目 本仓库已经链接到 `@eightdoor666/react-native-expo-template`。派生新项目时: 1. 修改 `app.json` 中的 `owner`、`name`、`slug`、`scheme`、`extra.eas.projectId` 2. 运行 `eas init --account <你的账号>` 重新链接 EAS 项目 3. 设置 `EXPO_PUBLIC_API_BASE_URL` 环境变量(指向你的后端) 4. 替换 `app.json` 中的图标、启动屏、Bundle Identifier 完整流程参考 [docs/eas.md](docs/eas.md) 与 [docs/architecture.md](docs/architecture.md)。 ## 目录结构 ```text src/ ├─ app/ # Expo Router 路由(仅路由文件) │ ├─ (auth)/ # 登录(密码 / 短信 / 微信占位)、注册、找回密码、重置密码 │ ├─ (tabs)/ # 邻里圈、消息、生活圈、我的 │ └─ _layout.tsx # 根布局(ErrorBoundary、i18n、settings、auth 恢复) ├─ components/ # 通用组件 ├─ api/ # axios 实例、错误类型、模块接口 ├─ stores/ # zustand:auth、settings ├─ i18n/ # 中英文字典、类型约束、初始化 ├─ hooks/ utils/ constants/ └─ __tests__/ # 单元测试 docs/ # 架构与运维文档 ``` ## 内置功能 - **认证流程**:账号密码 / 短信验证码登录、手机号注册(`POST /api/register`)、微信 App 登录(原生模块 Phase 0 占位) - **会话管理**:单 token(expo-secure-store),401 自动清会话并跳登录 - **设置**:语言(zh / en)、主题(system / light / dark)、设置覆盖系统默认 - **tabs**:邻里圈(图文 / 视频 / 语音动态)、消息(私聊 / 好友申请 / 公告)、生活圈(本地地图)、我的 - **错误兜底**:`ErrorBoundary` 包裹根布局,渲染异常可重试 - **EAS**:development / preview / production 三档构建 + 同名 channel,OTA 更新(`runtimeVersion: appVersion`) ## 文档 - [docs/architecture.md](docs/architecture.md) — 技术栈、目录、状态机、网络层、约定、限制 - [docs/eas.md](docs/eas.md) — EAS 构建配置、OTA 发布、版本管理 - [AGENTS.md](AGENTS.md) — Agent 指引(指向当前 SDK 的官方文档) ## 后端契约 对接社区小程序后端(单 token 账号体系),端点清单见 [docs/superpowers/contracts/mini-program-api.md](docs/superpowers/contracts/mini-program-api.md): - 认证:`/api/login`、`/api/sms/*`、`/api/wx/app/login`、`/api/register`、`/api/user/info` - 动态:`/api/community/post/*`(图文 / 视频 / 语音上传、评论、点赞收藏) - 消息:私聊会话、好友申请、公告通知 - 地图与 AI:`/api/community/map/locations`(联调占位)、`/api/community/ai/ticket` ## 许可 见 [LICENSE](LICENSE)。