# Index: Platform (identity, accounts, shops, content, currency, addresses) Domain design: `docs/domains/platform.md`. Specs: `openspec/specs/auth/`, `customer-accounts/`, `store-directory/`, `storefront-content/`, `currency/`, `address-book/`, `rbac/`. ## Backend (`apps/api`) | Module | Holds | |---|---| | `modules/identity/` | register/login/me; admin user role assignment | | `modules/account/` | customer_accounts ledger; credit/debit/freeze/release, `ensure_monetary_account` | | `modules/shop/` | shop CRUD/status, profiles, `PUT /shop/profile` merchant self-write | | `modules/content/` | four home-content kinds, whole-list replacement | | `modules/currency/` | currency registry, rates, `convert` endpoint | | `modules/address/` | customer address book | | `src/auth.rs` | `AuthUser`, `require`, `own_shop`, `require_shop` | | `src/error.rs` | `ApiError` envelope, `unique_conflict` | | `src/money.rs` | `convert_minor` | Tests: `tests/auth.rs`, `tests/accounts.rs`, `tests/shops.rs`, `tests/content.rs`, `tests/addresses.rs`, `tests/catalog.rs` (currency too). ## Frontends - Mall: `pages/login.vue`, `pages/register.vue`, header/footer shell in `layouts/`/`app.vue`, `pages/user/addresses.vue` - Shop-admin: `pages/shop-profile.vue` - Admin: `pages/users.vue`, `pages/shops.vue`, `pages/content.vue`, `pages/brands.vue`, `pages/currencies.vue`