Skip to content

Implement home page - #53

Merged
bahman026 merged 8 commits into
shopfrom
implement_home_page
Jun 27, 2026
Merged

Implement home page#53
bahman026 merged 8 commits into
shopfrom
implement_home_page

Conversation

@bahman026

Copy link
Copy Markdown
Owner

No description provided.

bahman026 and others added 8 commits June 25, 2026 00:10
- shop: storefront home page (hero slider, categories, banners, product
  carousels, brands) with header nav, SEO/JSON-LD, and canonical URLs
- admin/shop: add polymorphic image to varieties (model, factory, seeder,
  Filament form/table, product repeater, shop read model)
- admin: replace dead via.placeholder.com URLs with placehold.co in factories
- admin: fix TestSeeder unique constraint via Postgres sequence sync and
  reuse of existing province/city records; seed product/variety images

Co-authored-by: Cursor <cursoragent@cursor.com>
- shop: ProductController@show (/products/{slug}) + Product/Show.vue with
  gallery, variety selector, buy box, specs, reviews, breadcrumbs, related
  carousel; Product/Offer + BreadcrumbList JSON-LD; view counter; tests
- admin: ProductSeeder/VarietySeeder now attach published, in-stock
  varieties to products (adds published()/inStock() factory states) so the
  storefront no longer shows everything as out of stock
- docs: run tests via Pest directly instead of php artisan test

Co-authored-by: Cursor <cursoragent@cursor.com>
- Primary attribute group (e.g. color) drives variety selection; additional
  attributes (e.g. size) are constrained by the chosen primary, never block it
- Hide price until a variety is fully selected; show a prompt instead
- Gallery shows the selected variety's image first and dedupes by URL

Co-authored-by: Cursor <cursoragent@cursor.com>
Quantity can never exceed the selected variety's inventory; noted in
AGENTS.md business constraints and the storefront roadmap.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Gallery shows all product + variety images combined; selecting a variety
  switches the main image instead of filtering the list
- Cap quantity at the selected variety's inventory; reset on variety change
- Show out-of-stock state when no variety is buyable
- Pick the primary attribute axis deterministically (most-voted group)
- Auto-select a lone flat variety so price shows without a click

Co-authored-by: Cursor <cursoragent@cursor.com>
Thin ProductController that delegates to single-purpose actions under
app/Actions; per-model DTOs (Product, Variety, Image, Review) under
app/DTOs, with value shapes kept as typed arrays. Documents the
controller/action/DTO conventions in AGENTS.md.

Co-authored-by: Cursor <cursoragent@cursor.com>
Slim HomeController to delegate to per-section actions under
Actions/Home; add Actions/Catalog/BuildProductCard as the single
source of truth for card payloads, reused by home carousels and
related products. Drop unused fromArray() from DTOs.

Co-authored-by: Cursor <cursoragent@cursor.com>
Set up frontend lint/format (ESLint flat config + Prettier with Tailwind
sorting), wire them into composer test-dev and CI, and format resources/js.
Type all query closures (Relation eager-loads, Builder taps, model maps) so
pest --type-coverage hits 100%.

Co-authored-by: Cursor <cursoragent@cursor.com>
@bahman026
bahman026 merged commit da1ea6c into shop Jun 27, 2026
2 checks passed
@bahman026
bahman026 deleted the implement_home_page branch June 27, 2026 08:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant