4.3 KiB
MODIFIED Requirements
Requirement: Home renders the editorial structure from CMS content
The home page SHALL render, in order: header/navigation, hero, manifesto, featured services summary, featured portfolio selection, working method (four steps), testimonials, Amare positioning/profile, final contact CTA, and footer with contact, social links and legal links (WEB-01). Hero copy, brand name, manifesto, method and principles MUST come from site_settings (with editorial defaults when optional fields are empty); services, cases and testimonials MUST come from published records. The home MUST follow the Heritage Editorial composition: asymmetric spreads and tonal fields on desktop, with portfolio images in alternating editorial proportions, and a linear complete sequence on mobile rather than rounded card grids.
Scenario: Published content is displayed in configured order
- GIVEN published services, cases and testimonials exist
- WHEN a visitor loads the home
- THEN the published content MUST be displayed following the
sort_orderand featured flags - AND the hero MUST show the values stored in
site_settings - AND the manifesto, method and positioning sections MUST be present
- AND the portfolio section MUST use an olive tonal field with editorial image proportions
Scenario: CTA leads to the contact placeholder page
- WHEN a visitor activates the primary or final CTA on the home
- THEN the visitor MUST be taken to the
contactroute - AND no lead record MUST be created
Scenario: Empty catalog sections are omitted
- GIVEN no published services, cases or testimonials
- WHEN a visitor loads the home
- THEN the response MUST be 200
- AND the services, portfolio and testimonials sections MUST be omitted instead of rendering empty containers
- AND hero, manifesto, method, positioning and final CTA MUST still render
Scenario: Home has no console errors
- WHEN the home is loaded in a real browser at desktop and mobile viewports
- THEN the browser console MUST contain no JavaScript errors
Requirement: Listing and detail pages exist for catalog content
The system SHALL render a services listing (WEB-02) and a portfolio listing plus case detail (WEB-03) using the Heritage Editorial visual language. The case detail MUST present summary, event type, optional city/venue/date, challenge, solution, optional result, cover image and the ordered gallery. Portfolio listings and galleries MUST use alternating editorial image proportions on desktop while retaining DOM order and a single-column readable sequence on mobile.
Scenario: Services listing shows published services
- WHEN a visitor loads
/servicos - THEN every published service MUST be listed with title and summary in
sort_order - AND the listing MUST use the public editorial layout (not an unrelated visual system)
Scenario: Gallery respects stored order
- GIVEN a published case with multiple gallery images
- WHEN a visitor loads the case detail
- THEN the images MUST be rendered ordered by
sort_order - AND desktop presentation MUST alternate editorial image proportions without changing that order
Scenario: Listings paginate open-ended growth
- WHEN the number of published cases exceeds the page size
- THEN
/portfolioMUST paginate instead of rendering all records
Requirement: Institutional and error pages have brand identity
The system SHALL provide the Sobre and Política de privacidade pages and branded error pages (WEB-07) using the Heritage Editorial public layout, including the brand mark when available. Contact, privacy and error surfaces MUST remain sober tonal layouts without decorative photography. The 404 page MUST use the public layout, and the 500 page MUST NOT expose stack traces or internal details when APP_DEBUG is false.
Scenario: Unknown URL renders branded 404
- WHEN a visitor requests a non-existent public URL
- THEN the response status MUST be 404
- AND the page MUST use the public layout and offer navigation back to the home
Scenario: Server error hides internals in production
- GIVEN
APP_DEBUGis false - WHEN an unhandled exception occurs on a public route
- THEN the response MUST be a generic branded error page
- AND MUST NOT contain a stack trace, file path, or environment variable