Skip to main content

Modules Documentation

Data fields

Entities, fields, and types.

Complete

The CoverageArticle interface (core/models/coverage-article.model.ts:24) is intentionally lean — 15 fields total. The structural fields (id, slug, parentEventId, kind) are non-negotiable; the content fields (title, dek, bodyHtml) are bilingual; the mention arrays are all optional. No status / lifecycle field — articles are either drafts (not in production data) or published.

Field clusters

Identity (3 fields)
id (internal string); slug (kebab-case, ASCII, EN canonical, unique); parentEventId (the CalendarEvent.id this anchors to — required, never null).
Classification (1 field)
kind ∈ { recap | analysis | highlights | pitch-result | sponsor-spotlight }. Drives badge color + sponsor disclosure visibility + JSON-LD subtype.
Content (3 fields, all BilingualText)
title (EN + AR); dek (subtitle, EN + AR); bodyHtml (pre-rendered HTML in EN + AR — both must be authored, no auto-translation).
Optional context (2 fields)
country (ISO 3166-1 alpha-2 — useful when the parent event spans multi-country); sector (free string tag — fintech, healthtech, b2b-saas, etc).
Mention arrays (4 fields, all optional)
mentionedFounderIds[] (founder profiles surfaced); mentionedStartupIds[] (startups surfaced); mentionedOpportunityIds[] (opportunities tied to event outcomes — e.g. winners advanced to a follow-on program); mentionedFileIds[] (Founder Files surfaced or distributed at the event).
Media (1 field)
coverImageUrl (string | null). When null, the card and hero fall back to a generated SVG composite of event name + kind icon.
Byline (1 field, BilingualText)
author — full bilingual author name. Editor-written for staff authors; contributor name for guest pieces. Sponsor name is NOT placed here — it goes in the disclosure ribbon.
Time + reading (2 fields)
publishedAt (ISO 8601 — the moment of publication, drives sort + JSON-LD datePublished); readingTimeMinutes (number — calculated from bodyHtml word count, rounded up).
Promotion (1 field)
isFeatured (boolean — when true, the article surfaces on the homepage featured coverage rail and gets a larger card variant in event details + founder/startup mention rails).