> ## Documentation Index
> Fetch the complete documentation index at: https://afrizon-admin.tunzaa.co.tz/llms.txt
> Use this file to discover all available pages before exploring further.

# Browse and manage your product catalog in Meneja

> View your full product catalog, filter by status or vendor, and inspect key product details including pricing, inventory, and variants.

The Products section gives you a centralized view of every product across your marketplace. You can browse the full catalog, narrow results using filters, and open any product to see its complete details — including pricing, stock levels, images, and variants. Each product belongs to a specific vendor and store, and carries both a lifecycle **status** and a separate **verification status** that tracks whether the product has passed admin review.

## Product fields

Each product in Meneja exposes the following key fields:

| Field                 | Type                          | Description                                                                   |
| --------------------- | ----------------------------- | ----------------------------------------------------------------------------- |
| `name`                | string                        | Display name of the product                                                   |
| `sku`                 | string                        | Base stock-keeping unit for the product                                       |
| `base_price`          | number                        | The regular retail price                                                      |
| `sale_price`          | number *(optional)*           | A discounted price shown when lower than `base_price`                         |
| `inventory_quantity`  | number *(optional)*           | Overall stock count when not tracking per variant                             |
| `has_variants`        | boolean                       | Whether the product has multiple variants (e.g. size, color)                  |
| `status`              | `ProductStatus`               | Lifecycle status of the product                                               |
| `verification_status` | string                        | Admin review outcome: `pending`, `approved`, `rejected`, or `suspended`       |
| `is_active`           | boolean                       | Whether the product is published and visible on the storefront                |
| `is_featured`         | boolean                       | Whether the product is marked as featured                                     |
| `category_ids`        | string\[]                     | IDs of the categories this product belongs to                                 |
| `vendor_id`           | string                        | ID of the vendor who owns the product                                         |
| `store_id`            | string                        | ID of the store the product is listed in                                      |
| `tags`                | string\[] *(optional)*        | Free-form tags for search and organization                                    |
| `images`              | `ProductImage[]` *(optional)* | Product images, each with a `url`, optional `alt` text, and `is_primary` flag |
| `rejection_reason`    | string *(optional)*           | Reason provided when a product is rejected or suspended                       |

## Product status values

The **status** field can be one of:

| Value       | Meaning                                                 |
| ----------- | ------------------------------------------------------- |
| `draft`     | Product is saved but not yet submitted for review       |
| `pending`   | Product has been submitted and is awaiting admin review |
| `approved`  | Product passed review and is eligible to be published   |
| `active`    | Product is live and visible on the storefront           |
| `rejected`  | Product did not pass admin review                       |
| `suspended` | Product was previously approved but has been suspended  |

<Note>
  `status` and `verification_status` serve different roles. `status` tracks the overall product lifecycle, while `verification_status` (`pending`, `approved`, `rejected`, `suspended`) specifically tracks the outcome of admin review. Both fields are shown in the product table.
</Note>

## Product variants

When `has_variants` is `true`, the product has one or more `ProductVariant` entries. Each variant represents a specific combination of attributes (for example, `{ "color": "red", "size": "XL" }`).

| Variant field        | Description                                                                      |
| -------------------- | -------------------------------------------------------------------------------- |
| `name`               | Variant label (e.g. "Red / XL")                                                  |
| `attributes`         | Key-value pairs describing the variant (e.g. `{ "size": "M" }`)                  |
| `price`              | Optional price adjustment applied on top of `base_price`                         |
| `inventory_quantity` | Variant-specific stock count                                                     |
| `sku`                | SKU suffix; the full SKU is formed by appending this to the product's base `sku` |
| `image_url`          | Optional thumbnail image for this variant                                        |

<Info>
  When `has_variants` is `true`, stock is tracked at the variant level via each variant's `inventory_quantity`. The top-level `inventory_quantity` on the product applies only when `has_variants` is `false`.
</Info>

## Filtering the product catalog

Use the filter bar above the product table to narrow results:

| Filter                | Description                                                                    |
| --------------------- | ------------------------------------------------------------------------------ |
| `search`              | Free-text search against product name and SKU                                  |
| `status`              | Filter by status value (e.g. `pending`, `approved`)                            |
| `verification_status` | Filter by admin review status (`pending`, `approved`, `rejected`, `suspended`) |
| `is_active`           | Show only published (`true`) or unpublished (`false`) products                 |
| `categoryId`          | Show only products in a specific category                                      |
| `vendorId`            | Show only products from a specific vendor                                      |

You can combine multiple filters at once. The table updates to show only products that match all active filters.

## Viewing product details

To open a product's detail view, click anywhere on its row in the product table. You can also open the row actions menu (the **⋯** icon) and select **View Details** to navigate to the dedicated product page at `/dashboard/products/{product_id}`.

The detail view shows the full product record including all images, variant configurations, category assignments, pricing, and the current `verification_status`.

<Tip>
  The product table shows up to two category badges per product. If a product belongs to more than two categories, the remainder is shown as a count badge (e.g. **+2**). Open the product detail to see all assigned categories.
</Tip>
