- 新增挑战列表页 `app/(tabs)/challenges.tsx`,展示热门挑战卡片 - 新增挑战详情页 `app/challenges/[id].tsx`,支持排行榜、分享与参与 - 在标签栏中新增“挑战”入口,替换原有“发现”与“AI”页 - 调整标签栏间距与圆角,适配新布局 - 新增挑战相关路由常量 `TAB_CHALLENGES` - 迁移 `coach.tsx` 与 `explore.tsx` 至根目录,保持结构清晰
2.6 KiB
2.6 KiB
Repository Guidelines
Project Structure & Module Organization
app/holds Expo Router screens; tab flows live inapp/(tabs)/, while modal or detail pages sit alongside feature folders.- Shared UI and domain logic belong in
components/,services/, andutils/; Redux state is organized per feature understore/. - Native iOS code (HealthKit bridge, widgets, quick actions) resides in
ios/; design and process docs are tracked indocs/. - Assets, fonts, and icons live in
assets/; keep new media optimized and referenced via@/assetsaliases.
Build, Test, and Development Commands
npm run ios/npm run ios-device– builds and runs the prebuilt iOS app in Simulator or on a connected device.npm run reset-project– clears caches and regenerates native artifacts; use after dependency or native module changes.
Coding Style & Naming Conventions
- TypeScript with React hooks is standard; use functional components and keep state in Redux slices if shared.
- Follow ESLint (
eslint-config-expo) and default Prettier formatting (2 spaces, trailing commas, single quotes). - Name components in
PascalCase, hooks/utilities incamelCase, and screen files with kebab-case (e.g.,ai-posture-assessment.tsx). - Co-locate feature assets, styles, and tests to simplify maintenance.
Testing Guidelines
- Automated tests are minimal; add Jest + React Native Testing Library specs under
__tests__/or alongside modules when adding complex logic. - For health and native bridges, include reproduction steps and Simulator logs in PR descriptions.
- Always run linting and verify critical flows on an iOS simulator (HealthKit requires a real device for full validation).
Commit & Pull Request Guidelines
- Prefer Conventional Commit prefixes (
feat,fix,chore, etc.) with optional scope:feat(water): 支持自定义提醒. Keep summaries under 80 characters. - Group related changes; avoid bundling unrelated features and formatting in one commit.
- PRs should describe the problem, solution, test evidence (commands run, screenshots, or screen recordings), and note any iOS-specific setup.
- Link to Linear/Jira issues where relevant and request review from feature owners or the iOS platform team.
iOS Integration Notes
- HealthKit, widgets, and quick actions depend on native modules: update
ios/and re-runnpm run iosafter modifying Swift or entitlement files. - Keep App Group IDs, bundle identifiers, and signing assets consistent with
app.jsonandios/digitalpilates.xcodeproj; coordinate credential changes with release engineering.