Skip to main content

Modules Documentation

Data fields

Entities, fields, and types.

Complete

The `FounderFile` interface (defined in `core/models/founder-file.model.ts`) is the entity contract. Files carry editorial content, structured sub-entities (categories, topics, sponsors), per-language content blocks (EN + AR + optional FR), and lead-capture fields.

Identity + classification

id · string
Stable identifier. Format: `ff-NN` (e.g. `ff-01`, `ff-02`). 2-digit zero-padded.
slug · string
URL slug. Descriptive (e.g. `before-you-ask-for-funding`).
fileNumber · number
1, 2, 3, ... Drives the visible `#01` / `#02` brand-eyebrow on covers.
category · FounderFileCategorySlug
`funding` | `pitching` | `growth` | `leadership` | `legal` | `operations` | `glossary` | `market-expansion`. Drives the `.chip-primary` category chip.
topics · string[]
Up to ~6 micro-topics for cross-module taxonomy matching (e.g. ["pitch-deck", "pre-seed", "investor-psychology"]).
availableLanguages · SupportedLanguage[]
Which language versions exist: `["en", "ar"]` for most; `["en", "ar", "fr"]` for tri-language files. Renders the language chip strip.

Per-language content blocks

A FounderFile carries a `lang: { en?: FounderFileLanguageContent; ar?: FounderFileLanguageContent; fr?: FounderFileLanguageContent }` object. Each language version has its own `title`, `shortDescription`, `bodyHtml`, `tocSections[]`, `learningPoints[]`. The `getLanguageContent(file, locale)` helper resolves the active language with EN fallback.

TOC + learning points structure

tocSections · FounderFileTocSection[]
Each section: `{ anchor: string; titleEn: string; titleAr: string; orderIndex: number }`. Drives the reader sidebar + active-section highlight.
learningPoints · FounderFileLearningPoint[]
Each point: `{ titleEn; titleAr; descriptionEn; descriptionAr; iconKey? }`. Renders as numbered list on details page.

Sponsorship + commercial fields

  • `sponsorId?` — links to FounderFileSponsor entry. When set, sponsor mini-row + Sponsored chip render.
  • `FounderFileSponsor` shape: `{ id; name; tier: SponsorTier; logoUrl?; websiteUrl? }`. Tiers: `premier` | `featured` | `supporter`.
  • `isFeatured?` — surfaces the file in the listing’s `.card-editorial--spotlight` block.

Reading metadata

  • `readingTimeMinutes · number` — editor-set. Drives the `{m} min read` strip.
  • `coverImageUrl?` — optional cover. Falls back to file-specific SVG (FF#01-FF#04 each have a unique pattern).
  • `publishedAt` / `updatedAt` — drives sort order on listing.

Lead capture (download flow)

When a user submits the download modal, a `DownloadLead` entity is created: `{ fileId; leadRole: LeadRole; leadCountry; leadEmail; leadInterest: LeadInterest[]; consentMarketing: boolean; consentPartners: boolean; submittedAt }`. LeadRole = founder | investor | accelerator | partner | other. LeadInterest = funding | growth | leadership | etc.