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/loginMUST occur
Scenario: Unpublished content is invisible
- GIVEN a service, portfolio case, wedding modality, or testimonial with
published_atnull - 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
/portfoliolisting
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