Modules Documentation
Data fields
Entities, fields, and types.
The `Founder` interface (defined in `core/models/founder.model.ts`) is the entity contract. The model carries identity, classification, narrative, journey, social, and visibility fields. Supporting models (`FounderTranslation`, `FounderLink`, `FounderProfile`, `BillingRecord`, `IntroductionRequest`) live alongside.
Identity + classification
- id · string
- Stable identifier (digit strings: "1" through "10" in seed data; UUID-shaped in production). Used everywhere in cross-module mentions.
- slug · string
- URL-stable kebab-case slug. Typically derived from name (e.g. `ahmed-hassan`, `nora-al-rashid`).
- name · string + name_ar · string
- Both required. EN canonical + AR variant. Used everywhere — header, card title, JSON-LD `name`.
- role · string (i18n key)
- i18n key like "Founder & CEO" / "Co-Founder & CTO". Rendered via the `tx` pipe.
- photo · string (URL)
- 1:1 portrait. Falls back to initial-circle when missing.
- industry · string
- Founder’s sector. Drives cross-module sector matching to opportunities + startups.
- stage · string
- Current startup stage (Pre-Seed / Seed / Series A / Series B / Growth).
- country · string
- Country of operation. Drives geographic cross-module matching.
Profile flavor + visibility
- profileStatus · "editorial" | "founder-led"
- "editorial": authored by editorial team. "founder-led": owned by the founder via Founder Account.
- featured? · boolean
- Surfaces in the "Featured Founders" strip on the listing.
- spotlight? · boolean
- Promotes the card to `elevated=true` rendering. Reserved for editorial-curated spotlight contexts.
- visibility flags · hidden* booleans
- Per-field visibility (e.g. `hiddenSocialLinks`, `hiddenContactEmail`). Drives the public renderer to skip private fields.
Startup relationship
- `startupRelationship · StartupRelationship` enum — Founder & CEO / Co-Founder / Founder & CTO / etc.
- `startupName · string + startupName_ar?` — brand name of the linked startup. Resolves via Startup ID lookup when a Startup entry exists.
- `linkedStartupId? · string` — FK to a Startup entry. T1 cross-module link.
Translation + extended profile models
The base `Founder` shape covers card-level data. `FounderProfile` (in the same model file) extends it with multi-paragraph about, highlights array, operating regions, social links array, intro availability flag, etc. Localized free-text fields use `FounderTranslation` shape: `{ en: string; ar?: string }`. The detail page hydrates a full FounderProfile from base Founder + the extended `core/data/founder-details.ts` data.
