Prototype index and acceptance checklist
Every screen in brief §6 with its states, mapped to a prototype URL, in Sorani (RTL) and English (LTR), with a German Tier 3 sample. Themes: system · light · dark (and sepia in reading mode) via the control in every strap. Breakpoints to check: 360 · 768 · 1320. In production / redirects to /ckb/; this index page exists for the prototype only.
Screens and routes
Reader screens26 screens · 164 routes
01 · Front page
02 · Section index
03 · Article — essay
- ckb/ckb/وتار/لەچی-دەترسێیت-ئەی-خاک-وێران-وا-تەعریب-ڕەگوڕیشەت-هەڵدەکێشێت/original · author portrait
- ckb/ckb/وتار/ژینا-و-چوارچێوەی-پرسی-کورد/original · author portrait
- ckb/ckb/وتار/دژی-خاکفرۆشی-لە-ستایشی-بەرگریکردن-لە-خاکی-کوردستان/original · author portrait
- ckb/ckb/وتار/قەیرانی-ڕاستگۆیی-لە-میدیای-کوردییدا-لەنێوان-سێبەری-حیزبیبوون-و-تەڵەی-کلیکدا/original · author portrait
- ckb/ckb/وتار/بۆچی-ئاساییە-پرسەی-ڕووناکبیران-چۆڵ-و-هۆڵ-بێت/original · author portrait
- ckb/ckb/کولتور/چەند-سەرنجێک-بۆ-ئامانج-غازی/original · author portrait
- ckb/ckb/دیرۆک/لە-تەعریبەوە-بۆ-بەعەرەببوون-لە-یادی-50-ساڵەی-ڕاگواستنی-گوندەکاندا-و-چیرۆکی-والله/original · author portrait
- ckb/ckb/کولتور/شیعر-ماڵی-بوونی-زمانە-شاعیران-پارێزەری-ئەو-ماڵەن/original · author portrait
- ckb/ckb/کولتور/دووبارە-گوێگرتنەوە-لە-میوزیکی-جیهان/original · author portrait
- ckb/ckb/دیرۆک/بۆ-سەد-ساڵەی-لە-سێدارەدانی-شێخ-سەعیدی-پیران-و-هاوڕێکانی/original · author portrait
- ckb/ckb/دیرۆک/کاریگەریی-ڕووبەڕووبوونەوە-ئایینییە-سیاسییەکانی-ئیمپراتۆریەتە-ئیسلامییەکان-لە/original · with PDF attachment · author portrait · long headline (149 characters) · long body
- en/en/essay/the-crisis-of-truthfulness-in-kurdish-media-between-the-shadow-of-party-and-the/machine · author portrait
- en/en/essay/why-is-it-normal-for-the-intellectuals-wake-to-be-empty/machine · author portrait
- de/de/essay/die-krise-der-wahrhaftigkeit-in-den-kurdischen-medien-zwischen-dem-schatten-der/machine translation (Tier 3, noindex)
03 · Article — profile
04 · Article — column
- ckb/ckb/بیروڕا/پەرەپێدانی-هۆشیاریی-و-گرنگیی-بنەڕەتیی-خوێندنەوە-لە-ژیانی-هاوچەرخدا/original · author portrait
- ckb/ckb/بیروڕا/شیکارییەکی-بونیادی-بۆ-هۆکارەکانی-شکست-و-ئاسۆکانی-داهاتووی-کورد-لە-ڕۆژاڤا-دا/original · author portrait
- ckb/ckb/بیروڕا/لەسێدارەدانی-ئەخلاق-لەسەر-مێزی-ڕیەلپۆلەتیک-قوربانیبوونی-کورد-وەكوو-پێکهاتە-لە/original · author portrait
05 · Article — analysis
- ckb/ckb/شرۆڤە/سیاسەتی-زمان-زمانی-زبر/original · with PDF attachment · author portrait
- ckb/ckb/شرۆڤە/حوکمڕانی-لەنێوان-ڕەوایەتیی-سیاسی-و-باڵادەستیی-تەکنیکیدا-سەرنجێک-لەسەر-پڕۆژەی/original · with PDF attachment · author portrait · long headline (149 characters)
- ckb/ckb/شرۆڤە/حیکمەتی-شکست-ماتەم-پڕوپاگەندە-و-کارگەی-بەرهەمهێنانی-دوژمن-لەنێو-دووایین-گۆڕان-و/original · with PDF attachment · author portrait · long body
- ckb/ckb/شرۆڤە/کورد-لە-ڕۆژهەڵاتی-کوردستان-لە-خاڵی-لاوازییەوە-بۆ-خاڵی-بەهێزی-ئێران/original · author portrait
- ckb/ckb/شرۆڤە/خوێندنەوەیەکی-تیۆری-یارییەکان-بۆ-گوتاری-هەڕەشەی-ستراتیجی-کوردی-بێ-چەک-لەسەر/original · with PDF attachment · author portrait
06 · Article — book
08 · Article — essay
- ckb/ckb/وتار/نیشتمانسازی-و-ئیکۆلۆجیا-جەنگی-بوون-و-ناسنامە-و-یاسای-ژینگە/original · author portrait · dossier part 1
- ckb/ckb/وتار/١٢٨-ساڵ-خەبات-لە-پێناو-پاراستنی-ناسنامەی-نەتەوەیی-و-شکۆی-کوردستان/original · author portrait · dossier part 2
- ckb/ckb/وتار/پێکەوەبوون-وەک-ئەندامی-یەک-نیشتیمان-و-یەک-نەتەوە-کوردبوون-وەک-بنەمای-ناسنامە/original · author portrait · dossier part 3
- ckb/ckb/وتار/سەرژمێریی-ونكردنی-ناسنامە-و-پرسی-كورد-لە-عێراق-دا/original · author portrait · dossier part 4
- en/en/essay/nation-building-and-ecology-the-war-of-being-identity-and-environmental-law/machine · author portrait · dossier part 1
10 · Dossier page
11 · Dossiers index
13 · Topics index
14 · Archive month
14 · Archive year
15 · Search
16 · Editions index
17 · Static: about
18 · Static: accessibility
18 · Static: contact
18 · Static: ethics
18 · Static: glossary
18 · Static: privacy
18 · Static: write for Seko
21 · Reading mode (no-script view)
- ckb/ckb/شرۆڤە/سیاسەتی-زمان-زمانی-زبر/read.htmlanalysis
- ckb/ckb/وتار/لەچی-دەترسێیت-ئەی-خاک-وێران-وا-تەعریب-ڕەگوڕیشەت-هەڵدەکێشێت/read.htmlessay
- ckb/ckb/شرۆڤە/حوکمڕانی-لەنێوان-ڕەوایەتیی-سیاسی-و-باڵادەستیی-تەکنیکیدا-سەرنجێک-لەسەر-پڕۆژەی/read.htmlanalysis
- ckb/ckb/وتار/ژینا-و-چوارچێوەی-پرسی-کورد/read.htmlessay
- ckb/ckb/شرۆڤە/حیکمەتی-شکست-ماتەم-پڕوپاگەندە-و-کارگەی-بەرهەمهێنانی-دوژمن-لەنێو-دووایین-گۆڕان-و/read.htmlanalysis
- ckb/ckb/وتار/دژی-خاکفرۆشی-لە-ستایشی-بەرگریکردن-لە-خاکی-کوردستان/read.htmlessay
- ckb/ckb/شرۆڤە/کورد-لە-ڕۆژهەڵاتی-کوردستان-لە-خاڵی-لاوازییەوە-بۆ-خاڵی-بەهێزی-ئێران/read.htmlanalysis
- ckb/ckb/وتار/قەیرانی-ڕاستگۆیی-لە-میدیای-کوردییدا-لەنێوان-سێبەری-حیزبیبوون-و-تەڵەی-کلیکدا/read.htmlessay
- ckb/ckb/وتار/بۆچی-ئاساییە-پرسەی-ڕووناکبیران-چۆڵ-و-هۆڵ-بێت/read.htmlessay
- ckb/ckb/شرۆڤە/خوێندنەوەیەکی-تیۆری-یارییەکان-بۆ-گوتاری-هەڕەشەی-ستراتیجی-کوردی-بێ-چەک-لەسەر/read.htmlanalysis
- ckb/ckb/وتار/نیشتمانسازی-و-ئیکۆلۆجیا-جەنگی-بوون-و-ناسنامە-و-یاسای-ژینگە/read.htmlessay
- ckb/ckb/بیروڕا/پەرەپێدانی-هۆشیاریی-و-گرنگیی-بنەڕەتیی-خوێندنەوە-لە-ژیانی-هاوچەرخدا/read.htmlcolumn
- ckb/ckb/بیروڕا/شیکارییەکی-بونیادی-بۆ-هۆکارەکانی-شکست-و-ئاسۆکانی-داهاتووی-کورد-لە-ڕۆژاڤا-دا/read.htmlcolumn
- ckb/ckb/بیروڕا/لەسێدارەدانی-ئەخلاق-لەسەر-مێزی-ڕیەلپۆلەتیک-قوربانیبوونی-کورد-وەكوو-پێکهاتە-لە/read.htmlcolumn
- ckb/ckb/کولتور/چەند-سەرنجێک-بۆ-ئامانج-غازی/read.htmlessay
- ckb/ckb/دیرۆک/لە-تەعریبەوە-بۆ-بەعەرەببوون-لە-یادی-50-ساڵەی-ڕاگواستنی-گوندەکاندا-و-چیرۆکی-والله/read.htmlessay
- ckb/ckb/کولتور/شیعر-ماڵی-بوونی-زمانە-شاعیران-پارێزەری-ئەو-ماڵەن/read.htmlessay
- ckb/ckb/ڕانان/هاواری-من-بەڵگەنامەیەک-لەسەر-سەدەیەک-لە-نادادی/read.htmlbook
- ckb/ckb/ڕانان/شێرزاد-حەسەن-لە-گڵکەندەوە-بۆ-جەنگاوەری-ڕۆشنایی-تێڕامانێک-لە-کتێبی-لەسەر-بنجی-خۆم/read.htmlbook
- ckb/ckb/کەسایەتی/ژینگە-لەنێوان-یاسا-و-جێبەجێکردندا-پێویستیی-چوارچێوەیەکی-یاسایی-نوێ/read.htmlprofile
- ckb/ckb/ڕانان/بێژنگکردنێک-بۆ-وشەنامەکەی-مامۆستا-جەمال-نەبەز/read.htmlbook
- ckb/ckb/وتار/١٢٨-ساڵ-خەبات-لە-پێناو-پاراستنی-ناسنامەی-نەتەوەیی-و-شکۆی-کوردستان/read.htmlessay
- ckb/ckb/کولتور/دووبارە-گوێگرتنەوە-لە-میوزیکی-جیهان/read.htmlessay
- ckb/ckb/وتار/پێکەوەبوون-وەک-ئەندامی-یەک-نیشتیمان-و-یەک-نەتەوە-کوردبوون-وەک-بنەمای-ناسنامە/read.htmlessay
- ckb/ckb/دیرۆک/بۆ-سەد-ساڵەی-لە-سێدارەدانی-شێخ-سەعیدی-پیران-و-هاوڕێکانی/read.htmlessay
- ckb/ckb/دیرۆک/کاریگەریی-ڕووبەڕووبوونەوە-ئایینییە-سیاسییەکانی-ئیمپراتۆریەتە-ئیسلامییەکان-لە/read.htmlessay
- ckb/ckb/کەسایەتی/مرۆڤ-یان-ژینگە-کامیان-لە-پێشتر-دابنێین/read.htmlprofile
- ckb/ckb/کەسایەتی/ژینگە-لە-کلتوری-کۆمەڵگە-و-پێگەیاندنی-کۆمەڵایەتی-نەوەکانیدا/read.htmlprofile
- ckb/ckb/وتار/سەرژمێریی-ونكردنی-ناسنامە-و-پرسی-كورد-لە-عێراق-دا/read.htmlessay
- en/en/essay/the-crisis-of-truthfulness-in-kurdish-media-between-the-shadow-of-party-and-the/read.htmlessay
- en/en/essay/why-is-it-normal-for-the-intellectuals-wake-to-be-empty/read.htmlessay
- en/en/essay/nation-building-and-ecology-the-war-of-being-identity-and-environmental-law/read.htmlessay
22 · Author page
- ckb/ckb/نووسەران/karzan-eziz/portrait
- ckb/ckb/نووسەران/serdar-mhemed/portrait · no bio in this edition
- ckb/ckb/نووسەران/sileman-ehmed-barzani/portrait · no bio in this edition
- ckb/ckb/نووسەران/saman-salh-ferej/portrait
- ckb/ckb/نووسەران/zerdesht-mela-hesen/portrait · no bio in this edition
- ckb/ckb/نووسەران/hiwa-sadi/portrait
- ckb/ckb/نووسەران/meriwan-wiria-qan/portrait
- ckb/ckb/نووسەران/mela-hndren/portrait · no bio in this edition
- ckb/ckb/نووسەران/khebat-eebdwla/portrait
- ckb/ckb/نووسەران/kameran-mhemed/portrait
- ckb/ckb/نووسەران/tehsin-wisw-eebdwlla/portrait · no bio in this edition
- ckb/ckb/نووسەران/fereidun-saman/portrait
- ckb/ckb/نووسەران/peshrew-mhemed/portrait
- ckb/ckb/نووسەران/sileman-mistefa-hesen/portrait · no bio in this edition
- ckb/ckb/نووسەران/helkewt-pishderi/portrait · no bio in this edition
- ckb/ckb/نووسەران/ibrahim-shekh-wesani/portrait
- ckb/ckb/نووسەران/mazn-bin-mebrwk/portrait · no bio in this edition
- ckb/ckb/نووسەران/ibrahim-sadq-melazade/portrait
- ckb/ckb/نووسەران/sebah-miwfidi/portrait · no bio in this edition
- ckb/ckb/نووسەران/rewa-hezhar/portrait
- ckb/ckb/نووسەران/sherko-kirmanj/portrait
- ckb/ckb/نووسەران/mhemed-shiwani/portrait
- en/en/authors/karzan-eziz/portrait · no bio in this edition
- en/en/authors/serdar-mhemed/portrait · no bio in this edition
- en/en/authors/sileman-ehmed-barzani/portrait · no bio in this edition · no version in this edition
- en/en/authors/saman-salh-ferej/portrait · no bio in this edition · no version in this edition
- en/en/authors/zerdesht-mela-hesen/portrait · no bio in this edition
- en/en/authors/hiwa-sadi/portrait · no bio in this edition · no version in this edition
- en/en/authors/meriwan-wiria-qan/portrait · no bio in this edition · no version in this edition
- en/en/authors/mela-hndren/portrait · no bio in this edition · no version in this edition
- en/en/authors/khebat-eebdwla/portrait · no bio in this edition · no version in this edition
- en/en/authors/kameran-mhemed/portrait · no bio in this edition · no version in this edition
- en/en/authors/tehsin-wisw-eebdwlla/portrait · no bio in this edition · no version in this edition
- en/en/authors/fereidun-saman/portrait · no bio in this edition · no version in this edition
- en/en/authors/peshrew-mhemed/portrait · no bio in this edition · no version in this edition
- en/en/authors/sileman-mistefa-hesen/portrait · no bio in this edition · no version in this edition
- en/en/authors/helkewt-pishderi/portrait · no bio in this edition · no version in this edition
- en/en/authors/ibrahim-shekh-wesani/portrait · no bio in this edition · no version in this edition
- en/en/authors/mazn-bin-mebrwk/portrait · no bio in this edition · no version in this edition
- en/en/authors/ibrahim-sadq-melazade/portrait · no bio in this edition · no version in this edition
- en/en/authors/sebah-miwfidi/portrait · no bio in this edition · no version in this edition
- en/en/authors/rewa-hezhar/portrait · no bio in this edition · no version in this edition
- en/en/authors/sherko-kirmanj/portrait · no bio in this edition · no version in this edition
- en/en/authors/mhemed-shiwani/portrait · no bio in this edition · no version in this edition
23 · Authors index
Promotion and infrastructure5 screens · 8 routes
28 · Social cards gallery
34 · Newsletter email template
35 · Feed presentation (XSL)
37 · Icon and favicon set
— · Email signature and letterhead
Editorial screens6 screens · 12 routes
39 · Editorial: queue
40 · Editorial: review — translation variant
40 · Editorial: review screen
- ckb/editorial/ckb/review.htmlbody with tracked changes · proposals margin (generated · accepted · edited · held) · provenance popover · evidence highlight on hover · record panel
- en/editorial/en/review.htmlbody with tracked changes · proposals margin (generated · accepted · edited · held) · provenance popover · evidence highlight on hover · record panel
41 · Editorial: distribution
- ckb/editorial/ckb/distribution.htmlcards per channel with caption, schedule, approve/hold · WhatsApp copy-ready block · feed-size preview · small-screen layout
- en/editorial/en/distribution.htmlcards per channel with caption, schedule, approve/hold · WhatsApp copy-ready block · feed-size preview · small-screen layout
— · Editorial: decisions log
No route matches the filter.
Portrait mode
ADR 0021The build shows the contributors' published headshots, cleaned by tools/clean-portraits.py: the Seko mark, the card frame and the name captions removed, each square re-cut around the face at one framing, with light denoising and no retouching. The sources are still low resolution; re-shooting to the standard (1:1, face centred, neutral ground) remains the aim. The substitutes stay one switch away: SEKO_PORTRAITS=photo|initials|silhouette npm run build (ADR 0017).





