Skip to main content

What is a domain?

A domain is a top-level thematic area that groups a set of related sustainability indicators under a common subject. Domains provide the primary navigation structure of the platform — every indicator belongs to exactly one domain. Typical domain themes in a tourism sustainability context include:
  • Environmental — air quality, water consumption, biodiversity, waste management, energy use
  • Economic — tourism revenue, employment, occupancy rates, business activity
  • Social — resident wellbeing, housing, infrastructure, community services
  • Cultural — cultural heritage preservation, local events, visitor engagement with culture
The exact domains available on the platform are configured by administrators and reflect the specific reporting framework adopted for Barra and Costa Nova.

Domain properties

Each domain object has the following fields:
FieldTypeDescription
idstringUnique identifier for the domain
namestringDisplay name shown in cards and navigation
DomainColorstringBrand colour used for the domain card and chart accents
DomainIconstringIcon identifier displayed on the domain card
DomainCarouselImagesstring[]Array of image paths used in the domain’s image carousel
subdomainsobject[]List of dimension objects, each with a name field
Subdomains (also called dimensions) are the second level of categorisation within a domain. See the Dimensions page for details.

Domain field reference

body.id
string
required
Unique identifier for the domain. Used in API routes such as /api/domains/:id and in URL construction for indicator browsing.
body.name
string
required
Human-readable domain name. The indicator browsing route uses the lowercased name: /indicators/${domain.name.toLowerCase()}.
body.DomainColor
string
Hex colour code or named colour applied to the domain card and used to visually distinguish domains in the UI.
body.DomainIcon
string
Icon identifier (from the platform’s supported icon set) displayed on the domain card.
One or more image paths displayed as a carousel on the domain card or detail view.
body.subdomains
object[]
Array of dimension objects belonging to this domain. Each object has at minimum a name field.

Domain API endpoints

GET    /api/domains          # List all domains
GET    /api/domains/:id      # Get a single domain by ID
POST   /api/domains/         # Create a domain (admin)
PUT    /api/domains/:id      # Full update of a domain (admin)
PATCH  /api/domains/:id      # Partial update of a domain (admin)
DELETE /api/domains/:id      # Delete a domain (admin)

Browsing domains in the UI

Domain selection page

The /domains route renders a grid of domain cards. Each card shows the domain’s name, icon, colour, and a carousel of images. Clicking a card navigates to the indicator list for that domain.

Indicator list by domain

Clicking a domain card navigates to:
/indicators/{domain.name.toLowerCase()}
For example, a domain named Environmental links to /indicators/environmental. This route renders the DomainTemplate component filtered to that domain’s indicators.

All indicators

The /indicators route (without a domain path) shows all indicators across every domain, with an option to filter by domain using the domain selector.

Managing domains (admin)

Domain management is restricted to users with the administrator role. Modifying or deleting a domain affects all indicators and dimensions associated with it.
Administrators manage domains from the /domains-management route. From this page you can:
  • View all existing domains with their properties
  • Create a new domain at /new_domain
  • Edit an existing domain at /edit_domain/:id
  • Delete a domain (this also removes its associated indicators and dimensions)
When creating or editing a domain, you can set the name, colour, icon, carousel images, and initial set of dimensions.

Build docs developers (and LLMs) love