jewellery-store is a first-party website for a jewellery store owned and operated by Aryan Singh (IN). The product intent is a warm, tactile, humane-luxury storefront where shoppers can browse jewellery products, read the details of a single piece, add pieces to a cart, and complete a purchase, and where the store owner can keep the jewellery catalogue current and review incoming orders.
The audience is two-fold: Shoppers — gift buyers and self-purchasers who want to discover and buy jewellery — and the Store owner, who manages the catalogue and fulfils the orders that arrive. The site is delivered as a custom React front end over a shared FastAPI backend with a MariaDB database, with application-owned identity so the store owner can return to protected catalogue and order work.
The product is a single first-party website. Public, anonymous surfaces — Landing, Shop, Product Details, Cart, and Order Confirmation — let any visitor discover the store, browse the jewellery catalogue, inspect a piece, assemble a cart, and complete a purchase without an account. The purchase produces a durable order that the store owner can see.
The store owner's work — Products (catalogue management) and Orders (incoming order review) — is protected. Because the store owner must privately own and resume durable catalogue and order state, the application owns identity: a new store owner establishes access through Sign Up, and a returning store owner verifies identity through Login. These two anonymous entry surfaces are the only way into the protected work; the protected pages themselves never establish access to themselves. Identity here is continuity of ownership, not a differentiated permission scheme beyond the store owner's protected catalogue and order work.
All current behaviour is delivered by the application itself: the React front end, the shared FastAPI backend, and MariaDB for persistent catalogue, cart, order, and identity data. There are no provider-owned or external destinations in the current scope, and no headless delivery. Nothing in this document is deferred to a future horizon; the future section is empty by design.
Not applicable — no reference directive declares content_source.
FR-1 — Store website (explicit) As a visitor, I should reach a first-party website for the jewellery store, so that I can discover the store and its pieces.
FR-2 — Browse jewellery products (explicit) As a Shopper, I should browse the jewellery catalogue, so that I can find pieces I want.
FR-3 — View product details (explicit) As a Shopper, I should view the details of a single jewellery piece, so that I can decide whether to buy it.
FR-4 — Add products to a cart (explicit) As a Shopper, I should add pieces to a cart, so that I can assemble a purchase.
FR-5 — Review and adjust the cart (required_inference) As a Shopper, I should review the cart and change quantities or remove lines, so that the purchase reflects what I want.
FR-6 — Complete a purchase (explicit) As a Shopper, I should complete checkout with my contact and delivery details, so that I receive the pieces I chose.
FR-7 — Receive order confirmation (required_inference) As a Shopper, I should see a confirmation of my placed order, so that I know the purchase succeeded.
FR-8 — Manage the jewellery catalogue (explicit) As the Store owner, I should add and edit jewellery products, so that the catalogue stays current.
FR-9 — Review incoming orders (explicit) As the Store owner, I should review incoming orders, so that I can see what shoppers have purchased.
FR-10 — Self-service enrollment (required_inference) As a new Store owner, I should establish access to the protected catalogue and order work, so that I can begin managing the store.
FR-11 — Returning identity verification (required_inference) As a returning Store owner, I should verify my identity, so that I can resume protected catalogue and order work.
Failure and recovery: If the catalogue fails to load on Shop, an inline error with retry replaces the grid. If an add fails, the cart is unchanged and an inline message appears. If checkout fields are invalid, they are flagged inline and no order is placed; if submission fails, the cart stays intact and the Shopper retries.
Failure and recovery: If the order list fails to load, a retry control re-fetches it; if no orders exist, an empty message is shown.
Failure and recovery: Invalid fields or an email already in use are flagged inline and no account is created. A failed product save keeps the entered values and offers retry.
Failure and recovery: Incorrect credentials are reported without revealing which field was wrong and no session is created; the Store owner re-enters credentials. An expired session on a protected page redirects to Login.
Failure and recovery: A fetch failure shows a retry control; an empty list shows a message that no orders have arrived yet.
Muse and headline: Humane luxury after Yves Béhar — warm, tactile, and calm, not loud luxury.
Mode: Light.
Colour tokens (exact hex by role):
| Role | Hex | Use |
|---|---|---|
| Background (oat ground) | #F4EFE7 | Page ground, holds most of every page |
| Surface | #E8DFD2 | Material bands, cards, form panels |
| Text | #2A2622 | Body and heading text |
| Primary (sage) | #3F5B4E | Navigation, primary actions, capsule buttons, 1px rules |
| Accent (terracotta) | #B5623C | Prices and the cart count dot — the single hot accent |
| Muted | #8A7F72 | Secondary labels, captions, supporting text |
Typography:
clamp(...) with their mobile size so headlines stay whole at 375px, 768px, and 1280px.Shape language: Soft rounded blocks with a 24px radius; capsule buttons and pill tags; thin 1px sage rules; no sharp corners.
Layout: Single wide column on a 12-column grid; product rows sit in warm material bands; generous 96px vertical rhythm.
Imagery style: Macro jewellery photography on oat linen and skin, natural side light, soft shadows. No white studio voids, no gold-foil gradients or sparkle effects, no blue accents.
The public entry is a full-bleed warm oat band. On the left, an oversized Fraunces headline stacks in three lines at 96px, light 300, sentence case, tight tracking, with a sage capsule CTA beneath it. On the right, one macro gold-ring photograph bleeds off the right edge at roughly 60% width, cropped by the viewport as the direction asks while the headline and CTA stay whole and uncovered at every viewport.
The signature moves carry through the storefront: product cards sit on material swatches — linen, walnut, stone — each showing its swatch as a thin bottom strip; the capsule cart button in sage grows a terracotta dot with the item count; and section openers use one full-width macro photograph with a small sage caption pinned to the lower left. Prices are always terracotta; navigation and primary actions are always sage. The concept recomposes only accepted content and controls — the hero CTA leads to Shop, the cart button opens Cart, and the featured strip opens Product Details.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: layered_2d
Landing Hero Motion Brief
prefers-reduced-motion, the hero renders as a static composed frame — no fade, no pan, no hover lift — with the headline, CTA, and image fully visible and whole.clamp(...) to fit; no other element covers any part of them. Imagery and decoration may crop, bleed, or overlap as the direction asks, but never over readable text or controls.prefers-reduced-motion, a usable static arrangement is provided; any moving or scrollable content wraps into rows or allows horizontal scrolling so each item can be brought fully into view.frontend, backend, and database services; no additional services are required for the current workflows.#F4EFE7 hero band carrying the headline, CTA, and bleeding ring photograph.
Gold, silver and warm stones, set by hand.
Warm, tactile pieces for everyday wear and quiet celebrations. Each ring, pendant and pair of hoops is chosen for how it feels on the skin — soft gold, honest weight, and a calm finish that wears easily from morning to evening.

Gold, silver and warm stones, set by hand.
Warm, tactile pieces for everyday wear and quiet celebrations. Each ring, pendant and pair of hoops is chosen for how it feels on the skin — soft gold, honest weight, and a calm finish that wears easily from morning to evening.
No comments yet. Be the first!