Domain Requirements
1. User Authentication & Access
The system needs a way to manage and authenticate users. There are two kinds of users: regular users (customers) and employees with extra permissions.
- FR-1.1: Users can authenticate to the shop ("login").
- FR-1.2: Visitors can browse products, categories, and search results without logging in.
- FR-1.3: Product Management functions are restricted to authenticated employees.
2. Products
The system needs to support the management of products, as well as discovery and browsing of the product by users.
Product Management
Employee users can create, edit, and delete products. Products can have variants that alter certain attributes of the product, such as its color.
- FR-2.1: Employees can create new products or edit existing ones.
- FR-2.2: Employees can add, edit, or delete variants of a product.
- FR-2.3: Each variant can have at least a name, description, and product images.
- FR-2.4: A variant can be "default", which means it will be the default variant for users when they view the product.
- FR-2.5: Products can be grouped in product categories. Each category can have characteristics that apply to all products in the category, such as "color" or "size".
- FR-2.6: A Product can belong to multiple categories.
- FR-2.6: A product and variant needs to be set to "visible" to appear to non-employee users.
- FR-2.7: Each variant must have a retail price, and can have a (lower) selling price if the product is on a sale.
Product Discovery & Browsing
A visitor or regular user wants to find the products they need. They can do this by browsing the homepage, navigating through categories, or using a text search function.
- FR-2.8: Users and visitors can browse products from the homepage.
- FR-2.9: Users and visitors can see and navigate product categories.
- FR-2.10: Users and visitors can search for products using a text-based search function.
- FR-2.11: Within product categories or search results, users and visitors can apply filters.
Product Details
When a user has found a product they are interested in, they want to inspect the product details, such as its description, variants, and reviews.
- FR-2.12: Users and visitors can open a product detail page.
- FR-2.13: The product detail page should contain the product details, including its description, available variants, and customer reviews.
3. Shopping Cart & Checkout
Once the user has found the products they want to buy, they need a way to purchase them. The system needs to support a shopping cart and a checkout process.
- FR-3.1: Users can add products or variants to a shopping cart.
- FR-3.2: Users can view the contents of their shopping cart.
- FR-3.3: Users can change the quantity of items in their shopping cart or remove them from the shopping cart.
- FR-3.5: The system shall support the checkout process as detailed on the Business Processes page.
4. Orders and Returns
After the user has placed an order as part of the checkout, they want to keep track of their orders. If they are not satisfied, they might want to return an item.
- FR-4.1: Users can access to their order history.
- FR-4.2: Users can view details of their orders.
- FR-4.3: Users can see the current status of their orders.
- FR-4.4: Users can return process products as detailed on the Business Processes page.
- FR-4.5: Users can download invoices for each order. Each invoice includes the order details, the total price, and the tax information.
5. Wishlists
Sometimes, a user does not want to buy a product right away, but wants to save it on a wishlist.
- FR-5.1: Each user can have multiple wishlists.
- FR-5.2: A user can create, edit, and delete wishlists.
- FR-5.3: Each wishlist has a name.
- FR-5.4: Products can be added to wishlists from the product details page.
6. Reviews
To increase customer trust and provide feedback to the store, users can submit reviews for products they have purchased.
- FR-6.1: Authenticated users can submit product reviews for products they have purchased.
- FR-6.2: Each review has a title, rating, and text content.
- FR-6.3: Users can create reviews directly from a product page, or from the order history.
- FR-6.4: Reviews are published immediately upon submission.
7. Promotions
The shop operator wants to incentivize orders by offering promotions, such as discounts.
- FR-7.1: The shop operator can create discounts that apply a percentage off a product's price.
- FR-7.2: A discount has a validity period, and can have a minimum order amount, maximum number of uses, and a maximum discount amount, all set by the shop operator.
- FR-7.3: A discount can be applied with a coupon-code.
- FR-7.4: A discount can be scoped to a number of products or product variants, and is not generally usable.