store: shop-first IA — header search, category tiles, homepage reorder #37

Closed
opened 2026-08-24 08:27:41 +00:00 by yuris · 0 comments
Owner

Reframe the storefront as a shop that can also install. The header becomes brand · Produk · Layanan · Kontak · <CartButton/>; search lives in the homepage hero and navigates to /products?q=<value>, with ProductBrowser seeding its state from that param via useSearchParams inside a <Suspense> boundary — one search implementation, not two, since a static-export header is a server component. Lead the root metadata and OG copy with the shop while keeping the existing ["AutoBodyShop", "AutoPartsStore"] JSON-LD unchanged. Reorder the homepage to slim hero (with search) → category tiles linking to /products?kategori=<value> → an 8-item product grid → the service rail framed as "Bisa sekalian dipasang" → the workshop photos moved down out of the hero → location, hours, contact.

Acceptance: / renders in that order, /products?kategori=Oli lands with the filter pre-selected, and pnpm --filter garage-store build passes.

Reframe the storefront as a shop that can also install. The header becomes `brand · Produk · Layanan · Kontak · <CartButton/>`; search lives in the homepage hero and navigates to `/products?q=<value>`, with `ProductBrowser` seeding its state from that param via `useSearchParams` inside a `<Suspense>` boundary — one search implementation, not two, since a static-export header is a server component. Lead the root metadata and OG copy with the shop while keeping the existing `["AutoBodyShop", "AutoPartsStore"]` JSON-LD unchanged. Reorder the homepage to slim hero (with search) → category tiles linking to `/products?kategori=<value>` → an 8-item product grid → the service rail framed as "Bisa sekalian dipasang" → the workshop photos moved down out of the hero → location, hours, contact. Acceptance: `/` renders in that order, `/products?kategori=Oli` lands with the filter pre-selected, and `pnpm --filter garage-store build` passes.
yuris closed this issue 2026-08-24 10:32:46 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
yuris/garage#37
No description provided.