Files
amare/openspec/changes/package-detail-pages/specs/public-site-pages/spec.md

3.1 KiB

MODIFIED Requirements

Requirement: Public routes serve published content without authentication

The system SHALL expose the public routes of SPEC §5.1 plus the additive package detail route: home (/), services.index (/servicos), packages.show (/pacotes/{slug}), portfolio.index (/portfolio), portfolio.show (/portfolio/{slug}), about (/sobre), contact (/contato) and privacy (/privacidade). Every public route MUST respond without authentication and MUST NOT expose unpublished content, internal fields, or internal notes (SPEC §19).

Scenario: Guest reaches every public route

  • WHEN an unauthenticated visitor requests any public route listed above that has published content where required
  • THEN the response status MUST be 200
  • AND no redirect to /admin/login MUST occur

Scenario: Unpublished content is invisible

  • GIVEN a service, portfolio case, wedding modality, or testimonial with published_at null
  • WHEN a visitor loads the corresponding public listing or home section
  • THEN the record MUST NOT appear in the rendered output

Scenario: Unpublished case detail returns 404

  • GIVEN a portfolio case saved as draft
  • WHEN a visitor requests /portfolio/{slug} for that case
  • THEN the response status MUST be 404

Scenario: Unpublished wedding modality detail returns 404

  • GIVEN a wedding modality saved as draft
  • WHEN a visitor requests /pacotes/{slug} for that modality
  • THEN the response status MUST be 404

Scenario: Published case detail becomes reachable

  • GIVEN a portfolio case saved as draft
  • WHEN an admin fills the required fields and publishes the case
  • THEN /portfolio/{slug} MUST respond 200
  • AND the case MUST appear in the /portfolio listing

Scenario: Published wedding modality detail becomes reachable

  • GIVEN a wedding modality saved as draft with required detail fields
  • WHEN an admin publishes the modality
  • THEN /pacotes/{slug} MUST respond 200

ADDED Requirements

Requirement: Wedding modality detail uses Heritage Editorial public layout

The system SHALL render /pacotes/{slug} with the public layout (header/footer shared), Heritage Editorial tokens, and section order: package hero (eyebrow, bipartite title, lead, outline secondary actions as designed, hero media), dark benefit strip, included-items grid, audience split (media + checklist), final conversion CTA. The page MUST be server-rendered Blade without a public Livewire dependency. Missing optional images MUST NOT break the page (omit or degrade the media slot).

Scenario: Detail page section order

  • GIVEN a published modality with complete detail content
  • WHEN a visitor loads /pacotes/{slug}
  • THEN the document MUST include the hero, benefits, included items, audience and final CTA regions in that order
  • AND MUST use the public layout chrome

Scenario: Detail page has no console errors

  • WHEN the modality detail is loaded in a real browser at desktop and mobile viewports
  • THEN the browser console MUST contain no JavaScript errors