23 lines
1.4 KiB
Markdown
23 lines
1.4 KiB
Markdown
# Index: Mobile H5 app (`apps/mobile`)
|
|
|
|
Standalone Nuxt 3 shopper app on port 3003, added by `add-mobile-h5`.
|
|
Live-only: no mock adapter (nothing to roll back from); all data through
|
|
`@vmall/shared` `createApi`. Guidelines: `docs/frontend-guidelines.md`.
|
|
|
|
| Path | Holds |
|
|
|---|---|
|
|
| `app.vue` | shell: 4-tab bottom bar (`/`, `/category`, `/cart`, `/user`) with safe-area insets; top back-bar on other routes |
|
|
| `plugins/api.ts` | live-only `$api` (mall-identical token contract) |
|
|
| `stores/session.ts` | session store, same as mall (`vmall.token`/`vmall.user`) |
|
|
| `middleware/auth.ts`, `utils/auth.ts` | auth guard + sign-in return path |
|
|
| `composables/usePrice.ts`, `usePrefs.ts`, `usePullToRefresh.ts` | currency-aware prices, prefs, touch pull-to-refresh |
|
|
| `components/PriceText.vue`, `ProductGridCard.vue`, `QtyStepper.vue` | shared bits |
|
|
| `pages/index.vue` | home: banners, quick links, promos, category floors |
|
|
| `pages/category.vue`, `pages/search/` | category browse, search + results |
|
|
| `pages/product/[id].vue`, `pages/cart.vue`, `pages/checkout.vue` | purchase path |
|
|
| `pages/user.vue`, `pages/orders/`, `pages/aftersales.vue`, `pages/coupon.vue`, `pages/wallet.vue` | account center |
|
|
| `pages/login.vue`, `pages/register.vue` | auth |
|
|
| `locales-extra.ts` | app copy (en+zh), namespaced per page group |
|
|
|
|
The mall top-bar "Mobile" entry points here (`apps/mall/components/shell/TopBar.vue`).
|