Skip to main content

Control Panel Specifications

List

Admin listing. Filters (status, category, sponsor, language readiness, date range). Per-row + bulk actions. Permission-aware row controls.

Complete

The Admin listing is the entry point for every Founder File regardless of status. It is a server-driven table with full-text search, multi-filter panel, sort, pagination, per-row action menu, and multi-select bulk actions. The Form preview at the bottom shows the filter panel as the Admin sees it.


Search box

  • Purpose Free-text search across the file's display fields. The fastest way to find a specific file when the Admin already knows its name or topic.
  • DB type Full-text index on `FounderFileLang.Title`, `FounderFileLang.Subtitle`, `FounderFileLang.FullDescription`, `FounderFile.Slug`. Query: `CONTAINS((Title, Subtitle, FullDescription, Slug), @term)` across all 3 language rows joined to the file. Min 2 chars before fire; debounce 250 ms client-side.
  • Validation QC tests: search "fund" → matches files with `funding` in title across EN/AR/FR; search Arabic `تمويل` → matches AR titles; search the exact slug `founders-business-economics-glossary` → matches one row; search 1 char → no request fires.

Filters (server-side, combinable AND)

Status

  • Purpose Slice the list by lifecycle stage. The most-used filter — reviewers live on `under-review`, editors live on `draft + needs-updates`.
  • DB type Multi-select. Query: `WHERE Status IN (@statuses)`. Default value = ALL minus `archived` (archived hidden by default to keep the list focused on live work).
  • Validation QC tests: open listing fresh → archived files do NOT appear; tick only `under-review` → only those files show; tick `archived` explicitly → archived files appear with the soft-grey style.

Category

  • Purpose Single-select category filter. Reuses the SHARED Category taxonomy with Articles — picking Funding here matches any file whose CategoryId resolves to the `funding` slug.
  • DB type `WHERE CategoryId = @categoryId` (joined to Category for label display).
  • Validation QC tests: pick a category → row count matches a direct SQL query against the same `WHERE` clause; verify the dropdown options match the Articles Category options exactly (shared taxonomy).

Sponsor

  • Purpose Find all files linked to a specific sponsor — used by the editorial-business team during contract renewals.
  • DB type Single-select with type-ahead. Options: `None` (SponsorId IS NULL) + every active row in `FounderFileSponsor`. Query: `WHERE SponsorId = @sponsorId` or `WHERE SponsorId IS NULL`.
  • Validation QC tests: type "Bank" → dropdown filters live; pick "None" → only files with NULL SponsorId appear.

Language readiness

  • Purpose Find files that are missing one or more language rows. Editorial Lead uses this to flag files that should not have been allowed to leave draft.
  • DB type Derived predicate over `FounderFileLang` count per FileId. Options: `All-3-ready` (3 rows), `2-of-3`, `EN-only`, `AR-only`, `FR-only`, `Incomplete` (any row missing required fields).
  • Validation QC tests: pick `EN-only` → files with FounderFileLang rows ONLY for `en` lang appear; pick `All-3-ready` → all returned files have exactly 3 rows + each row passes the trilingual gate.

Date range

  • Purpose Time-bound the listing for "what changed this week / month / quarter" reports.
  • DB type Admin chooses the timestamp column (CreatedAt / PublishedAt / LastUpdatedAt) + start + end dates. Query: `WHERE {chosenColumn} BETWEEN @start AND @end`.
  • Validation Preset ranges: Last 7 / 30 / 90 days. QC tests: pick "Last 7 days on PublishedAt" → only files with PublishedAt within the last 7 calendar days appear.

Visible columns + per-row actions

  • Cover thumbnail (3:4 mini) · Title (with `(N langs)` suffix) · Category badge · Status badge · Sponsor name · Last updated (relative) · Leads count · Kebab menu.
  • Kebab actions: Edit · View public page (disabled if not published) · Preview as founder · View leads · Submit for review (only draft / needs-updates with 3-lang ready) · Archive (disabled if pending leads) · Restore (only archived within 90 days).

Bulk actions (selection ≥ 2)

  • Submit for review · Archive · Reassign sponsor (same-tier only) · Export metadata CSV.
  • QC test: select 5 files where only 3 have 3-lang ready, click bulk Submit → 3 succeed, 2 fail with per-file error toasts naming the missing language(s).

Form preview — Filter panel

The filter panel renders as a left rail on the listing. Search sits at the top of the table, sort is a header dropdown.

Filters · 124 files match
Search & sort (top of table)
Last updated (newest first)
Filters (left rail)
draftready-for-reviewunder-reviewpublishedneeds-updates+ Add tag

Archived hidden by default. Toggle the Archived chip to include them.

All categories
Any
Last updated
📅2026-01-01
📅2026-05-18
Bulk action bar (appears when ≥ 2 rows selected)
☑ 5 selected · [ Submit for review ] [ Archive ] [ Reassign sponsor ] [ Export CSV ]