This commit is contained in:
oneao committed 2026-06-24 14:07:17 +08:00
1 parent 056cd4970f
commit 513a991b57
3 files changed
+1328 -2279

No files matched your search

+38 -38
View File
@@ -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
+31 -34
View File
@@ -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"
}
}
+1259 -2207
View File
File diff suppressed because it is too large. Load diff