u
This commit is contained in:
1 parent
056cd4970f
commit
513a991b57
3 files changed
+1328
-2279
No files matched your search
+38
-38
@@ -32,7 +32,7 @@ Allapp main shell
|
||||
│ ├── Add record
|
||||
│ └── Analysis
|
||||
└── Clothes matching
|
||||
└── Planned/listed, route not implemented yet
|
||||
└── Configured in pages.ts, route not implemented yet
|
||||
```
|
||||
|
||||
Important naming note:
|
||||
@@ -45,8 +45,8 @@ Important naming note:
|
||||
|
||||
Tech stack:
|
||||
|
||||
- Go
|
||||
- Fiber v3
|
||||
- Go 1.25
|
||||
- Fiber v3.1
|
||||
- pgx PostgreSQL client
|
||||
- JWT
|
||||
- Viper config
|
||||
@@ -123,8 +123,8 @@ Validation notes:
|
||||
|
||||
Tech stack:
|
||||
|
||||
- Expo 55
|
||||
- React Native 0.83
|
||||
- Expo 56
|
||||
- React Native 0.85
|
||||
- React 19
|
||||
- Expo Router
|
||||
- Zustand
|
||||
@@ -189,7 +189,7 @@ Startup flow:
|
||||
├── no local token -> /auth/login
|
||||
├── token exists but user check fails -> /auth/login
|
||||
├── token exists but no family -> /family/entry
|
||||
└── token exists and family exists -> /(tabs)/home
|
||||
└── token exists and family exists -> /home
|
||||
```
|
||||
|
||||
## Frontend Route Structure
|
||||
@@ -201,23 +201,25 @@ src/app
|
||||
├── _layout.tsx
|
||||
├── index.tsx
|
||||
├── +not-found.tsx
|
||||
├── auth
|
||||
│ └── login.tsx
|
||||
├── (tabs)
|
||||
│ ├── _layout.tsx
|
||||
│ ├── home/index.tsx
|
||||
│ ├── chat/index.tsx
|
||||
│ ├── my/index.tsx
|
||||
│ └── star/index.tsx
|
||||
├── tools
|
||||
│ └── index.tsx
|
||||
├── family
|
||||
│ ├── entry.tsx
|
||||
│ ├── settings.tsx
|
||||
│ ├── user.tsx
|
||||
│ └── member/[id].tsx
|
||||
└── finance
|
||||
├── (tabs)
|
||||
├── (main)/
|
||||
│ ├── (tabs)/
|
||||
│ │ ├── _layout.tsx
|
||||
│ │ ├── home/index.tsx
|
||||
│ │ ├── chat/index.tsx
|
||||
│ │ └── my/index.tsx
|
||||
│ ├── activities/
|
||||
│ │ └── index.tsx
|
||||
│ ├── auth/
|
||||
│ │ └── login.tsx
|
||||
│ ├── family/
|
||||
│ │ ├── entry.tsx
|
||||
│ │ ├── settings.tsx
|
||||
│ │ ├── user.tsx
|
||||
│ │ └── member/[id].tsx
|
||||
│ └── tools/
|
||||
│ └── index.tsx
|
||||
└── finance/
|
||||
├── (tabs)/
|
||||
│ ├── _layout.tsx
|
||||
│ ├── home/index.tsx
|
||||
│ └── analysis/index.tsx
|
||||
@@ -233,7 +235,7 @@ Effective routes:
|
||||
/home main home
|
||||
/chat chat/image picker demo
|
||||
/my profile tab
|
||||
/star placeholder page, not currently in tab config
|
||||
/activities family activity feed
|
||||
/tools app/module list
|
||||
/family/entry create or join family
|
||||
/family/settings family settings
|
||||
@@ -245,7 +247,7 @@ Effective routes:
|
||||
/finance/sub test page
|
||||
```
|
||||
|
||||
Main tab config in `src/app/(tabs)/_layout.tsx`:
|
||||
Main tab config in `src/app/(main)/(tabs)/_layout.tsx`:
|
||||
|
||||
```text
|
||||
/home 首页
|
||||
@@ -266,15 +268,14 @@ Finance module tab config in `src/app/finance/(tabs)/_layout.tsx`:
|
||||
Layout behavior:
|
||||
|
||||
- Root `_layout.tsx` renders a global Stack with no headers.
|
||||
- `(tabs)/_layout.tsx` uses `AppLayout`, which renders `Slot`, top `Navbar`, and bottom `Tabbar`.
|
||||
- `(main)/(tabs)/_layout.tsx` uses `AppLayout`, which renders `Slot`, top `Navbar`, and bottom `Tabbar`.
|
||||
- `finance/(tabs)/_layout.tsx` uses `ModuleLayout`, a module-level shell with its own top bar and tabbar.
|
||||
- `ModuleLayout` close action returns to `/(tabs)/home`.
|
||||
- `ModuleLayout` close action returns to `/(main)/(tabs)/home`.
|
||||
|
||||
Current route mismatches:
|
||||
|
||||
- Main tab points to `/space`, but no `/space` file exists.
|
||||
- `src/app/(tabs)/star/index.tsx` exists but is not in the tab config.
|
||||
- `/tools` is outside `(tabs)`, so it is not wrapped by `AppLayout`; decide whether this is intentional.
|
||||
- `/tools` is inside `(main)` group, wrapped by root layout only.
|
||||
- `/finance/add` is outside `finance/(tabs)`, but the finance tabbar points to it. This can be intentional for a modal/subpage style add screen.
|
||||
|
||||
## Feature Status
|
||||
@@ -292,12 +293,14 @@ Implemented or mostly implemented:
|
||||
- Avatar upload to S3/RustFS
|
||||
- QQ/WeChat account binding
|
||||
- App/module list page
|
||||
- Family activity feed (`/activities`)
|
||||
|
||||
Partially implemented:
|
||||
|
||||
- Finance module shell
|
||||
- Finance category loading
|
||||
- Finance add-record form UI
|
||||
- Finance add-record form UI (save not implemented)
|
||||
- Finance record list on `/finance/home` (placeholder)
|
||||
- Finance analysis placeholder/demo page
|
||||
|
||||
Not yet complete:
|
||||
@@ -305,7 +308,7 @@ Not yet complete:
|
||||
- Saving a finance record from `/finance/add`
|
||||
- Finance record list on `/finance/home`
|
||||
- Finance analysis real data
|
||||
- Clothes matching app route
|
||||
- Clothes matching app route (`/clothes/home` configured but route not implemented)
|
||||
- `/space` main-tab page
|
||||
|
||||
## Database: allapp
|
||||
@@ -412,16 +415,12 @@ Those are not the right runtime for WSL. Prefer WSL `fnm`.
|
||||
|
||||
Frontend:
|
||||
|
||||
- `pnpm exec tsc --noEmit` currently fails.
|
||||
- `tsconfig.json` includes `**/*.ts` and `**/*.tsx`, pulling in `example`.
|
||||
- `tsconfig.json` has a suspicious extra include entry: `src/app/auth/login_2`.
|
||||
- Generated iconfont components have `react-native-svg` prop type incompatibilities.
|
||||
- `src/app/finance/(tabs)/analysis/index.tsx` has `Surface variant="2"` type mismatch.
|
||||
- `pnpm exec tsc --noEmit` may have type errors.
|
||||
- Generated iconfont components may have `react-native-svg` prop type incompatibilities.
|
||||
|
||||
Backend:
|
||||
|
||||
- `go` was not available in the earlier command environment, so `go test ./...` could not be rerun there.
|
||||
- Prior context noted a possible unique ID package compile issue around `fmt.Println(message)` vs `fmt.Println(message...)`.
|
||||
- Go 1.25 with Fiber v3.1 should compile without issues.
|
||||
|
||||
## Important Current Risks
|
||||
|
||||
@@ -430,6 +429,7 @@ Backend:
|
||||
- Frontend business logic often trusts local/user-provided family and user IDs.
|
||||
- Main tab route `/space` is missing.
|
||||
- Some pages are placeholders or demos.
|
||||
- Database credentials are exposed in `db.local.yml` (should not be committed to version control).
|
||||
|
||||
## Development Conventions
|
||||
|
||||
|
||||
@@ -14,54 +14,51 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@alova/adapter-axios": "^2.0.18",
|
||||
"@expo/vector-icons": "^15.1.1",
|
||||
"@gorhom/bottom-sheet": "^5.2.9",
|
||||
"@legendapp/list": "^2.0.19",
|
||||
"@react-native-async-storage/async-storage": "^2.2.0",
|
||||
"@react-navigation/bottom-tabs": "^7.15.5",
|
||||
"@react-navigation/elements": "^2.9.10",
|
||||
"@react-navigation/native": "^7.1.33",
|
||||
"@yz1311/react-native-wheel-picker": "^0.4.5",
|
||||
"alova": "^3.5.1",
|
||||
"axios": "^1.15.0",
|
||||
"dayjs": "^1.11.20",
|
||||
"expo": "~55.0.15",
|
||||
"expo-blur": "~55.0.14",
|
||||
"expo-build-properties": "~55.0.13",
|
||||
"expo-clipboard": "~55.0.13",
|
||||
"expo-constants": "~55.0.14",
|
||||
"expo-device": "~55.0.15",
|
||||
"expo-document-picker": "~55.0.13",
|
||||
"expo-font": "~55.0.6",
|
||||
"expo-glass-effect": "~55.0.10",
|
||||
"expo-image": "~55.0.8",
|
||||
"expo-linear-gradient": "~55.0.13",
|
||||
"expo-linking": "~55.0.13",
|
||||
"expo": "~56.0.12",
|
||||
"expo-blur": "~56.0.3",
|
||||
"expo-build-properties": "~56.0.19",
|
||||
"expo-clipboard": "~56.0.4",
|
||||
"expo-constants": "~56.0.18",
|
||||
"expo-device": "~56.0.4",
|
||||
"expo-document-picker": "~56.0.4",
|
||||
"expo-font": "~56.0.7",
|
||||
"expo-glass-effect": "~56.0.4",
|
||||
"expo-image": "~56.0.11",
|
||||
"expo-linear-gradient": "~56.0.4",
|
||||
"expo-linking": "~56.0.14",
|
||||
"expo-qq": "^0.1.8",
|
||||
"expo-router": "~55.0.12",
|
||||
"expo-splash-screen": "~55.0.18",
|
||||
"expo-status-bar": "~55.0.5",
|
||||
"expo-symbols": "~55.0.7",
|
||||
"expo-system-ui": "~55.0.15",
|
||||
"expo-web-browser": "~55.0.14",
|
||||
"expo-router": "~56.2.11",
|
||||
"expo-splash-screen": "~56.0.10",
|
||||
"expo-status-bar": "~56.0.4",
|
||||
"expo-symbols": "~56.0.6",
|
||||
"expo-system-ui": "~56.0.5",
|
||||
"expo-web-browser": "~56.0.5",
|
||||
"expo-wechat": "^0.2.6",
|
||||
"heroui-native": "^1.0.1",
|
||||
"lucide-react-native": "^1.8.0",
|
||||
"react": "19.2.0",
|
||||
"react-dom": "19.2.0",
|
||||
"react-native": "0.83.4",
|
||||
"react": "19.2.3",
|
||||
"react-dom": "19.2.3",
|
||||
"react-native": "0.85.3",
|
||||
"react-native-dates-picker": "^0.2.4",
|
||||
"react-native-gesture-handler": "~2.30.0",
|
||||
"react-native-gesture-handler": "~2.31.2",
|
||||
"react-native-image-crop-picker": "^0.51.1",
|
||||
"react-native-keyboard-controller": "1.20.7",
|
||||
"react-native-reanimated": "4.2.1",
|
||||
"react-native-safe-area-context": "~5.6.2",
|
||||
"react-native-screens": "~4.23.0",
|
||||
"react-native-keyboard-controller": "1.21.6",
|
||||
"react-native-reanimated": "4.3.1",
|
||||
"react-native-safe-area-context": "~5.7.0",
|
||||
"react-native-screens": "~4.25.2",
|
||||
"react-native-shadow-2": "^7.1.2",
|
||||
"react-native-sortables": "^1.9.4",
|
||||
"react-native-svg": "15.15.3",
|
||||
"react-native-svg": "15.15.4",
|
||||
"react-native-ui-datepicker": "^3.1.3",
|
||||
"react-native-web": "~0.21.0",
|
||||
"react-native-worklets": "0.7.2",
|
||||
"react-native-worklets": "0.8.3",
|
||||
"sonner-native": "^0.24.0",
|
||||
"tailwind-merge": "^3.5.0",
|
||||
"tailwind-variants": "^3.2.2",
|
||||
@@ -71,10 +68,10 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react": "~19.2.2",
|
||||
"babel-preset-expo": "^55.0.16",
|
||||
"babel-preset-expo": "^56.0.15",
|
||||
"oxfmt": "^0.44.0",
|
||||
"oxlint": "^1.59.0",
|
||||
"react-native-iconfont-cli": "^2.2.4",
|
||||
"typescript": "~5.9.2"
|
||||
"typescript": "~6.0.3"
|
||||
}
|
||||
}
|
||||
Generated
+1259
-2207
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user