Files
amare/openspec/changes/archive/2026-08-01-recreate-public-frontend/specs/public-site-pages/spec.md
Manoel Freitas cf1589c916 feat: recreate public frontend with Heritage Editorial identity (#5)
* feat: recreate public frontend with Heritage Editorial identity

Replace placeholder visual system with EB Garamond/olive tokens, brand assets, editorial home narrative, São Paulo settings, real testimonials, and regenerated visual baselines.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs: archive recreate-public-frontend and sync Heritage Editorial specs

Merge delta requirements into main OpenSpec capabilities and move the completed change into the dated archive.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 23:39:00 -03:00

5.8 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 on desktop, linear 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_order and featured flags
  • AND the hero MUST show the values stored in site_settings
  • AND the manifesto, method and positioning sections MUST be present

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 contact route
  • 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.

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)
  • 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

Scenario: Listings paginate open-ended growth

  • WHEN the number of published cases exceeds the page size
  • THEN /portfolio MUST 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. 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_DEBUG is 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

Requirement: Contact page presents contact data as briefing placeholder

The contact route SHALL render the contact page using site_settings (e-mail, phone, city, social links) so the home CTA has a valid destination before the briefing form exists. The page MUST NOT create leads and MUST NOT submit a functional briefing form in this change.

Scenario: Contact page shows configured contact data

  • WHEN a visitor loads /contato
  • THEN the e-mail and phone stored in site_settings MUST be displayed
  • AND no lead record MUST be created

ADDED Requirements

Requirement: Public header exposes brand mark and responsive navigation

The public layout SHALL render the Amare brand mark (faceted-heart logo lockup or configured logo), primary route navigation, and a contact CTA. On narrow viewports the navigation MUST be operable via a disclosure control with accessible name and aria-expanded state.

Scenario: Desktop header shows navigation and CTA

  • WHEN a visitor loads any public page at a desktop viewport
  • THEN the header MUST include brand mark, links to home/services/portfolio/about/contact, and a contact CTA

Scenario: Mobile menu toggles accessibly

  • WHEN a visitor activates the menu button on a narrow viewport
  • THEN the primary navigation MUST become available
  • AND the control MUST expose an updated aria-expanded value
  • AND activating a navigation link MUST close the menu

Requirement: Demonstrative photography is labeled until authorized assets exist

When public pages render illustrative/demo photography that is not an authorized Amare asset, the system SHALL mark that imagery as demonstrative in visible copy or accessible labeling so visitors are not misled.

Scenario: Portfolio demo imagery is disclosed

  • WHEN the home or portfolio renders placeholder photography
  • THEN a visible note or equivalent disclosure MUST indicate the imagery is illustrative pending authorized assets