# site-settings Specification ## Purpose Define the typed site-wide settings singleton and its administration rules. ## Requirements ### Requirement: Site settings singleton is manageable by admin only The system SHALL persist site-wide settings in a `site_settings` table as a typed singleton (SPEC WEB-06, ยง8.2). Fields MUST include brand name, hero copy (eyebrow, title, subtitle, CTA label), about summary, contact email/phone/city, social links (jsonb), default meta title/description, default OG image path and alt text, and optional analytics fields disabled by default. #### Scenario: Admin updates site settings - **WHEN** an admin saves the site settings form in Filament - **THEN** the singleton record is updated - **AND** labels and validation messages are in pt-BR #### Scenario: Assistant cannot access site settings - **WHEN** an assistant navigates to site settings in Filament - **THEN** access MUST be denied with HTTP 403 #### Scenario: Default OG image requires alt text - **WHEN** an admin uploads a default OG image without alt text - **THEN** validation MUST fail with a pt-BR error message - **AND** alt text MUST remain optional when no default OG image is present #### Scenario: Singleton avoids generic key-value store - **WHEN** site settings are stored - **THEN** the system MUST use typed columns on `site_settings` - **AND** MUST NOT introduce a generic key/value configuration table