README
Seko · sekokurd.org redevelopment
Design system and static HTML prototype for Seko, the Sorani-first intellectual review. Prepared by Komms Haus against the publication structure (8 Sep 2026) and the wireframes and prototype brief (9 Sep 2026), both under docs/briefs/.
What is here
| Path | Contents |
|---|---|
| src/tokens/ | Design tokens: seko.tokens.json in the W3C DTCG format is the source; seko-tokens.css is generated from it (npm run tokens) |
| src/css/ | seko.css reader component library · editorial.css editorial screens · cards.css social card templates |
| src/data/ | Microcopy per edition (i18n.mjs); loaders over the real corpus (live/*.json from the discovery pass); English and German machine versions under translations/; editorial records |
| import/2026-09/ · discovery/ | The live-site export taken once with checksums, and the discovery pass outputs (records, persons, report) — structure §15 |
| src/templates/ | Page shell and furniture, reader pages, editorial screens, cards/email/feed/icons, documentation site |
| src/assets/ | Self-hosted OFL font subsets, contributor portraits cut from the live site, the outlined wordmarks (mark-paths.json) |
| src/js/seko.js | The one reader script: theme, text size, progress, reading mode, copy, newsletter states, search |
| build.mjs | Writes the whole prototype to dist/ with relative links |
| tools/ | Font fetch/merge/subset, image fetch and crops, mark outlining, icon rasterising, the acceptance checker, a static server |
| canvas/ | The v2 design-canvas files as received, with their import paths updated to src/ |
| docs/ | Briefs, design notes, decision records (decisions/, MADR), the dated work log (log/); the built documentation site lives at dist/docs/ |
Build and view
npm run build # → dist/ (identical on every platform)
npm run icons # macOS only: regenerate the committed raster icons after the mark changes (ADR 0018)
npm run cards # render the missing or stale share cards (og:image, 1200 × 630 JPEG) with a local Chrome and commit them (ADR 0032); check fails until they are current
npm run deploy:preview # build, check, upload to seko.pages.dev with noindex (ADR 0019); CI runs the same script after every merge to main (ADR 0025)
npm run serve # http://localhost:4321/ — the prototype index is the root page
npm run check # budget, links, landmarks, alt text, logical properties, HTML validation (html-validate)
Start at dist/index.html: it maps every screen and state in the brief to a URL, in Sorani (RTL), English (LTR) and the German Tier 3 sample, and links the documentation (tokens, components, RTL rule sheet, binding sheet, microcopy, card spec, design notes).
Regenerating assets (network needed): npm run import takes the export again, runs the discovery pass and re-selects the prototype set with portraits; npm run fonts fetches the Google-served subsets and python3 tools/merge-fonts.py, python3 tools/subset-variable.py <dir with variable TTFs> [output.woff2 …] and python3 tools/tighten-arabic.py produce the shipped files, and python3 tools/plex-arabic.py the IBM Plex Sans Arabic files for the prototype index (fontTools, brotli and uharfbuzz via pip); python3 tools/clean-portraits.py re-cuts the portrait set from the originals (numpy, opencv-python and Pillow via pip); python3 tools/make-mark.py outlines the wordmarks.
Working rules
CLAUDE.md states the standards the repo follows and how work is recorded: every non-trivial decision is an ADR in docs/decisions/, every session appends to docs/log/, CHANGELOG.md follows Keep a Changelog, commits follow Conventional Commits, and npm run check must pass before a commit. CONTRIBUTING.md has the checklist; LICENSE.md the terms per part of the repo.
Conventions
- Sorani is the origin: every component is drawn in RTL first and the LTR edition is the same template with dir and the type stack changed. Layout CSS uses logical properties only (the checker fails on physical ones).
- No page depends on script to show its text. seko.js is the only script and it only adds behaviour; controls it powers are hidden in the markup so no dead control is shown.
- Section colour on labels, rules, progress bar and row hover only; brand blue on links and focus; gold on dossier labels.
- The language model is visible where it acts: translation notices in three variants, the Tier 3 line, corrections that say what they corrected, and proposal chips on the editorial screens. Never "AI" in reader-facing text.
- URLs follow structure §6: /{edition}/{section}/{slug}/, native-script slugs for Arabic-script editions, localised system segments from one routing table.
Status
The prototype runs on Seko's real content: 32 articles selected from the 1007 in the export, the real contributors with their portraits and bios, the real About and Contact pages. English and German versions are machine translations published with the notice until an editor post-edits them. See docs/design-notes.md and the decision records; D1–D13 remain with the editors.
Prototype build 2026-09-30 · 690 files · 9add70f on main · Icons: Octicons (MIT) · Arabic script on this page: IBM Plex Sans Arabic (OFL)